diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0bedf6b..ea61e7b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.contacts"
-    android:versionCode="10512"
-    android:versionName="1.5.12">
+    android:versionCode="20000"
+    android:versionName="2.0.0">
 
     <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="25" />
 
@@ -49,6 +49,8 @@
     <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
     <!-- Following used for Contact metadata syncing -->
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
+    <!-- Following used for getting the status of the contacts sync adapter -->
+    <uses-permission android:name="android.permission.READ_SYNC_STATS" />
 
     <uses-feature android:name="android.hardware.telephony" android:required="false"/>
 
diff --git a/TestCommon/src/com/android/contacts/common/test/FragmentTestActivity.java b/TestCommon/src/com/android/contacts/common/test/FragmentTestActivity.java
new file mode 100644
index 0000000..5ae2d95
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/FragmentTestActivity.java
@@ -0,0 +1,47 @@
+/*
+ * 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.contacts.common.test;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+
+/**
+ * An activity that is used for testing fragments.  A unit test starts this
+ * activity, adds a fragment and then tests the fragment.
+ */
+public class FragmentTestActivity extends Activity {
+
+    public final static int LAYOUT_ID = 1;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Normally fragment/activity onStart() methods will not be called when screen is locked.
+        // Use the following flags to ensure that activities can be show for testing.
+        final Window window = getWindow();
+        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
+                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+
+        final FrameLayout layout = new FrameLayout(this);
+        layout.setId(LAYOUT_ID);
+        setContentView(layout);
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/IntegrationTestUtils.java b/TestCommon/src/com/android/contacts/common/test/IntegrationTestUtils.java
new file mode 100644
index 0000000..5457128
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/IntegrationTestUtils.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.test;
+
+import static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP;
+import static android.os.PowerManager.FULL_WAKE_LOCK;
+import static android.os.PowerManager.ON_AFTER_RELEASE;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
+import android.os.PowerManager;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.google.common.base.Preconditions;
+
+import junit.framework.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.FutureTask;
+
+import javax.annotation.concurrent.GuardedBy;
+import javax.annotation.concurrent.ThreadSafe;
+
+/** Some utility methods for making integration testing smoother. */
+@ThreadSafe
+public class IntegrationTestUtils {
+    private static final String TAG = "IntegrationTestUtils";
+
+    private final Instrumentation mInstrumentation;
+    private final Object mLock = new Object();
+    @GuardedBy("mLock") private PowerManager.WakeLock mWakeLock;
+
+    public IntegrationTestUtils(Instrumentation instrumentation) {
+        mInstrumentation = instrumentation;
+    }
+
+    /**
+     * Find a view by a given resource id, from the given activity, and click it, iff it is
+     * enabled according to {@link View#isEnabled()}.
+     */
+    public void clickButton(final Activity activity, final int buttonResourceId) throws Throwable {
+        runOnUiThreadAndGetTheResult(new Callable<Void>() {
+            @Override
+            public Void call() throws Exception {
+                View view = activity.findViewById(buttonResourceId);
+                Assert.assertNotNull(view);
+                if (view.isEnabled()) {
+                    view.performClick();
+                }
+                return null;
+            }
+        });
+    }
+
+    /** Returns the result of running {@link TextView#getText()} on the ui thread. */
+    public CharSequence getText(final TextView view) throws Throwable {
+        return runOnUiThreadAndGetTheResult(new Callable<CharSequence>() {
+            @Override
+            public CharSequence call() {
+                return view.getText();
+            }
+        });
+    }
+
+    // TODO: Move this class and the appropriate documentation into a test library, having checked
+    // first to see if exactly this code already exists or not.
+    /**
+     * Execute a callable on the ui thread, returning its result synchronously.
+     * <p>
+     * Waits for an idle sync on the main thread (see {@link Instrumentation#waitForIdle(Runnable)})
+     * before executing this callable.
+     */
+    public <T> T runOnUiThreadAndGetTheResult(Callable<T> callable) throws Throwable {
+        FutureTask<T> future = new FutureTask<T>(callable);
+        mInstrumentation.waitForIdle(future);
+        try {
+            return future.get();
+        } catch (ExecutionException e) {
+            // Unwrap the cause of the exception and re-throw it.
+            throw e.getCause();
+        }
+    }
+
+    /**
+     * Wake up the screen, useful in tests that want or need the screen to be on.
+     * <p>
+     * This is usually called from setUp() for tests that require it.  After calling this method,
+     * {@link #releaseScreenWakeLock()} must be called, this is usually done from tearDown().
+     */
+    public void acquireScreenWakeLock(Context context) {
+        synchronized (mLock) {
+            Preconditions.checkState(mWakeLock == null, "mWakeLock was already held");
+            mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE))
+                    .newWakeLock(
+                            PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE | PowerManager.FULL_WAKE_LOCK, TAG);
+            mWakeLock.acquire();
+        }
+    }
+
+    /** Release the wake lock previously acquired with {@link #acquireScreenWakeLock(Context)}. */
+    public void releaseScreenWakeLock() {
+        synchronized (mLock) {
+            // We don't use Preconditions to force you to have acquired before release.
+            // This is because we don't want unnecessary exceptions in tearDown() since they'll
+            // typically mask the actual exception that happened during the test.
+            // The other reason is that this method is most likely to be called from tearDown(),
+            // which is invoked within a finally block, so it's not infrequently the case that
+            // the setUp() method fails before getting the lock, at which point we don't want
+            // to fail in tearDown().
+            if (mWakeLock != null) {
+                mWakeLock.release();
+                mWakeLock = null;
+            }
+        }
+    }
+
+    /**
+     * Gets all {@link TextView} objects whose {@link TextView#getText()} contains the given text as
+     * a substring.
+     */
+    public List<TextView> getTextViewsWithString(final Activity activity, final String text)
+            throws Throwable {
+        return getTextViewsWithString(getRootView(activity), text);
+    }
+
+    /**
+     * Gets all {@link TextView} objects whose {@link TextView#getText()} contains the given text as
+     * a substring for the given root view.
+     */
+    public List<TextView> getTextViewsWithString(final View rootView, final String text)
+            throws Throwable {
+        return runOnUiThreadAndGetTheResult(new Callable<List<TextView>>() {
+            @Override
+            public List<TextView> call() throws Exception {
+                List<TextView> matchingViews = new ArrayList<TextView>();
+                for (TextView textView : getAllViews(TextView.class, rootView)) {
+                    if (textView.getText().toString().contains(text)) {
+                        matchingViews.add(textView);
+                    }
+                }
+                return matchingViews;
+            }
+        });
+    }
+
+    /** Find the root view for a given activity. */
+    public static View getRootView(Activity activity) {
+        return activity.findViewById(android.R.id.content).getRootView();
+    }
+
+    /**
+     * Gets a list of all views of a given type, rooted at the given parent.
+     * <p>
+     * This method will recurse down through all {@link ViewGroup} instances looking for
+     * {@link View} instances of the supplied class type. Specifically it will use the
+     * {@link Class#isAssignableFrom(Class)} method as the test for which views to add to the list,
+     * so if you provide {@code View.class} as your type, you will get every view. The parent itself
+     * will be included also, should it be of the right type.
+     * <p>
+     * This call manipulates the ui, and as such should only be called from the application's main
+     * thread.
+     */
+    private static <T extends View> List<T> getAllViews(final Class<T> clazz, final View parent) {
+        List<T> results = new ArrayList<T>();
+        if (parent.getClass().equals(clazz)) {
+            results.add(clazz.cast(parent));
+        }
+        if (parent instanceof ViewGroup) {
+            ViewGroup viewGroup = (ViewGroup) parent;
+            for (int i = 0; i < viewGroup.getChildCount(); ++i) {
+                results.addAll(getAllViews(clazz, viewGroup.getChildAt(i)));
+            }
+        }
+        return results;
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/LaunchPerformanceBase.java b/TestCommon/src/com/android/contacts/common/test/LaunchPerformanceBase.java
new file mode 100644
index 0000000..a2ebde3
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/LaunchPerformanceBase.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+package com.android.contacts.common.test;
+
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.os.Bundle;
+
+
+/**
+ * Base class for all launch performance Instrumentation classes.
+ */
+public class LaunchPerformanceBase extends Instrumentation {
+
+    public static final String LOG_TAG = "Launch Performance";
+
+    protected Bundle mResults;
+    protected Intent mIntent;
+
+    public LaunchPerformanceBase() {
+        mResults = new Bundle();
+        mIntent = new Intent(Intent.ACTION_MAIN);
+        mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        setAutomaticPerformanceSnapshots();
+    }
+
+    /**
+     * Launches intent, and waits for idle before returning.
+     *
+     * @hide
+     */
+    protected void LaunchApp() {
+        startActivitySync(mIntent);
+        waitForIdleSync();
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockContext.java b/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockContext.java
new file mode 100644
index 0000000..c72fe3d
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockContext.java
@@ -0,0 +1,96 @@
+/*
+ * 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.contacts.common.test.mocks;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.provider.ContactsContract;
+import android.provider.Settings;
+import android.test.mock.MockContentResolver;
+
+/**
+ * A mock context for contacts unit tests. Forwards everything to
+ * a supplied context, except content resolver operations, which are sent
+ * to mock content providers.
+ */
+public class ContactsMockContext extends ContextWrapper {
+    private ContactsMockPackageManager mPackageManager;
+    private MockContentResolver mContentResolver;
+    private MockContentProvider mContactsProvider;
+    private MockContentProvider mSettingsProvider;
+    private Intent mIntentForStartActivity;
+
+    public ContactsMockContext(Context base) {
+        this(base, ContactsContract.AUTHORITY);
+    }
+
+    public ContactsMockContext(Context base, String authority) {
+        super(base);
+        mPackageManager = new ContactsMockPackageManager();
+        mContentResolver = new MockContentResolver();
+        mContactsProvider = new MockContentProvider();
+        mContentResolver.addProvider(authority, mContactsProvider);
+        mSettingsProvider = new MockContentProvider();
+        mContentResolver.addProvider(Settings.AUTHORITY, mSettingsProvider);
+    }
+
+    @Override
+    public ContentResolver getContentResolver() {
+        return mContentResolver;
+    }
+
+    public MockContentProvider getContactsProvider() {
+        return mContactsProvider;
+    }
+
+    public MockContentProvider getSettingsProvider() {
+        return mSettingsProvider;
+    }
+
+    @Override
+    public PackageManager getPackageManager() {
+        return mPackageManager;
+    }
+
+    @Override
+    public Context getApplicationContext() {
+        return this;
+    }
+
+    /**
+     * Instead of actually sending Intent, this method just remembers what Intent was supplied last.
+     * You can check the content via {@link #getIntentForStartActivity()} for verification.
+     */
+    @Override
+    public void startActivity(Intent intent) {
+        mIntentForStartActivity = intent;
+    }
+
+    public Intent getIntentForStartActivity() {
+        return mIntentForStartActivity;
+    }
+
+    public void verify() {
+        mContactsProvider.verify();
+        mSettingsProvider.verify();
+    }
+
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockPackageManager.java b/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockPackageManager.java
new file mode 100644
index 0000000..a1557ff
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockPackageManager.java
@@ -0,0 +1,45 @@
+/*
+ * 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.contacts.common.test.mocks;
+
+import android.content.ComponentName;
+import android.content.pm.ApplicationInfo;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.test.mock.MockPackageManager;
+
+/**
+ */
+public class ContactsMockPackageManager extends MockPackageManager {
+    public ContactsMockPackageManager() {
+    }
+
+    @Override
+    public Drawable getActivityLogo(ComponentName activityName) throws NameNotFoundException {
+        return new ColorDrawable();
+    }
+
+    @Override
+    public Drawable getActivityIcon(ComponentName activityName) {
+        return new ColorDrawable();
+    }
+
+    @Override
+    public Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo) {
+        // TODO: make programmable
+        return new ColorDrawable();
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/MockAccountTypeManager.java b/TestCommon/src/com/android/contacts/common/test/mocks/MockAccountTypeManager.java
new file mode 100644
index 0000000..b46c49d
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/mocks/MockAccountTypeManager.java
@@ -0,0 +1,93 @@
+/*
+ * 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.contacts.common.test.mocks;
+
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.BaseAccountType;
+import com.google.common.base.Objects;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A mock {@link AccountTypeManager} class.
+ */
+public class MockAccountTypeManager extends AccountTypeManager {
+
+    public AccountType[] mTypes;
+    public AccountWithDataSet[] mAccounts;
+
+    public MockAccountTypeManager(AccountType[] types, AccountWithDataSet[] accounts) {
+        this.mTypes = types;
+        this.mAccounts = accounts;
+    }
+
+    @Override
+    public AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet) {
+        // Add fallback accountType to mimic the behavior of AccountTypeManagerImpl
+        AccountType mFallbackAccountType = new BaseAccountType() {
+            @Override
+            public boolean areContactsWritable() {
+                return false;
+            }
+        };
+        mFallbackAccountType.accountType = "fallback";
+        for (AccountType type : mTypes) {
+            if (Objects.equal(accountTypeWithDataSet.accountType, type.accountType)
+                    && Objects.equal(accountTypeWithDataSet.dataSet, type.dataSet)) {
+                return type;
+            }
+        }
+        return mFallbackAccountType;
+    }
+
+    @Override
+    public List<AccountWithDataSet> getAccounts(boolean writableOnly) {
+        return Arrays.asList(mAccounts);
+    }
+
+    @Override
+    public void sortAccounts(AccountWithDataSet account) {}
+
+    @Override
+    public List<AccountWithDataSet> getGroupWritableAccounts() {
+        return Arrays.asList(mAccounts);
+    }
+
+    @Override
+    public Map<AccountTypeWithDataSet, AccountType> getUsableInvitableAccountTypes() {
+        return Maps.newHashMap(); // Always returns empty
+    }
+
+    @Override
+    public List<AccountType> getAccountTypes(boolean writableOnly) {
+        final List<AccountType> ret = Lists.newArrayList();
+        synchronized (this) {
+            for (AccountType type : mTypes) {
+                if (!writableOnly || type.areContactsWritable()) {
+                    ret.add(type);
+                }
+            }
+        }
+        return ret;
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java b/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java
new file mode 100644
index 0000000..db8f06f
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.test.mocks;
+
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.android.contacts.common.ContactPhotoManager;
+
+/**
+ * A photo preloader that always uses the "no contact" picture and never executes any real
+ * db queries
+ */
+public class MockContactPhotoManager extends ContactPhotoManager {
+    @Override
+    public void loadThumbnail(ImageView view, long photoId, boolean darkTheme, boolean isCircular,
+            DefaultImageRequest defaultImageRequest, DefaultImageProvider defaultProvider) {
+        defaultProvider.applyDefaultImage(view, -1, darkTheme, null);
+    }
+
+    @Override
+    public void loadPhoto(ImageView view, Uri photoUri, int requestedExtent, boolean darkTheme,
+            boolean isCircular, DefaultImageRequest defaultImageRequest,
+            DefaultImageProvider defaultProvider) {
+        defaultProvider.applyDefaultImage(view, requestedExtent, darkTheme, null);
+    }
+
+    @Override
+    public void removePhoto(ImageView view) {
+        view.setImageDrawable(null);
+    }
+
+    @Override
+    public void cancelPendingRequests(View fragmentRootView) {
+    }
+
+    @Override
+    public void pause() {
+    }
+
+    @Override
+    public void resume() {
+    }
+
+    @Override
+    public void refreshCache() {
+    }
+
+    @Override
+    public void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes) {
+    }
+
+    @Override
+    public void preloadPhotosInBackground() {
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/MockContentProvider.java b/TestCommon/src/com/android/contacts/common/test/mocks/MockContentProvider.java
new file mode 100644
index 0000000..335e8d2
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/mocks/MockContentProvider.java
@@ -0,0 +1,659 @@
+/*
+ * 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.contacts.common.test.mocks;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.support.annotation.Nullable;
+
+import junit.framework.Assert;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * A programmable mock content provider.
+ */
+public class MockContentProvider extends android.test.mock.MockContentProvider {
+    private static final String TAG = "MockContentProvider";
+
+    public static class Query {
+
+        private final Uri mUri;
+        private String[] mProjection;
+        private String[] mDefaultProjection;
+        private String mSelection;
+        private String[] mSelectionArgs;
+        private String mSortOrder;
+        private List<Object> mRows = new ArrayList<>();
+        private boolean mAnyProjection;
+        private boolean mAnySelection;
+        private boolean mAnySortOrder;
+        private boolean mAnyNumberOfTimes;
+
+        private boolean mExecuted;
+
+        public Query(Uri uri) {
+            mUri = uri;
+        }
+
+        @Override
+        public String toString() {
+            return queryToString(mUri, mProjection, mSelection, mSelectionArgs, mSortOrder);
+        }
+
+        public Query withProjection(String... projection) {
+            mProjection = projection;
+            return this;
+        }
+
+        public Query withDefaultProjection(String... projection) {
+            mDefaultProjection = projection;
+            return this;
+        }
+
+        public Query withAnyProjection() {
+            mAnyProjection = true;
+            return this;
+        }
+
+        public Query withSelection(String selection, String... selectionArgs) {
+            mSelection = selection;
+            mSelectionArgs = selectionArgs;
+            return this;
+        }
+
+        public Query withAnySelection() {
+            mAnySelection = true;
+            return this;
+        }
+
+        public Query withSortOrder(String sortOrder) {
+            mSortOrder = sortOrder;
+            return this;
+        }
+
+        public Query withAnySortOrder() {
+            mAnySortOrder = true;
+            return this;
+        }
+
+        public Query returnRow(ContentValues values) {
+            mRows.add(values);
+            return this;
+        }
+
+        public Query returnRow(Object... row) {
+            mRows.add(row);
+            return this;
+        }
+
+        public Query returnEmptyCursor() {
+            mRows.clear();
+            return this;
+        }
+
+        public Query anyNumberOfTimes() {
+            mAnyNumberOfTimes = true;
+            return this;
+        }
+
+        public boolean equals(Uri uri, String[] projection, String selection,
+                String[] selectionArgs, String sortOrder) {
+            if (!uri.equals(mUri)) {
+                return false;
+            }
+
+            if (!mAnyProjection && !Arrays.equals(projection, mProjection)) {
+                return false;
+            }
+
+            if (!mAnySelection && !Objects.equals(selection, mSelection)) {
+                return false;
+            }
+
+            if (!mAnySelection && !Arrays.equals(selectionArgs, mSelectionArgs)) {
+                return false;
+            }
+
+            if (!mAnySortOrder && !Objects.equals(sortOrder, mSortOrder)) {
+                return false;
+            }
+
+            return true;
+        }
+
+        public Cursor getResult(String[] projection) {
+            String[] columnNames;
+            if (mAnyProjection) {
+                columnNames = projection;
+            } else {
+                columnNames = mProjection != null ? mProjection : mDefaultProjection;
+            }
+
+            MatrixCursor cursor = new MatrixCursor(columnNames);
+            for (Object row : mRows) {
+                if (row instanceof Object[]) {
+                    cursor.addRow((Object[]) row);
+                } else {
+                    ContentValues values = (ContentValues) row;
+                    Object[] columns = new Object[projection.length];
+                    for (int i = 0; i < projection.length; i++) {
+                        columns[i] = values.get(projection[i]);
+                    }
+                    cursor.addRow(columns);
+                }
+            }
+            return cursor;
+        }
+    }
+
+    public static class TypeQuery {
+        private final Uri mUri;
+        private final String mType;
+
+        public TypeQuery(Uri uri, String type) {
+            mUri = uri;
+            mType = type;
+        }
+
+        public Uri getUri() {
+            return mUri;
+        }
+
+        public String getType() {
+            return mType;
+        }
+
+        @Override
+        public String toString() {
+            return mUri + " --> " + mType;
+        }
+
+        public boolean equals(Uri uri) {
+            return getUri().equals(uri);
+        }
+    }
+
+    public static class Insert {
+        private final Uri mUri;
+        private final ContentValues mContentValues;
+        private final Uri mResultUri;
+        private boolean mAnyNumberOfTimes;
+        private boolean mIsExecuted;
+
+        /**
+         * Creates a new Insert to expect.
+         *
+         * @param uri the uri of the insertion request.
+         * @param contentValues the ContentValues to insert.
+         * @param resultUri the {@link Uri} for the newly inserted item.
+         * @throws NullPointerException if any parameter is {@code null}.
+         */
+        public Insert(Uri uri, ContentValues contentValues, Uri resultUri) {
+            mUri = Preconditions.checkNotNull(uri);
+            mContentValues = Preconditions.checkNotNull(contentValues);
+            mResultUri = Preconditions.checkNotNull(resultUri);
+        }
+
+        /**
+         * Causes this insert expectation to be useable for mutliple calls to insert, rather than
+         * just one.
+         *
+         * @return this
+         */
+        public Insert anyNumberOfTimes() {
+            mAnyNumberOfTimes = true;
+            return this;
+        }
+
+        private boolean equals(Uri uri, ContentValues contentValues) {
+            return mUri.equals(uri) && mContentValues.equals(contentValues);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (o == null || getClass() != o.getClass()) {
+                return false;
+            }
+            Insert insert = (Insert) o;
+            return mAnyNumberOfTimes == insert.mAnyNumberOfTimes &&
+                    mIsExecuted == insert.mIsExecuted &&
+                    Objects.equals(mUri, insert.mUri) &&
+                    Objects.equals(mContentValues, insert.mContentValues) &&
+                    Objects.equals(mResultUri, insert.mResultUri);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mUri, mContentValues, mResultUri, mAnyNumberOfTimes, mIsExecuted);
+        }
+
+        @Override
+        public String toString() {
+            return "Insert{" +
+                    "mUri=" + mUri +
+                    ", mContentValues=" + mContentValues +
+                    ", mResultUri=" + mResultUri +
+                    ", mAnyNumberOfTimes=" + mAnyNumberOfTimes +
+                    ", mIsExecuted=" + mIsExecuted +
+                    '}';
+        }
+    }
+
+    public static class Delete {
+        private final Uri mUri;
+
+        private boolean mAnyNumberOfTimes;
+        private boolean mAnySelection;
+        @Nullable private String mSelection;
+        @Nullable private String[] mSelectionArgs;
+        private boolean mIsExecuted;
+        private int mRowsAffected;
+
+        /**
+         * Creates a new Delete to expect.
+         * @param uri the uri of the delete request.
+         * @throws NullPointerException if uri is {@code null}.
+         */
+        public Delete(Uri uri) {
+            mUri = Preconditions.checkNotNull(uri);
+        }
+
+        /**
+         * Sets the given information as expected selection arguments.
+         *
+         * @param selection The selection to expect.
+         * @param selectionArgs The selection args to expect.
+         * @return this.
+         */
+        public Delete withSelection(String selection, @Nullable String[] selectionArgs) {
+            mSelection = Preconditions.checkNotNull(selection);
+            mSelectionArgs = selectionArgs;
+            mAnySelection = false;
+            return this;
+        }
+
+        /**
+         * Sets this delete to expect any selection arguments.
+         *
+         * @return this.
+         */
+        public Delete withAnySelection() {
+            mAnySelection = true;
+            return this;
+        }
+
+        /**
+         * Sets this delete to return the given number of rows affected.
+         *
+         * @param rowsAffected The value to return when this expected delete is executed.
+         * @return this.
+         */
+        public Delete returnRowsAffected(int rowsAffected) {
+            mRowsAffected = rowsAffected;
+            return this;
+        }
+
+        /**
+         * Causes this delete expectation to be useable for multiple calls to delete, rather than
+         * just one.
+         *
+         * @return this.
+         */
+        public Delete anyNumberOfTimes() {
+            mAnyNumberOfTimes = true;
+            return this;
+        }
+
+        private boolean equals(Uri uri, String selection, String[] selectionArgs) {
+            return mUri.equals(uri) && Objects.equals(mSelection, selection)
+                    && Arrays.equals(mSelectionArgs, selectionArgs);
+        }
+    }
+
+    public static class Update {
+        private final Uri mUri;
+        private final ContentValues mContentValues;
+        @Nullable private String mSelection;
+        @Nullable private String[] mSelectionArgs;
+        private boolean mAnyNumberOfTimes;
+        private boolean mIsExecuted;
+        private int mRowsAffected;
+
+        /**
+         * Creates a new Update to expect.
+         *
+         * @param uri the uri of the update request.
+         * @param contentValues the ContentValues to update.
+         *
+         * @throws NullPointerException if any parameter is {@code null}.
+         */
+        public Update(Uri uri,
+                      ContentValues contentValues,
+                      @Nullable String selection,
+                      @Nullable String[] selectionArgs) {
+            mUri = Preconditions.checkNotNull(uri);
+            mContentValues = Preconditions.checkNotNull(contentValues);
+            mSelection = selection;
+            mSelectionArgs = selectionArgs;
+        }
+
+        /**
+         * Causes this update expectation to be useable for mutliple calls to update, rather than
+         * just one.
+         *
+         * @return this
+         */
+        public Update anyNumberOfTimes() {
+            mAnyNumberOfTimes = true;
+            return this;
+        }
+
+        /**
+         * Sets this update to return the given number of rows affected.
+         *
+         * @param rowsAffected The value to return when this expected update is executed.
+         * @return this.
+         */
+        public Update returnRowsAffected(int rowsAffected) {
+            mRowsAffected = rowsAffected;
+            return this;
+        }
+
+        private boolean equals(Uri uri,
+                               ContentValues contentValues,
+                               @Nullable String selection,
+                               @Nullable String[] selectionArgs) {
+            return mUri.equals(uri) && mContentValues.equals(contentValues) &&
+                    Objects.equals(mSelection, selection) &&
+                    Objects.equals(mSelectionArgs, selectionArgs);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (o == null || getClass() != o.getClass()) {
+                return false;
+            }
+            Update update = (Update) o;
+            return mAnyNumberOfTimes == update.mAnyNumberOfTimes &&
+                    mIsExecuted == update.mIsExecuted &&
+                    Objects.equals(mUri, update.mUri) &&
+                    Objects.equals(mContentValues, update.mContentValues) &&
+                    Objects.equals(mSelection, update.mSelection) &&
+                    Objects.equals(mSelectionArgs, update.mSelectionArgs);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mUri, mContentValues, mAnyNumberOfTimes, mIsExecuted, mSelection,
+                    mSelectionArgs);
+        }
+
+        @Override
+        public String toString() {
+            return "Update{" +
+                    "mUri=" + mUri +
+                    ", mContentValues=" + mContentValues +
+                    ", mAnyNumberOfTimes=" + mAnyNumberOfTimes +
+                    ", mIsExecuted=" + mIsExecuted +
+                    ", mSelection=" + mSelection +
+                    ", mSelectionArgs=" + mSelectionArgs +
+                    '}';
+        }
+    }
+
+    private List<Query> mExpectedQueries = new ArrayList<>();
+    private Map<Uri, String> mExpectedTypeQueries = Maps.newHashMap();
+    private List<Insert> mExpectedInserts = new ArrayList<>();
+    private List<Delete> mExpectedDeletes = new ArrayList<>();
+    private List<Update> mExpectedUpdates = new ArrayList<>();
+
+    @Override
+    public boolean onCreate() {
+        return true;
+    }
+
+    public Query expectQuery(Uri contentUri) {
+        Query query = new Query(contentUri);
+        mExpectedQueries.add(query);
+        return query;
+    }
+
+    public void expectTypeQuery(Uri uri, String type) {
+        mExpectedTypeQueries.put(uri, type);
+    }
+
+    public void expectInsert(Uri contentUri, ContentValues contentValues, Uri resultUri) {
+        mExpectedInserts.add(new Insert(contentUri, contentValues, resultUri));
+    }
+
+    public Update expectUpdate(Uri contentUri,
+                               ContentValues contentValues,
+                               @Nullable String selection,
+                               @Nullable String[] selectionArgs) {
+        Update update = new Update(contentUri, contentValues, selection, selectionArgs);
+        mExpectedUpdates.add(update);
+        return update;
+    }
+
+    public Delete expectDelete(Uri contentUri) {
+        Delete delete = new Delete(contentUri);
+        mExpectedDeletes.add(delete);
+        return delete;
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+            String sortOrder) {
+        if (mExpectedQueries.isEmpty()) {
+            Assert.fail("Unexpected query: Actual:"
+                    + queryToString(uri, projection, selection, selectionArgs, sortOrder));
+        }
+
+        for (Iterator<Query> iterator = mExpectedQueries.iterator(); iterator.hasNext();) {
+            Query query = iterator.next();
+            if (query.equals(uri, projection, selection, selectionArgs, sortOrder)) {
+                query.mExecuted = true;
+                if (!query.mAnyNumberOfTimes) {
+                    iterator.remove();
+                }
+                return query.getResult(projection);
+            }
+        }
+
+        Assert.fail("Incorrect query. Expected one of: " + mExpectedQueries + ". Actual: " +
+                queryToString(uri, projection, selection, selectionArgs, sortOrder));
+        return null;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        if (mExpectedTypeQueries.isEmpty()) {
+            Assert.fail("Unexpected getType query: " + uri);
+        }
+
+        String mimeType = mExpectedTypeQueries.get(uri);
+        if (mimeType != null) {
+            return mimeType;
+        }
+
+        Assert.fail("Unknown mime type for: " + uri);
+        return null;
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        if (mExpectedInserts.isEmpty()) {
+            Assert.fail("Unexpected insert. Actual: " + insertToString(uri, values));
+        }
+        for (Iterator<Insert> iterator = mExpectedInserts.iterator(); iterator.hasNext(); ) {
+            Insert insert = iterator.next();
+            if (insert.equals(uri, values)) {
+                insert.mIsExecuted = true;
+                if (!insert.mAnyNumberOfTimes) {
+                    iterator.remove();
+                }
+                return insert.mResultUri;
+            }
+        }
+
+        Assert.fail("Incorrect insert. Expected one of: " + mExpectedInserts + ". Actual: "
+                + insertToString(uri, values));
+        return null;
+    }
+
+    private String insertToString(Uri uri, ContentValues contentValues) {
+        return "Insert { uri=" + uri + ", contentValues=" + contentValues + '}';
+    }
+
+    @Override
+    public int update(Uri uri,
+                      ContentValues values,
+                      @Nullable String selection,
+                      @Nullable String[] selectionArgs) {
+        if (mExpectedUpdates.isEmpty()) {
+            Assert.fail("Unexpected update. Actual: "
+                    + updateToString(uri, values, selection, selectionArgs));
+        }
+        for (Iterator<Update> iterator = mExpectedUpdates.iterator(); iterator.hasNext(); ) {
+            Update update = iterator.next();
+            if (update.equals(uri, values, selection, selectionArgs)) {
+                update.mIsExecuted = true;
+                if (!update.mAnyNumberOfTimes) {
+                    iterator.remove();
+                }
+                return update.mRowsAffected;
+            }
+        }
+
+        Assert.fail("Incorrect update. Expected one of: " + mExpectedUpdates + ". Actual: "
+                + updateToString(uri, values, selection, selectionArgs));
+        return - 1;
+    }
+
+    private String updateToString(Uri uri,
+                                  ContentValues contentValues,
+                                  @Nullable String selection,
+                                  @Nullable String[] selectionArgs) {
+        return "Update { uri=" + uri + ", contentValues=" + contentValues + ", selection=" +
+                selection + ", selectionArgs" + Arrays.toString(selectionArgs) + '}';
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        if (mExpectedDeletes.isEmpty()) {
+            Assert.fail("Unexpected delete. Actual: " + deleteToString(uri, selection,
+                    selectionArgs));
+        }
+        for (Iterator<Delete> iterator = mExpectedDeletes.iterator(); iterator.hasNext(); ) {
+            Delete delete = iterator.next();
+            if (delete.equals(uri, selection, selectionArgs)) {
+                delete.mIsExecuted = true;
+                if (!delete.mAnyNumberOfTimes) {
+                    iterator.remove();
+                }
+                return delete.mRowsAffected;
+            }
+        }
+        Assert.fail("Incorrect delete. Expected one of: " + mExpectedDeletes + ". Actual: "
+                + deleteToString(uri, selection, selectionArgs));
+        return -1;
+    }
+
+    private String deleteToString(Uri uri, String selection, String[] selectionArgs) {
+        return "Delete { uri=" + uri + ", selection=" + selection + ", selectionArgs"
+                + Arrays.toString(selectionArgs) + '}';
+    }
+
+    private static String queryToString(Uri uri, String[] projection, String selection,
+            String[] selectionArgs, String sortOrder) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(uri).append(" ");
+        if (projection != null) {
+            sb.append(Arrays.toString(projection));
+        } else {
+            sb.append("[]");
+        }
+        if (selection != null) {
+            sb.append(" selection: '").append(selection).append("'");
+            if (selectionArgs != null) {
+                sb.append(Arrays.toString(selectionArgs));
+            } else {
+                sb.append("[]");
+            }
+        }
+        if (sortOrder != null) {
+            sb.append(" sort: '").append(sortOrder).append("'");
+        }
+        return sb.toString();
+    }
+
+    public void verify() {
+        verifyQueries();
+        verifyInserts();
+        verifyDeletes();
+    }
+
+    private void verifyQueries() {
+        List<Query> missedQueries = new ArrayList<>();
+        for (Query query : mExpectedQueries) {
+            if (!query.mExecuted) {
+                missedQueries.add(query);
+            }
+        }
+        Assert.assertTrue("Not all expected queries have been called: " + missedQueries,
+                missedQueries.isEmpty());
+    }
+
+    private void verifyInserts() {
+        List<Insert> missedInserts = new ArrayList<>();
+        for (Insert insert : mExpectedInserts) {
+            if (!insert.mIsExecuted) {
+                missedInserts.add(insert);
+            }
+        }
+        Assert.assertTrue("Not all expected inserts have been called: " + missedInserts,
+                missedInserts.isEmpty());
+    }
+
+    private void verifyDeletes() {
+        List<Delete> missedDeletes = new ArrayList<>();
+        for (Delete delete : mExpectedDeletes) {
+            if (!delete.mIsExecuted) {
+                missedDeletes.add(delete);
+            }
+        }
+        Assert.assertTrue("Not all expected deletes have been called: " + missedDeletes,
+                missedDeletes.isEmpty());
+    }
+}
diff --git a/TestCommon/src/com/android/contacts/common/test/mocks/MockSharedPreferences.java b/TestCommon/src/com/android/contacts/common/test/mocks/MockSharedPreferences.java
new file mode 100644
index 0000000..13d035e
--- /dev/null
+++ b/TestCommon/src/com/android/contacts/common/test/mocks/MockSharedPreferences.java
@@ -0,0 +1,149 @@
+/*
+ * 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.contacts.common.test.mocks;
+
+import android.content.SharedPreferences;
+
+import com.google.common.collect.Maps;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+
+/**
+ * A programmable mock content provider.
+ */
+public class MockSharedPreferences implements SharedPreferences, SharedPreferences.Editor {
+
+    private HashMap<String, Object> mValues = Maps.newHashMap();
+    private HashMap<String, Object> mTempValues = Maps.newHashMap();
+
+    public Editor edit() {
+        return this;
+    }
+
+    public boolean contains(String key) {
+        return mValues.containsKey(key);
+    }
+
+    public Map<String, ?> getAll() {
+        return new HashMap<String, Object>(mValues);
+    }
+
+    public boolean getBoolean(String key, boolean defValue) {
+        if (mValues.containsKey(key)) {
+            return ((Boolean)mValues.get(key)).booleanValue();
+        }
+        return defValue;
+    }
+
+    public float getFloat(String key, float defValue) {
+        if (mValues.containsKey(key)) {
+            return ((Float)mValues.get(key)).floatValue();
+        }
+        return defValue;
+    }
+
+    public int getInt(String key, int defValue) {
+        if (mValues.containsKey(key)) {
+            return ((Integer)mValues.get(key)).intValue();
+        }
+        return defValue;
+    }
+
+    public long getLong(String key, long defValue) {
+        if (mValues.containsKey(key)) {
+            return ((Long)mValues.get(key)).longValue();
+        }
+        return defValue;
+    }
+
+    public String getString(String key, String defValue) {
+        if (mValues.containsKey(key))
+            return (String)mValues.get(key);
+        return defValue;
+    }
+
+    @SuppressWarnings("unchecked")
+    public Set<String> getStringSet(String key, Set<String> defValues) {
+        if (mValues.containsKey(key)) {
+            return (Set<String>) mValues.get(key);
+        }
+        return defValues;
+    }
+
+    public void registerOnSharedPreferenceChangeListener(
+            OnSharedPreferenceChangeListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void unregisterOnSharedPreferenceChangeListener(
+            OnSharedPreferenceChangeListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Editor putBoolean(String key, boolean value) {
+        mTempValues.put(key, Boolean.valueOf(value));
+        return this;
+    }
+
+    public Editor putFloat(String key, float value) {
+        mTempValues.put(key, value);
+        return this;
+    }
+
+    public Editor putInt(String key, int value) {
+        mTempValues.put(key, value);
+        return this;
+    }
+
+    public Editor putLong(String key, long value) {
+        mTempValues.put(key, value);
+        return this;
+    }
+
+    public Editor putString(String key, String value) {
+        mTempValues.put(key, value);
+        return this;
+    }
+
+    public Editor putStringSet(String key, Set<String> values) {
+        mTempValues.put(key, values);
+        return this;
+    }
+
+    public Editor remove(String key) {
+        mTempValues.remove(key);
+        return this;
+    }
+
+    public Editor clear() {
+        mTempValues.clear();
+        return this;
+    }
+
+    @SuppressWarnings("unchecked")
+    public boolean commit() {
+        mValues = (HashMap<String, Object>)mTempValues.clone();
+        return true;
+    }
+
+    public void apply() {
+        commit();
+    }
+}
diff --git a/assets/licenses.html b/assets/licenses.html
new file mode 100644
index 0000000..c24ed63
--- /dev/null
+++ b/assets/licenses.html
@@ -0,0 +1,247 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta name="viewport" content="width=device-width">
+    <style> body { font-family: sans-serif; } pre { background-color: #eeeeee; padding: 1em; white-space: pre-wrap; word-wrap: break-word; } </style>
+</head>
+<body>
+
+<h3>Notices for: guava, libphonenumber, and libprotobuf-java-nano</h3>
+<pre>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre>
+
+<h3>Notices for JSR305</h3>
+<pre>
+Copyright (c) 2007-2009, JSR305 expert group
+All rights reserved.
+
+http://www.opensource.org/licenses/bsd-license.php
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of the JSR305 expert group nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+</pre>
+
+</body>
+</html>
diff --git a/icons/res/mipmap-hdpi/ic_contacts_launcher.png b/icons/res/mipmap-hdpi/ic_contacts_launcher.png
new file mode 100644
index 0000000..86380d1
--- /dev/null
+++ b/icons/res/mipmap-hdpi/ic_contacts_launcher.png
Binary files differ
diff --git a/icons/res/mipmap-hdpi/ic_contacts_launcher_square.png b/icons/res/mipmap-hdpi/ic_contacts_launcher_square.png
new file mode 100644
index 0000000..64eff00
--- /dev/null
+++ b/icons/res/mipmap-hdpi/ic_contacts_launcher_square.png
Binary files differ
diff --git a/icons/res/mipmap-mdpi/ic_contacts_launcher.png b/icons/res/mipmap-mdpi/ic_contacts_launcher.png
new file mode 100644
index 0000000..85132c5
--- /dev/null
+++ b/icons/res/mipmap-mdpi/ic_contacts_launcher.png
Binary files differ
diff --git a/icons/res/mipmap-mdpi/ic_contacts_launcher_square.png b/icons/res/mipmap-mdpi/ic_contacts_launcher_square.png
new file mode 100644
index 0000000..b4ee821
--- /dev/null
+++ b/icons/res/mipmap-mdpi/ic_contacts_launcher_square.png
Binary files differ
diff --git a/icons/res/mipmap-xhdpi/ic_contacts_launcher.png b/icons/res/mipmap-xhdpi/ic_contacts_launcher.png
new file mode 100644
index 0000000..c198749
--- /dev/null
+++ b/icons/res/mipmap-xhdpi/ic_contacts_launcher.png
Binary files differ
diff --git a/icons/res/mipmap-xhdpi/ic_contacts_launcher_square.png b/icons/res/mipmap-xhdpi/ic_contacts_launcher_square.png
new file mode 100644
index 0000000..6feeadf
--- /dev/null
+++ b/icons/res/mipmap-xhdpi/ic_contacts_launcher_square.png
Binary files differ
diff --git a/icons/res/mipmap-xxhdpi/ic_contacts_launcher.png b/icons/res/mipmap-xxhdpi/ic_contacts_launcher.png
new file mode 100644
index 0000000..4fa10a6
--- /dev/null
+++ b/icons/res/mipmap-xxhdpi/ic_contacts_launcher.png
Binary files differ
diff --git a/icons/res/mipmap-xxhdpi/ic_contacts_launcher_square.png b/icons/res/mipmap-xxhdpi/ic_contacts_launcher_square.png
new file mode 100644
index 0000000..01a3fde
--- /dev/null
+++ b/icons/res/mipmap-xxhdpi/ic_contacts_launcher_square.png
Binary files differ
diff --git a/icons/res/mipmap-xxxhdpi/ic_contacts_launcher.png b/icons/res/mipmap-xxxhdpi/ic_contacts_launcher.png
new file mode 100644
index 0000000..10bda63
--- /dev/null
+++ b/icons/res/mipmap-xxxhdpi/ic_contacts_launcher.png
Binary files differ
diff --git a/icons/res/mipmap-xxxhdpi/ic_contacts_launcher_square.png b/icons/res/mipmap-xxxhdpi/ic_contacts_launcher_square.png
new file mode 100644
index 0000000..328e067
--- /dev/null
+++ b/icons/res/mipmap-xxxhdpi/ic_contacts_launcher_square.png
Binary files differ
diff --git a/proguard.flags b/proguard.flags
index baff4b6..7b9bc89 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -15,6 +15,7 @@
 # For test:
 -keep class com.android.contacts.commonbind.analytics.AnalyticsUtil { *;}
 -keep class com.android.contacts.interactions.** { *;}
+-keep class com.android.contacts.util.SyncUtil { *;}
 -keep class com.google.common.base.Objects { *;}
 -keep class com.google.common.base.Preconditions { *;}
 -keep class com.google.common.collect.Lists { *;}
diff --git a/res-common/color/popup_menu_color.xml b/res-common/color/popup_menu_color.xml
new file mode 100644
index 0000000..15588c2
--- /dev/null
+++ b/res-common/color/popup_menu_color.xml
@@ -0,0 +1,20 @@
+<?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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:alpha="0.5" android:color="#ff000000"/>
+    <item android:color="#ff000000"/>
+</selector>
\ No newline at end of file
diff --git a/res-common/color/tab_text_color.xml b/res-common/color/tab_text_color.xml
new file mode 100644
index 0000000..5ef1fe3
--- /dev/null
+++ b/res-common/color/tab_text_color.xml
@@ -0,0 +1,21 @@
+<?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
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/actionbar_text_color" android:state_selected="true"/>
+    <item android:color="@color/actionbar_unselected_text_color" />
+</selector>
\ No newline at end of file
diff --git a/res-common/drawable-hdpi/ic_ab_search.png b/res-common/drawable-hdpi/ic_ab_search.png
new file mode 100644
index 0000000..d86b219
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_ab_search.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_arrow_back_24dp.png b/res-common/drawable-hdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..ddbb2c4
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_business_white_120dp.png b/res-common/drawable-hdpi/ic_business_white_120dp.png
new file mode 100644
index 0000000..d5942dc
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_business_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_call_24dp.png b/res-common/drawable-hdpi/ic_call_24dp.png
new file mode 100644
index 0000000..4dc5065
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_call_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_call_note_white_24dp.png b/res-common/drawable-hdpi/ic_call_note_white_24dp.png
new file mode 100644
index 0000000..503e58e
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_call_note_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_call_voicemail_holo_dark.png b/res-common/drawable-hdpi/ic_call_voicemail_holo_dark.png
new file mode 100644
index 0000000..6d64a36
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_call_voicemail_holo_dark.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_close_dk.png b/res-common/drawable-hdpi/ic_close_dk.png
new file mode 100644
index 0000000..9695529
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_close_dk.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_create_24dp.png b/res-common/drawable-hdpi/ic_create_24dp.png
new file mode 100644
index 0000000..540ab4d
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_create_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_group_white_24dp.png b/res-common/drawable-hdpi/ic_group_white_24dp.png
new file mode 100644
index 0000000..017e4bb
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_group_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_history_white_drawable_24dp.png b/res-common/drawable-hdpi/ic_history_white_drawable_24dp.png
new file mode 100644
index 0000000..703d30b
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_history_white_drawable_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_info_outline_24dp.png b/res-common/drawable-hdpi/ic_info_outline_24dp.png
new file mode 100644
index 0000000..c7b1113
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_info_outline_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_menu_remove_field_holo_light.png b/res-common/drawable-hdpi/ic_menu_remove_field_holo_light.png
new file mode 100644
index 0000000..03fd2fb
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_menu_remove_field_holo_light.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_message_24dp.png b/res-common/drawable-hdpi/ic_message_24dp.png
new file mode 100644
index 0000000..57177b7
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_message_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_person_24dp.png b/res-common/drawable-hdpi/ic_person_24dp.png
new file mode 100644
index 0000000..56708b0
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_person_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_person_add_24dp.png b/res-common/drawable-hdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..10ae5a7
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_person_avatar.png b/res-common/drawable-hdpi/ic_person_avatar.png
new file mode 100644
index 0000000..2da477e
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_person_avatar.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_person_white_120dp.png b/res-common/drawable-hdpi/ic_person_white_120dp.png
new file mode 100644
index 0000000..69e6f98
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_person_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_scroll_handle.png b/res-common/drawable-hdpi/ic_scroll_handle.png
new file mode 100644
index 0000000..3aa29b8
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_scroll_handle.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_videocam.png b/res-common/drawable-hdpi/ic_videocam.png
new file mode 100644
index 0000000..97905c9
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_videocam.png
Binary files differ
diff --git a/res-common/drawable-hdpi/ic_voicemail_avatar.png b/res-common/drawable-hdpi/ic_voicemail_avatar.png
new file mode 100644
index 0000000..2fb7826
--- /dev/null
+++ b/res-common/drawable-hdpi/ic_voicemail_avatar.png
Binary files differ
diff --git a/res-common/drawable-hdpi/list_activated_holo.9.png b/res-common/drawable-hdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..4ea7afa
--- /dev/null
+++ b/res-common/drawable-hdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-hdpi/list_background_holo.9.png b/res-common/drawable-hdpi/list_background_holo.9.png
new file mode 100644
index 0000000..cddf9be
--- /dev/null
+++ b/res-common/drawable-hdpi/list_background_holo.9.png
Binary files differ
diff --git a/res-common/drawable-hdpi/list_focused_holo.9.png b/res-common/drawable-hdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..86578be
--- /dev/null
+++ b/res-common/drawable-hdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-hdpi/list_longpressed_holo_light.9.png b/res-common/drawable-hdpi/list_longpressed_holo_light.9.png
new file mode 100644
index 0000000..e9afcc9
--- /dev/null
+++ b/res-common/drawable-hdpi/list_longpressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-hdpi/list_pressed_holo_light.9.png b/res-common/drawable-hdpi/list_pressed_holo_light.9.png
new file mode 100644
index 0000000..2054530
--- /dev/null
+++ b/res-common/drawable-hdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-hdpi/list_title_holo.9.png b/res-common/drawable-hdpi/list_title_holo.9.png
new file mode 100644
index 0000000..ae93717
--- /dev/null
+++ b/res-common/drawable-hdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-hdpi/unknown_source.png b/res-common/drawable-hdpi/unknown_source.png
new file mode 100644
index 0000000..0a8f37d
--- /dev/null
+++ b/res-common/drawable-hdpi/unknown_source.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-hdpi/list_background_holo.9.png b/res-common/drawable-ldrtl-hdpi/list_background_holo.9.png
new file mode 100644
index 0000000..0d80482
--- /dev/null
+++ b/res-common/drawable-ldrtl-hdpi/list_background_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-hdpi/list_focused_holo.9.png b/res-common/drawable-ldrtl-hdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..4139942
--- /dev/null
+++ b/res-common/drawable-ldrtl-hdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-hdpi/list_title_holo.9.png b/res-common/drawable-ldrtl-hdpi/list_title_holo.9.png
new file mode 100644
index 0000000..5ec4c96
--- /dev/null
+++ b/res-common/drawable-ldrtl-hdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-mdpi/list_background_holo.9.png b/res-common/drawable-ldrtl-mdpi/list_background_holo.9.png
new file mode 100644
index 0000000..d86d611
--- /dev/null
+++ b/res-common/drawable-ldrtl-mdpi/list_background_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-mdpi/list_focused_holo.9.png b/res-common/drawable-ldrtl-mdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..4139942
--- /dev/null
+++ b/res-common/drawable-ldrtl-mdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-mdpi/list_title_holo.9.png b/res-common/drawable-ldrtl-mdpi/list_title_holo.9.png
new file mode 100644
index 0000000..013d5e7
--- /dev/null
+++ b/res-common/drawable-ldrtl-mdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png b/res-common/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..947f03c
--- /dev/null
+++ b/res-common/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png b/res-common/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..6d09d72
--- /dev/null
+++ b/res-common/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png b/res-common/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..63c7456
--- /dev/null
+++ b/res-common/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-xhdpi/list_background_holo.9.png b/res-common/drawable-ldrtl-xhdpi/list_background_holo.9.png
new file mode 100644
index 0000000..f709f2c
--- /dev/null
+++ b/res-common/drawable-ldrtl-xhdpi/list_background_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-xhdpi/list_focused_holo.9.png b/res-common/drawable-ldrtl-xhdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..4139942
--- /dev/null
+++ b/res-common/drawable-ldrtl-xhdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-ldrtl-xhdpi/list_title_holo.9.png b/res-common/drawable-ldrtl-xhdpi/list_title_holo.9.png
new file mode 100644
index 0000000..cb801ac
--- /dev/null
+++ b/res-common/drawable-ldrtl-xhdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_ab_search.png b/res-common/drawable-mdpi/ic_ab_search.png
new file mode 100644
index 0000000..2b23b1e
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_ab_search.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_arrow_back_24dp.png b/res-common/drawable-mdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..1a21fb4
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_business_white_120dp.png b/res-common/drawable-mdpi/ic_business_white_120dp.png
new file mode 100644
index 0000000..3dddca5
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_business_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_call_24dp.png b/res-common/drawable-mdpi/ic_call_24dp.png
new file mode 100644
index 0000000..77f9de5
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_call_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_call_note_white_24dp.png b/res-common/drawable-mdpi/ic_call_note_white_24dp.png
new file mode 100644
index 0000000..9d359db
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_call_note_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_call_voicemail_holo_dark.png b/res-common/drawable-mdpi/ic_call_voicemail_holo_dark.png
new file mode 100644
index 0000000..bf6d006
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_call_voicemail_holo_dark.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_close_dk.png b/res-common/drawable-mdpi/ic_close_dk.png
new file mode 100644
index 0000000..590a728
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_close_dk.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_create_24dp.png b/res-common/drawable-mdpi/ic_create_24dp.png
new file mode 100644
index 0000000..8a2df39
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_create_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_group_white_24dp.png b/res-common/drawable-mdpi/ic_group_white_24dp.png
new file mode 100644
index 0000000..ad268bf
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_group_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_history_white_drawable_24dp.png b/res-common/drawable-mdpi/ic_history_white_drawable_24dp.png
new file mode 100644
index 0000000..b3000d3
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_history_white_drawable_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_info_outline_24dp.png b/res-common/drawable-mdpi/ic_info_outline_24dp.png
new file mode 100644
index 0000000..353e064
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_info_outline_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_menu_remove_field_holo_light.png b/res-common/drawable-mdpi/ic_menu_remove_field_holo_light.png
new file mode 100644
index 0000000..8c44e70
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_menu_remove_field_holo_light.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_menu_star_holo_light.png b/res-common/drawable-mdpi/ic_menu_star_holo_light.png
new file mode 100644
index 0000000..8263b27
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_menu_star_holo_light.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_message_24dp.png b/res-common/drawable-mdpi/ic_message_24dp.png
new file mode 100644
index 0000000..3072b75
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_message_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_person_24dp.png b/res-common/drawable-mdpi/ic_person_24dp.png
new file mode 100644
index 0000000..f0b1c72
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_person_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_person_add_24dp.png b/res-common/drawable-mdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..38e0a28
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_person_avatar.png b/res-common/drawable-mdpi/ic_person_avatar.png
new file mode 100644
index 0000000..31a40fb
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_person_avatar.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_person_white_120dp.png b/res-common/drawable-mdpi/ic_person_white_120dp.png
new file mode 100644
index 0000000..397d933
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_person_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_scroll_handle.png b/res-common/drawable-mdpi/ic_scroll_handle.png
new file mode 100644
index 0000000..af75db4
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_scroll_handle.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_videocam.png b/res-common/drawable-mdpi/ic_videocam.png
new file mode 100644
index 0000000..dc9655b
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_videocam.png
Binary files differ
diff --git a/res-common/drawable-mdpi/ic_voicemail_avatar.png b/res-common/drawable-mdpi/ic_voicemail_avatar.png
new file mode 100644
index 0000000..4005f24
--- /dev/null
+++ b/res-common/drawable-mdpi/ic_voicemail_avatar.png
Binary files differ
diff --git a/res-common/drawable-mdpi/list_activated_holo.9.png b/res-common/drawable-mdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..3bf8e03
--- /dev/null
+++ b/res-common/drawable-mdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/list_background_holo.9.png b/res-common/drawable-mdpi/list_background_holo.9.png
new file mode 100644
index 0000000..7d5d66d
--- /dev/null
+++ b/res-common/drawable-mdpi/list_background_holo.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/list_focused_holo.9.png b/res-common/drawable-mdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..86578be
--- /dev/null
+++ b/res-common/drawable-mdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/list_longpressed_holo_light.9.png b/res-common/drawable-mdpi/list_longpressed_holo_light.9.png
new file mode 100644
index 0000000..3226ab7
--- /dev/null
+++ b/res-common/drawable-mdpi/list_longpressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/list_pressed_holo_light.9.png b/res-common/drawable-mdpi/list_pressed_holo_light.9.png
new file mode 100644
index 0000000..061904c
--- /dev/null
+++ b/res-common/drawable-mdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/list_title_holo.9.png b/res-common/drawable-mdpi/list_title_holo.9.png
new file mode 100644
index 0000000..64bd691
--- /dev/null
+++ b/res-common/drawable-mdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-mdpi/unknown_source.png b/res-common/drawable-mdpi/unknown_source.png
new file mode 100644
index 0000000..356748f
--- /dev/null
+++ b/res-common/drawable-mdpi/unknown_source.png
Binary files differ
diff --git a/res-common/drawable-sw600dp-hdpi/list_activated_holo.9.png b/res-common/drawable-sw600dp-hdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..046b24a
--- /dev/null
+++ b/res-common/drawable-sw600dp-hdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-sw600dp-mdpi/list_activated_holo.9.png b/res-common/drawable-sw600dp-mdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..1ff3373
--- /dev/null
+++ b/res-common/drawable-sw600dp-mdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-sw600dp-xhdpi/list_activated_holo.9.png b/res-common/drawable-sw600dp-xhdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..2eb7c7e
--- /dev/null
+++ b/res-common/drawable-sw600dp-xhdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-v21/view_pager_tab_background.xml b/res-common/drawable-v21/view_pager_tab_background.xml
new file mode 100644
index 0000000..b9e0805
--- /dev/null
+++ b/res-common/drawable-v21/view_pager_tab_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="@color/tab_ripple_color">
+    <item android:id="@android:id/mask">
+        <color android:color="@android:color/white" />
+    </item>
+</ripple>
diff --git a/res-common/drawable-xhdpi/ic_ab_search.png b/res-common/drawable-xhdpi/ic_ab_search.png
new file mode 100644
index 0000000..71f7827
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_ab_search.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_arrow_back_24dp.png b/res-common/drawable-xhdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..bb73272
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_business_white_120dp.png b/res-common/drawable-xhdpi/ic_business_white_120dp.png
new file mode 100644
index 0000000..6256300
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_business_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_call_24dp.png b/res-common/drawable-xhdpi/ic_call_24dp.png
new file mode 100644
index 0000000..ef45e93
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_call_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_call_note_white_24dp.png b/res-common/drawable-xhdpi/ic_call_note_white_24dp.png
new file mode 100644
index 0000000..40eed1d
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_call_note_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_call_voicemail_holo_dark.png b/res-common/drawable-xhdpi/ic_call_voicemail_holo_dark.png
new file mode 100644
index 0000000..d9684d1
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_call_voicemail_holo_dark.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_close_dk.png b/res-common/drawable-xhdpi/ic_close_dk.png
new file mode 100644
index 0000000..5769f11
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_close_dk.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_create_24dp.png b/res-common/drawable-xhdpi/ic_create_24dp.png
new file mode 100644
index 0000000..48e75be
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_create_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_group_white_24dp.png b/res-common/drawable-xhdpi/ic_group_white_24dp.png
new file mode 100644
index 0000000..09c0e3e
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_group_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_history_white_drawable_24dp.png b/res-common/drawable-xhdpi/ic_history_white_drawable_24dp.png
new file mode 100644
index 0000000..e188d4a
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_history_white_drawable_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_info_outline_24dp.png b/res-common/drawable-xhdpi/ic_info_outline_24dp.png
new file mode 100644
index 0000000..c571b2e
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_info_outline_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_menu_remove_field_holo_light.png b/res-common/drawable-xhdpi/ic_menu_remove_field_holo_light.png
new file mode 100644
index 0000000..65a6b7b
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_menu_remove_field_holo_light.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_message_24dp.png b/res-common/drawable-xhdpi/ic_message_24dp.png
new file mode 100644
index 0000000..763767b
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_message_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_person_24dp.png b/res-common/drawable-xhdpi/ic_person_24dp.png
new file mode 100644
index 0000000..aea15f0
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_person_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_person_add_24dp.png b/res-common/drawable-xhdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..7e7c289
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_person_avatar.png b/res-common/drawable-xhdpi/ic_person_avatar.png
new file mode 100644
index 0000000..aecc9af
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_person_avatar.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_person_white_120dp.png b/res-common/drawable-xhdpi/ic_person_white_120dp.png
new file mode 100644
index 0000000..8d80a05
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_person_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_scroll_handle.png b/res-common/drawable-xhdpi/ic_scroll_handle.png
new file mode 100644
index 0000000..2d43c4d
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_scroll_handle.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_videocam.png b/res-common/drawable-xhdpi/ic_videocam.png
new file mode 100644
index 0000000..c1783de
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_videocam.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/ic_voicemail_avatar.png b/res-common/drawable-xhdpi/ic_voicemail_avatar.png
new file mode 100644
index 0000000..f24505d
--- /dev/null
+++ b/res-common/drawable-xhdpi/ic_voicemail_avatar.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/list_activated_holo.9.png b/res-common/drawable-xhdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..eda10e6
--- /dev/null
+++ b/res-common/drawable-xhdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/list_background_holo.9.png b/res-common/drawable-xhdpi/list_background_holo.9.png
new file mode 100644
index 0000000..b652725
--- /dev/null
+++ b/res-common/drawable-xhdpi/list_background_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/list_focused_holo.9.png b/res-common/drawable-xhdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..86578be
--- /dev/null
+++ b/res-common/drawable-xhdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/list_longpressed_holo_light.9.png b/res-common/drawable-xhdpi/list_longpressed_holo_light.9.png
new file mode 100644
index 0000000..5532e88
--- /dev/null
+++ b/res-common/drawable-xhdpi/list_longpressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/list_pressed_holo_light.9.png b/res-common/drawable-xhdpi/list_pressed_holo_light.9.png
new file mode 100644
index 0000000..f4af926
--- /dev/null
+++ b/res-common/drawable-xhdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/list_title_holo.9.png b/res-common/drawable-xhdpi/list_title_holo.9.png
new file mode 100644
index 0000000..f4f00ca
--- /dev/null
+++ b/res-common/drawable-xhdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xhdpi/unknown_source.png b/res-common/drawable-xhdpi/unknown_source.png
new file mode 100644
index 0000000..35e8fb4
--- /dev/null
+++ b/res-common/drawable-xhdpi/unknown_source.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_ab_search.png b/res-common/drawable-xxhdpi/ic_ab_search.png
new file mode 100644
index 0000000..142c545
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_ab_search.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_arrow_back_24dp.png b/res-common/drawable-xxhdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..72c51b0
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_business_white_120dp.png b/res-common/drawable-xxhdpi/ic_business_white_120dp.png
new file mode 100644
index 0000000..8d67e44
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_business_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_call_24dp.png b/res-common/drawable-xxhdpi/ic_call_24dp.png
new file mode 100644
index 0000000..90ead2e
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_call_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_call_note_white_24dp.png b/res-common/drawable-xxhdpi/ic_call_note_white_24dp.png
new file mode 100644
index 0000000..2656cad
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_call_note_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_call_voicemail_holo_dark.png b/res-common/drawable-xxhdpi/ic_call_voicemail_holo_dark.png
new file mode 100644
index 0000000..ac5b83b
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_call_voicemail_holo_dark.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_close_dk.png b/res-common/drawable-xxhdpi/ic_close_dk.png
new file mode 100644
index 0000000..670bf79
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_close_dk.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_create_24dp.png b/res-common/drawable-xxhdpi/ic_create_24dp.png
new file mode 100644
index 0000000..24142c7
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_create_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_group_white_24dp.png b/res-common/drawable-xxhdpi/ic_group_white_24dp.png
new file mode 100644
index 0000000..03cad4c
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_group_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_history_white_drawable_24dp.png b/res-common/drawable-xxhdpi/ic_history_white_drawable_24dp.png
new file mode 100644
index 0000000..f44df1a
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_history_white_drawable_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_info_outline_24dp.png b/res-common/drawable-xxhdpi/ic_info_outline_24dp.png
new file mode 100644
index 0000000..c41a5fc
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_info_outline_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_menu_remove_field_holo_light.png b/res-common/drawable-xxhdpi/ic_menu_remove_field_holo_light.png
new file mode 100644
index 0000000..0fec2f2
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_menu_remove_field_holo_light.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_message_24dp.png b/res-common/drawable-xxhdpi/ic_message_24dp.png
new file mode 100644
index 0000000..0a79824
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_message_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_person_24dp.png b/res-common/drawable-xxhdpi/ic_person_24dp.png
new file mode 100644
index 0000000..184f741
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_person_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_person_add_24dp.png b/res-common/drawable-xxhdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..8f744f0
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_person_avatar.png b/res-common/drawable-xxhdpi/ic_person_avatar.png
new file mode 100644
index 0000000..2cfc004
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_person_avatar.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_person_white_120dp.png b/res-common/drawable-xxhdpi/ic_person_white_120dp.png
new file mode 100644
index 0000000..b29df2f
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_person_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_scroll_handle.png b/res-common/drawable-xxhdpi/ic_scroll_handle.png
new file mode 100644
index 0000000..55f1d13
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_scroll_handle.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_videocam.png b/res-common/drawable-xxhdpi/ic_videocam.png
new file mode 100644
index 0000000..4ab5ad0
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_videocam.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/ic_voicemail_avatar.png b/res-common/drawable-xxhdpi/ic_voicemail_avatar.png
new file mode 100644
index 0000000..182def8
--- /dev/null
+++ b/res-common/drawable-xxhdpi/ic_voicemail_avatar.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/list_activated_holo.9.png b/res-common/drawable-xxhdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..52c00dd
--- /dev/null
+++ b/res-common/drawable-xxhdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/list_focused_holo.9.png b/res-common/drawable-xxhdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..3e4ca68
--- /dev/null
+++ b/res-common/drawable-xxhdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/list_longpressed_holo_light.9.png b/res-common/drawable-xxhdpi/list_longpressed_holo_light.9.png
new file mode 100644
index 0000000..230d649
--- /dev/null
+++ b/res-common/drawable-xxhdpi/list_longpressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/list_pressed_holo_light.9.png b/res-common/drawable-xxhdpi/list_pressed_holo_light.9.png
new file mode 100644
index 0000000..1352a17
--- /dev/null
+++ b/res-common/drawable-xxhdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/res-common/drawable-xxhdpi/list_title_holo.9.png b/res-common/drawable-xxhdpi/list_title_holo.9.png
new file mode 100644
index 0000000..7ddf14a
--- /dev/null
+++ b/res-common/drawable-xxhdpi/list_title_holo.9.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_ab_search.png b/res-common/drawable-xxxhdpi/ic_ab_search.png
new file mode 100644
index 0000000..2ffb2ec
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_ab_search.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_arrow_back_24dp.png b/res-common/drawable-xxxhdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..ae01a04
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_business_white_120dp.png b/res-common/drawable-xxxhdpi/ic_business_white_120dp.png
new file mode 100644
index 0000000..1741675
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_business_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_call_24dp.png b/res-common/drawable-xxxhdpi/ic_call_24dp.png
new file mode 100644
index 0000000..b0e0205
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_call_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_call_note_white_24dp.png b/res-common/drawable-xxxhdpi/ic_call_note_white_24dp.png
new file mode 100644
index 0000000..903c162
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_call_note_white_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_close_dk.png b/res-common/drawable-xxxhdpi/ic_close_dk.png
new file mode 100644
index 0000000..3a5540f
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_close_dk.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_create_24dp.png b/res-common/drawable-xxxhdpi/ic_create_24dp.png
new file mode 100644
index 0000000..d3ff0ec
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_create_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_history_white_drawable_24dp.png b/res-common/drawable-xxxhdpi/ic_history_white_drawable_24dp.png
new file mode 100644
index 0000000..5b96af5
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_history_white_drawable_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_info_outline_24dp.png b/res-common/drawable-xxxhdpi/ic_info_outline_24dp.png
new file mode 100644
index 0000000..3a82cab
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_info_outline_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_message_24dp.png b/res-common/drawable-xxxhdpi/ic_message_24dp.png
new file mode 100644
index 0000000..fa7c17a
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_message_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_person_24dp.png b/res-common/drawable-xxxhdpi/ic_person_24dp.png
new file mode 100644
index 0000000..33d40d8
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_person_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_person_add_24dp.png b/res-common/drawable-xxxhdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..2fa2cca
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_person_avatar.png b/res-common/drawable-xxxhdpi/ic_person_avatar.png
new file mode 100644
index 0000000..3233252
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_person_avatar.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_person_white_120dp.png b/res-common/drawable-xxxhdpi/ic_person_white_120dp.png
new file mode 100644
index 0000000..b53cc11
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_person_white_120dp.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_scroll_handle.png b/res-common/drawable-xxxhdpi/ic_scroll_handle.png
new file mode 100644
index 0000000..d90782a
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_scroll_handle.png
Binary files differ
diff --git a/res-common/drawable-xxxhdpi/ic_videocam.png b/res-common/drawable-xxxhdpi/ic_videocam.png
new file mode 100644
index 0000000..0643ea5
--- /dev/null
+++ b/res-common/drawable-xxxhdpi/ic_videocam.png
Binary files differ
diff --git a/res-common/drawable/dialog_background_material.xml b/res-common/drawable/dialog_background_material.xml
new file mode 100644
index 0000000..fb586a0
--- /dev/null
+++ b/res-common/drawable/dialog_background_material.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:inset="16dp">
+    <shape android:shape="rectangle">
+        <corners android:radius="2dp" />
+        <solid android:color="@color/call_subject_history_background" />
+    </shape>
+</inset>
diff --git a/res-common/drawable/fastscroll_thumb.xml b/res-common/drawable/fastscroll_thumb.xml
new file mode 100644
index 0000000..eca4b39
--- /dev/null
+++ b/res-common/drawable/fastscroll_thumb.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true" android:drawable="@drawable/ic_scroll_handle_pressed" />
+    <item android:drawable="@drawable/ic_scroll_handle_default" />
+</selector>
\ No newline at end of file
diff --git a/res-common/drawable/ic_back_arrow.xml b/res-common/drawable/ic_back_arrow.xml
new file mode 100644
index 0000000..68a875d
--- /dev/null
+++ b/res-common/drawable/ic_back_arrow.xml
@@ -0,0 +1,20 @@
+<?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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+        android:src="@drawable/ic_arrow_back_24dp"
+        android:autoMirrored="true"
+        android:tint="@color/actionbar_icon_color" />
\ No newline at end of file
diff --git a/res-common/drawable/ic_call.xml b/res-common/drawable/ic_call.xml
new file mode 100644
index 0000000..e06317b
--- /dev/null
+++ b/res-common/drawable/ic_call.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+        android:src="@drawable/ic_call_24dp"
+        android:autoMirrored="true" />
diff --git a/res-common/drawable/ic_cancel_black_24dp.xml b/res-common/drawable/ic_cancel_black_24dp.xml
new file mode 100644
index 0000000..30f8ef5
--- /dev/null
+++ b/res-common/drawable/ic_cancel_black_24dp.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- An 'x' with a circle around it (used as a delete button). -->
+<vector android:alpha="0.54" android:height="24dp"
+    android:viewportHeight="24.0" android:viewportWidth="24.0"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#000000" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
+</vector>
diff --git a/res-common/drawable/ic_check_mark.xml b/res-common/drawable/ic_check_mark.xml
new file mode 100644
index 0000000..b0d73cd
--- /dev/null
+++ b/res-common/drawable/ic_check_mark.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- Checkmark icon used when some task is done -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/>
+</vector>
\ No newline at end of file
diff --git a/res-common/drawable/ic_close_black_24dp.xml b/res-common/drawable/ic_close_black_24dp.xml
new file mode 100644
index 0000000..4ddacdf
--- /dev/null
+++ b/res-common/drawable/ic_close_black_24dp.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- 'X' icon (used in multi select mode and search bar). -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.0">
+    <path
+        android:fillColor="#000000"
+        android:pathData="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
+</vector>
diff --git a/res-common/drawable/ic_device.xml b/res-common/drawable/ic_device.xml
new file mode 100644
index 0000000..7fd3bd5
--- /dev/null
+++ b/res-common/drawable/ic_device.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- ic_device is a phone-shaped icon. Since it is not tinted so we set the tint color in here. -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.0">
+<path
+    android:fillColor="#7f7f7f"
+    android:pathData="M17 1.01L7 1c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z"/>
+</vector>
\ No newline at end of file
diff --git a/res-common/drawable/ic_material_star.xml b/res-common/drawable/ic_material_star.xml
new file mode 100644
index 0000000..cd7c61c
--- /dev/null
+++ b/res-common/drawable/ic_material_star.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- Material design star icon -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.0">
+<path
+    android:fillColor="#000000"
+    android:pathData="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>
+</vector>
\ No newline at end of file
diff --git a/res-common/drawable/ic_message_24dp_mirrored.xml b/res-common/drawable/ic_message_24dp_mirrored.xml
new file mode 100644
index 0000000..b1bd743
--- /dev/null
+++ b/res-common/drawable/ic_message_24dp_mirrored.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_message_24dp"
+    android:autoMirrored="true" />
diff --git a/res-common/drawable/ic_more_vert.xml b/res-common/drawable/ic_more_vert.xml
new file mode 100644
index 0000000..749316a
--- /dev/null
+++ b/res-common/drawable/ic_more_vert.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>
+</vector>
diff --git a/res-common/drawable/ic_person_add_tinted_24dp.xml b/res-common/drawable/ic_person_add_tinted_24dp.xml
new file mode 100644
index 0000000..fdbf4fa
--- /dev/null
+++ b/res-common/drawable/ic_person_add_tinted_24dp.xml
@@ -0,0 +1,19 @@
+<?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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_person_add_24dp"
+    android:autoMirrored="true"/>
diff --git a/res-common/drawable/ic_scroll_handle_default.xml b/res-common/drawable/ic_scroll_handle_default.xml
new file mode 100644
index 0000000..055005e
--- /dev/null
+++ b/res-common/drawable/ic_scroll_handle_default.xml
@@ -0,0 +1,20 @@
+<?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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_scroll_handle"
+    android:tint="@color/dialtacts_secondary_text_color" />
\ No newline at end of file
diff --git a/res-common/drawable/ic_scroll_handle_pressed.xml b/res-common/drawable/ic_scroll_handle_pressed.xml
new file mode 100644
index 0000000..9109c81
--- /dev/null
+++ b/res-common/drawable/ic_scroll_handle_pressed.xml
@@ -0,0 +1,20 @@
+<?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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_scroll_handle"
+    android:tint="@color/dialtacts_theme_color" />
\ No newline at end of file
diff --git a/res-common/drawable/ic_search_add_contact.xml b/res-common/drawable/ic_search_add_contact.xml
new file mode 100644
index 0000000..9a313cd
--- /dev/null
+++ b/res-common/drawable/ic_search_add_contact.xml
@@ -0,0 +1,20 @@
+<?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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_person_add_24dp"
+    android:autoMirrored="true" />
diff --git a/res-common/drawable/ic_search_video_call.xml b/res-common/drawable/ic_search_video_call.xml
new file mode 100644
index 0000000..c2390e5
--- /dev/null
+++ b/res-common/drawable/ic_search_video_call.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+        android:src="@drawable/ic_videocam"
+        android:autoMirrored="true"
+        android:tint="@color/search_video_call_icon_tint" />
diff --git a/res-common/drawable/ic_work_profile.xml b/res-common/drawable/ic_work_profile.xml
new file mode 100644
index 0000000..bacfe69
--- /dev/null
+++ b/res-common/drawable/ic_work_profile.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="16dp"
+    android:height="16dp"
+    android:viewportWidth="48"
+    android:viewportHeight="48">
+
+    <!-- //java/com/google/android/assets/quantum:ic_enterprise_grey600_16 -->
+
+    <path
+        android:fillColor="#757575"
+        android:pathData="M28 33h-8v-3H6v8c0 2.2 1.8 4 4 4h28c2.2 0 4-1.8
+4-4v-8H28v3zm12-21h-7V9l-3-3H18l-3 3.1V12H8c-2.2 0-4 1.8-4 4v8c0 2.2 1.8 4 4
+4h12v-3h8v3h12c2.2 0 4-1.8 4-4v-8c0-2.2-1.8-4-4-4zm-10 0H18V9h12v3z" />
+    <path
+        android:pathData="M0 0h48v48H0z" />
+</vector>
diff --git a/res-common/drawable/item_background_material_borderless_dark.xml b/res-common/drawable/item_background_material_borderless_dark.xml
new file mode 100644
index 0000000..693bcaf
--- /dev/null
+++ b/res-common/drawable/item_background_material_borderless_dark.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+
+<!-- Based on the Theme.Material's default selectableItemBackgroundBorderless -->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/ripple_material_dark" />
\ No newline at end of file
diff --git a/res-common/drawable/item_background_material_dark.xml b/res-common/drawable/item_background_material_dark.xml
new file mode 100644
index 0000000..87b1e17
--- /dev/null
+++ b/res-common/drawable/item_background_material_dark.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+
+<!-- Based on the Theme.Material's default selectableItemBackground -->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/ripple_material_dark" >
+    <item android:id="@android:id/mask">
+        <color android:color="@android:color/white" />
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/res-common/drawable/list_item_activated_background.xml b/res-common/drawable/list_item_activated_background.xml
new file mode 100644
index 0000000..a58577e
--- /dev/null
+++ b/res-common/drawable/list_item_activated_background.xml
@@ -0,0 +1,20 @@
+<?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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_activated="true" android:drawable="@drawable/list_activated_holo" />
+    <item android:drawable="@drawable/list_background_holo" />
+</selector>
diff --git a/res-common/drawable/searchedittext_custom_cursor.xml b/res-common/drawable/searchedittext_custom_cursor.xml
new file mode 100644
index 0000000..a6bb90f
--- /dev/null
+++ b/res-common/drawable/searchedittext_custom_cursor.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2014 Google Inc. All Rights Reserved. -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android" >
+    <size android:width="2dp" android:height="22dp" />
+    <solid android:color="@color/dialtacts_theme_color" />
+</shape>
\ No newline at end of file
diff --git a/res-common/drawable/unread_count_background.xml b/res-common/drawable/unread_count_background.xml
new file mode 100644
index 0000000..f70f84a
--- /dev/null
+++ b/res-common/drawable/unread_count_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="@dimen/tab_unread_count_background_radius"/>
+    <solid android:color="@color/tab_unread_count_background_color" />
+</shape>
diff --git a/res-common/drawable/view_pager_tab_background.xml b/res-common/drawable/view_pager_tab_background.xml
new file mode 100644
index 0000000..9f59845
--- /dev/null
+++ b/res-common/drawable/view_pager_tab_background.xml
@@ -0,0 +1,21 @@
+<?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
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_pressed="true"
+        android:drawable="@color/tab_ripple_color"/>
+</selector>
\ No newline at end of file
diff --git a/res-common/layout-ldrtl/unread_count_tab.xml b/res-common/layout-ldrtl/unread_count_tab.xml
new file mode 100644
index 0000000..b23ab57
--- /dev/null
+++ b/res-common/layout-ldrtl/unread_count_tab.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<!-- layoutDirection set to ltr as a workaround to a framework bug (b/22010411) causing view with
+     layout_centerInParent inside a RelativeLayout to expand to screen width when RTL is active -->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/view_pager_tab_background"
+    android:layoutDirection="ltr">
+    <!-- The tab icon -->
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"/>
+    <TextView
+        android:id="@+id/count"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/tab_unread_count_background_size"
+        android:layout_marginTop="@dimen/tab_unread_count_margin_top"
+        android:layout_marginStart="@dimen/tab_unread_count_margin_left"
+        android:layout_toStartOf="@id/icon"
+        android:paddingLeft="@dimen/tab_unread_count_text_padding"
+        android:paddingRight="@dimen/tab_unread_count_text_padding"
+        android:background="@drawable/unread_count_background"
+        android:fontFamily="sans-serif-medium"
+        android:importantForAccessibility="no"
+        android:minWidth="@dimen/tab_unread_count_background_size"
+        android:textAlignment="center"
+        android:textColor="@color/tab_accent_color"
+        android:textSize="@dimen/tab_unread_count_text_size"
+        android:layoutDirection="locale"/>
+</RelativeLayout>
+
diff --git a/res-common/layout/account_filter_header.xml b/res-common/layout/account_filter_header.xml
new file mode 100644
index 0000000..d348e82
--- /dev/null
+++ b/res-common/layout/account_filter_header.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!-- Layout showing the type of account filter
+     (e.g. All contacts filter, custom filter, etc.),
+     which is the header of all contact lists. -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/account_filter_header_container"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/contact_browser_list_header_height"
+    android:paddingTop="@dimen/list_header_extra_top_padding"
+    android:visibility="gone"
+    android:orientation="horizontal"
+    android:background="@color/background_primary">
+
+    <ImageView
+        android:id="@+id/account_filter_icon"
+        android:layout_height="@dimen/contact_browser_list_header_icon_size"
+        android:layout_width="@dimen/contact_browser_list_header_icon_size"
+        android:layout_marginStart="@dimen/contact_browser_list_header_icon_left_margin"
+        android:layout_marginEnd="@dimen/contact_browser_list_header_icon_right_margin"
+        android:layout_gravity="center_vertical"/>
+
+    <TextView
+        android:id="@+id/account_filter_header"
+        android:layout_gravity="center_vertical"
+        android:layout_marginStart="@dimen/contact_browser_list_header_text_margin"
+        android:layout_marginEnd="@dimen/contact_browser_list_header_right_margin"
+        style="@style/ContactListSeparatorTextViewStyle"
+        android:textAlignment="viewStart"
+        android:paddingLeft="@dimen/contact_browser_list_item_text_indent"
+        android:paddingStart="@dimen/contact_browser_list_item_text_indent" />
+</LinearLayout>
diff --git a/res-common/layout/account_selector_list_item.xml b/res-common/layout/account_selector_list_item.xml
new file mode 100644
index 0000000..ba86a9b
--- /dev/null
+++ b/res-common/layout/account_selector_list_item.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="?android:attr/listPreferredItemHeight"
+    android:orientation="horizontal">
+    <ImageView android:id="@android:id/icon"
+        android:layout_width="@dimen/detail_network_icon_size"
+        android:layout_height="@dimen/detail_network_icon_size"
+        android:layout_margin="16dip"
+        android:layout_gravity="center_vertical" />
+
+    <LinearLayout
+        android:layout_width="0dip"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_marginLeft="8dp"
+        android:orientation="vertical"
+        android:layout_gravity="center_vertical">
+
+        <TextView android:id="@android:id/text1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dip"
+            android:layout_marginEnd="8dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+
+        <TextView android:id="@android:id/text2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dip"
+            android:layout_marginEnd="8dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/textColorSecondary"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/res-common/layout/account_selector_list_item_condensed.xml b/res-common/layout/account_selector_list_item_condensed.xml
new file mode 100644
index 0000000..6720065
--- /dev/null
+++ b/res-common/layout/account_selector_list_item_condensed.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="280dp"
+    android:layout_height="72dp"
+    android:orientation="horizontal">
+    <ImageView android:id="@android:id/icon"
+        android:layout_width="@dimen/detail_network_icon_size"
+        android:layout_height="@dimen/detail_network_icon_size"
+        android:layout_marginStart="24dp"
+        android:layout_marginEnd="16dp"
+        android:layout_gravity="center_vertical" />
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:layout_gravity="center_vertical">
+
+        <TextView android:id="@android:id/text1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dip"
+            android:layout_marginEnd="8dip"
+            android:textSize="16sp"
+            android:textColor="@color/contacts_text_color"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+
+        <TextView android:id="@android:id/text2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dip"
+            android:layout_marginEnd="8dip"
+            android:textSize="14sp"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/textColorSecondary"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/res-common/layout/call_subject_history_list_item.xml b/res-common/layout/call_subject_history_list_item.xml
new file mode 100644
index 0000000..b8cce47
--- /dev/null
+++ b/res-common/layout/call_subject_history_list_item.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+          android:id="@android:id/text1"
+          android:gravity="center_vertical"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:paddingStart="@dimen/call_subject_dialog_margin"
+          android:paddingEnd="@dimen/call_subject_dialog_margin"
+          android:paddingTop="@dimen/call_subject_history_item_padding"
+          android:paddingBottom="@dimen/call_subject_history_item_padding"
+          android:singleLine="true"
+          android:textColor="@color/dialtacts_primary_text_color"
+          android:textSize="@dimen/call_subject_dialog_primary_text_size" />
diff --git a/res-common/layout/contact_list_card.xml b/res-common/layout/contact_list_card.xml
new file mode 100644
index 0000000..c20dbe7
--- /dev/null
+++ b/res-common/layout/contact_list_card.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal"
+        android:id="@+id/list_card"
+        android:visibility="invisible">
+    <View
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/contact_all_list_background_color"/>
+</LinearLayout>
diff --git a/res-common/layout/contact_list_content.xml b/res-common/layout/contact_list_content.xml
new file mode 100644
index 0000000..f18267d
--- /dev/null
+++ b/res-common/layout/contact_list_content.xml
@@ -0,0 +1,65 @@
+<?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.
+-->
+
+<!-- android:paddingTop is used instead of android:layout_marginTop. It looks
+     android:layout_marginTop is ignored when used with <fragment></fragment>, which
+     only happens in Tablet UI since we rely on ViewPager in Phone UI.
+     Instead, android:layout_marginTop inside <fragment /> is effective. -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pinned_header_list_layout"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:visibility="gone"
+    android:background="?attr/contact_browser_background" >
+
+    <!-- Shown only when an Account filter is set.
+         - paddingTop should be here to show "shade" effect correctly. -->
+    <include layout="@layout/account_filter_header" />
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:id="@+id/contact_list">
+
+        <include layout="@layout/contact_list_card"/>
+        <view
+            class="com.android.contacts.common.list.PinnedHeaderListView"
+            android:id="@android:id/list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="?attr/contact_browser_list_padding_left"
+            android:layout_marginRight="?attr/contact_browser_list_padding_right"
+            android:layout_marginStart="?attr/contact_browser_list_padding_left"
+            android:layout_marginEnd="?attr/contact_browser_list_padding_right"
+            android:paddingTop="?attr/list_item_padding_top"
+            android:clipToPadding="false"
+            android:fastScrollEnabled="true"
+            android:visibility="gone"
+            android:fadingEdge="none" />
+        <ProgressBar
+            android:id="@+id/search_progress"
+            style="?android:attr/progressBarStyleLarge"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:visibility="gone" />
+    </FrameLayout>
+
+</LinearLayout>
diff --git a/res-common/layout/contact_list_filter.xml b/res-common/layout/contact_list_filter.xml
new file mode 100644
index 0000000..34c713c
--- /dev/null
+++ b/res-common/layout/contact_list_filter.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2011 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"
+    android:fillViewport="true">
+
+    <ListView
+        android:id="@android:id/list"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dip"
+        android:background="?android:attr/dividerHorizontal" />
+</LinearLayout>
diff --git a/res-common/layout/contact_list_filter_custom.xml b/res-common/layout/contact_list_filter_custom.xml
new file mode 100644
index 0000000..845d52f
--- /dev/null
+++ b/res-common/layout/contact_list_filter_custom.xml
@@ -0,0 +1,39 @@
+<?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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    style="@style/CustomContactListFilterView"
+    android:orientation="vertical"
+    android:fillViewport="true">
+
+    <ExpandableListView
+        android:id="@android:id/list"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:overScrollMode="always" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dip"
+        android:layout_marginLeft="16dip"
+        android:layout_marginRight="16dip"
+        android:layout_marginStart="16dip"
+        android:layout_marginEnd="16dip"
+        android:background="?android:attr/dividerHorizontal" />
+
+</LinearLayout>
diff --git a/res-common/layout/contact_list_filter_item.xml b/res-common/layout/contact_list_filter_item.xml
new file mode 100644
index 0000000..9f297e6
--- /dev/null
+++ b/res-common/layout/contact_list_filter_item.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.contacts.common.list.ContactListFilterView"
+    android:descendantFocusability="blocksDescendants"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="@dimen/contact_filter_left_margin"
+    android:paddingEnd="@dimen/contact_filter_right_margin"
+    android:minHeight="@dimen/contact_filter_item_min_height"
+    android:gravity="center_vertical">
+
+    <ImageView
+        android:id="@+id/icon"
+        android:scaleType="fitCenter"
+        android:layout_width="@dimen/contact_filter_icon_size"
+        android:layout_height="@dimen/contact_filter_icon_size"/>
+
+    <LinearLayout
+        android:layout_width="0dip"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_marginTop="-1dip"
+        android:orientation="vertical"
+        android:layout_marginLeft="8dip"
+        android:layout_marginStart="8dip">
+
+        <TextView
+            android:id="@+id/accountType"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceListItem"
+            android:textColor="@color/account_filter_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+
+        <TextView
+            android:id="@+id/accountUserName"
+            android:layout_marginTop="-3dip"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+            android:textColor="@color/account_filter_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+    </LinearLayout>
+
+    <RadioButton
+        android:id="@+id/radioButton"
+        android:clickable="false"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="end|center_vertical" />
+</view>
+
diff --git a/res-common/layout/contact_tile_frequent.xml b/res-common/layout/contact_tile_frequent.xml
new file mode 100644
index 0000000..b1e83ce
--- /dev/null
+++ b/res-common/layout/contact_tile_frequent.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.contacts.common.list.ContactTileFrequentView"
+    android:focusable="true"
+    android:background="?android:attr/selectableItemBackground">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:gravity="center_vertical"
+        android:paddingTop="?list_item_padding_top"
+        android:paddingBottom="?list_item_padding_bottom">
+
+        <com.android.contacts.common.widget.LayoutSuppressingImageView
+            android:id="@+id/contact_tile_image"
+            android:layout_width="?list_item_photo_size"
+            android:layout_height="?list_item_photo_size"
+            android:scaleType="centerCrop"
+            android:layout_marginEnd="?list_item_gap_between_image_and_text"/>
+
+        <TextView
+            android:id="@+id/contact_tile_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@android:color/black"
+            android:textSize="@dimen/contact_browser_list_item_text_size"
+            android:singleLine="true"
+            android:fadingEdge="horizontal"
+            android:fadingEdgeLength="3dip"
+            android:ellipsize="marquee"
+            android:textAlignment="viewStart" />
+
+    </LinearLayout>
+
+</view>
diff --git a/res-common/layout/contact_tile_frequent_phone.xml b/res-common/layout/contact_tile_frequent_phone.xml
new file mode 100644
index 0000000..f87dff7
--- /dev/null
+++ b/res-common/layout/contact_tile_frequent_phone.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!-- Layout parameters are set programmatically. -->
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/contact_tile_frequent_phone"
+    class="com.android.contacts.common.list.ContactTilePhoneFrequentView"
+    android:focusable="true"
+    android:background="?android:attr/selectableItemBackground"
+    android:nextFocusLeft="@+id/contact_tile_quick">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+        <com.android.contacts.common.widget.LayoutSuppressingQuickContactBadge
+            android:id="@id/contact_tile_quick"
+            android:layout_width="64dip"
+            android:layout_height="64dip"
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentStart="true"
+            android:nextFocusRight="@id/contact_tile_frequent_phone"
+            android:scaleType="centerCrop"
+            android:focusable="true" />
+
+        <TextView
+            android:id="@+id/contact_tile_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dip"
+            android:layout_marginStart="8dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:layout_marginTop="8dip"
+            android:layout_toRightOf="@id/contact_tile_quick"
+            android:layout_toEndOf="@id/contact_tile_quick"
+            android:singleLine="true"
+            android:fadingEdge="horizontal"
+            android:fadingEdgeLength="3dip"
+            android:ellipsize="marquee"
+            android:textAlignment="viewStart" />
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/contact_tile_name"
+            android:layout_toRightOf="@id/contact_tile_quick"
+            android:layout_toEndOf="@id/contact_tile_quick"
+            android:gravity="center_vertical">
+
+            <TextView
+                android:id="@+id/contact_tile_phone_number"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="?attr/list_item_data_width_weight"
+                android:textSize="14sp"
+                android:ellipsize="marquee"
+                android:textColor="@color/dialtacts_secondary_text_color"
+                android:layout_marginLeft="8dip"
+                android:layout_marginStart="8dip"
+                android:singleLine="true"
+                android:layout_gravity="bottom"
+                android:textDirection="ltr"
+                android:textAlignment="viewStart" />
+
+            <TextView
+                android:id="@+id/contact_tile_phone_type"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="?attr/list_item_label_width_weight"
+                android:textSize="12sp"
+                android:ellipsize="marquee"
+                android:singleLine="true"
+                android:textAllCaps="true"
+                android:textColor="@color/dialtacts_secondary_text_color"
+                android:layout_marginLeft="8dip"
+                android:layout_marginStart="8dip"
+                android:gravity="end"
+                android:layout_gravity="bottom" />
+
+        </LinearLayout>
+
+        <View
+            android:id="@+id/contact_tile_horizontal_divider"
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:background="?android:attr/listDivider"
+            android:layout_below="@id/contact_tile_quick" />
+
+    </RelativeLayout>
+
+</view>
diff --git a/res-common/layout/contact_tile_starred.xml b/res-common/layout/contact_tile_starred.xml
new file mode 100644
index 0000000..777cc05
--- /dev/null
+++ b/res-common/layout/contact_tile_starred.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:ex="http://schemas.android.com/apk/res-auto"
+    class="com.android.contacts.common.list.ContactTileStarredView"
+    android:focusable="true"
+    android:background="?android:attr/selectableItemBackground">
+
+    <LinearLayout
+        android:id="@+id/contact_tile_push_state"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:paddingTop="24dp">
+        <view
+            android:id="@+id/contact_tile_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            ex:direction="widthToHeight"
+            ex:ratio="1.0"
+            class="com.android.contacts.common.widget.ProportionalLayout" >
+            <ImageView
+                android:id="@+id/contact_tile_image"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </view>
+        <TextView
+            android:id="@+id/contact_tile_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="7dp"
+            android:textColor="#202020"
+            android:textSize="@dimen/contact_browser_list_item_text_size"
+            android:singleLine="true"
+            android:fadingEdge="horizontal"
+            android:fadingEdgeLength="3dip"
+            android:ellipsize="marquee"
+            android:textAlignment="center"/>
+    </LinearLayout>
+</view>
diff --git a/res-common/layout/contact_tile_starred_quick_contact.xml b/res-common/layout/contact_tile_starred_quick_contact.xml
new file mode 100644
index 0000000..ecbe583
--- /dev/null
+++ b/res-common/layout/contact_tile_starred_quick_contact.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:paddingBottom="1dip"
+    android:paddingRight="1dip"
+    android:paddingEnd="1dip"
+    android:background="@null"
+    class="com.android.contacts.common.list.ContactTileStarredView" >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+        <com.android.contacts.common.widget.LayoutSuppressingImageView
+            android:id="@+id/contact_tile_image"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/contact_tile_shadowbox_height"
+            android:orientation="vertical"
+            android:background="@color/contact_tile_shadow_box_color"
+            android:layout_alignParentBottom="true"
+            android:gravity="center_vertical"
+            android:paddingLeft="8dip"
+            android:paddingRight="8dip"
+            android:paddingStart="8dip"
+            android:paddingEnd="8dip">
+
+            <TextView
+                android:id="@+id/contact_tile_name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@android:color/white"
+                android:textSize="16sp"
+                android:singleLine="true"
+                android:fadingEdge="horizontal"
+                android:fadingEdgeLength="3dip"
+                android:ellipsize="marquee"
+                android:textAlignment="viewStart" />
+
+            <TextView
+                android:id="@+id/contact_tile_status"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:textColor="@color/people_contact_tile_status_color"
+                android:singleLine="true"
+                android:drawablePadding="4dip"
+                android:fadingEdge="horizontal"
+                android:fadingEdgeLength="3dip"
+                android:layout_marginTop="-3dip"
+                android:ellipsize="marquee" />
+
+        </LinearLayout>
+
+        <QuickContactBadge
+            android:id="@+id/contact_tile_quick"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:focusable="true"
+            android:background="@null" />
+
+    </RelativeLayout>
+
+</view>
diff --git a/res-common/layout/custom_contact_list_filter_account.xml b/res-common/layout/custom_contact_list_filter_account.xml
new file mode 100644
index 0000000..c7a6cb5
--- /dev/null
+++ b/res-common/layout/custom_contact_list_filter_account.xml
@@ -0,0 +1,60 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingLeft="@dimen/contact_filter_list_item_padding_start"
+    android:paddingRight="?android:attr/scrollbarSize"
+    android:paddingStart="@dimen/contact_filter_list_item_padding_start"
+    android:paddingEnd="?android:attr/scrollbarSize">
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="6dip"
+        android:layout_marginEnd="6dip"
+        android:layout_marginTop="6dip"
+        android:layout_marginBottom="6dip"
+        android:layout_weight="1"
+        android:duplicateParentState="true">
+
+        <TextView
+            android:id="@android:id/text1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:ellipsize="marquee"
+            android:textAppearance="?android:attr/textAppearanceListItem"
+            android:duplicateParentState="true" />
+
+        <TextView
+            android:id="@android:id/text2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@android:id/text1"
+            android:layout_alignLeft="@android:id/text1"
+            android:layout_alignStart="@android:id/text1"
+            android:maxLines="1"
+            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+            android:textColor="?android:attr/textColorTertiary"
+            android:duplicateParentState="true" />
+
+    </RelativeLayout>
+
+</LinearLayout>
diff --git a/res-common/layout/custom_contact_list_filter_group.xml b/res-common/layout/custom_contact_list_filter_group.xml
new file mode 100644
index 0000000..c67ce16
--- /dev/null
+++ b/res-common/layout/custom_contact_list_filter_group.xml
@@ -0,0 +1,90 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="@dimen/contact_filter_list_item_height"
+    android:gravity="center_vertical"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="@dimen/contact_filter_list_item_height"
+        android:gravity="center_vertical"
+        android:paddingLeft="@dimen/contact_filter_list_item_padding_start"
+        android:paddingRight="?android:attr/scrollbarSize"
+        android:paddingStart="@dimen/contact_filter_list_item_padding_start"
+        android:paddingEnd="?android:attr/scrollbarSize">
+
+        <RelativeLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="6dip"
+            android:layout_marginEnd="6dip"
+            android:layout_marginTop="6dip"
+            android:layout_marginBottom="6dip"
+            android:layout_weight="1"
+            android:duplicateParentState="true"
+        >
+
+            <TextView
+                android:id="@android:id/text1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:singleLine="true"
+                android:ellipsize="marquee"
+                android:textAppearance="?android:attr/textAppearanceListItem"
+                android:textColor="@color/account_filter_text_color"
+                android:duplicateParentState="true"
+            />
+
+            <TextView
+                android:id="@android:id/text2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@android:id/text1"
+                android:layout_alignLeft="@android:id/text1"
+                android:layout_alignStart="@android:id/text1"
+                android:maxLines="2"
+                android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+                android:textColor="@color/account_filter_text_color"
+                android:duplicateParentState="true"
+            />
+
+        </RelativeLayout>
+
+        <CheckBox
+            android:id="@android:id/checkbox"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:focusable="false"
+            android:clickable="false"
+            android:gravity="center_vertical"
+            android:orientation="vertical"
+            android:duplicateParentState="true"
+        />
+
+    </LinearLayout>
+
+    <View
+        android:id="@+id/adapter_divider_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/custom_filter_divider" />
+
+</LinearLayout>
diff --git a/res-common/layout/default_account_checkbox.xml b/res-common/layout/default_account_checkbox.xml
new file mode 100644
index 0000000..9a1a450
--- /dev/null
+++ b/res-common/layout/default_account_checkbox.xml
@@ -0,0 +1,36 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/default_account_checkbox_layout"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="4dp"
+    android:orientation="vertical">
+    <CheckBox
+        android:id="@+id/default_account_checkbox_view"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingStart="15dip"
+        android:layout_marginLeft="13dip"
+        android:layout_marginBottom="20dip"
+        android:gravity="center"
+        android:textAlignment="viewStart"
+        android:text="@string/set_default_account"
+        android:textColor="@color/dialtacts_secondary_text_color"
+        />
+</LinearLayout>
\ No newline at end of file
diff --git a/res-common/layout/dialog_call_subject.xml b/res-common/layout/dialog_call_subject.xml
new file mode 100644
index 0000000..d6365c2
--- /dev/null
+++ b/res-common/layout/dialog_call_subject.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/transparent"
+    android:id="@+id/call_subject_dialog"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:layout_width="match_parent">
+
+        <!-- The call subject dialog will be centered in the space above the subject list. -->
+        <LinearLayout
+            android:id="@+id/dialog_view"
+            android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:clickable="true"
+            android:theme="@android:style/Theme.Material.Light.Dialog"
+            android:elevation="16dp"
+            android:layout_centerInParent="true"
+            android:background="@drawable/dialog_background_material">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:layout_marginStart="@dimen/call_subject_dialog_margin"
+                android:layout_marginEnd="@dimen/call_subject_dialog_margin"
+                android:layout_marginTop="@dimen/call_subject_dialog_margin">
+
+                <QuickContactBadge
+                    android:id="@+id/contact_photo"
+                    android:layout_width="@dimen/call_subject_dialog_contact_photo_size"
+                    android:layout_height="@dimen/call_subject_dialog_contact_photo_size"
+                    android:layout_gravity="top"
+                    android:focusable="true"
+                    android:layout_marginEnd="@dimen/call_subject_dialog_margin" />
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:gravity="center_vertical">
+
+                    <TextView
+                        android:id="@+id/name"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/dialtacts_primary_text_color"
+                        android:textSize="@dimen/call_subject_dialog_secondary_text_size"
+                        android:singleLine="true" />
+
+                    <TextView
+                        android:id="@+id/number"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:layout_marginTop="@dimen/call_subject_dialog_between_line_margin"
+                        android:textColor="@color/dialtacts_secondary_text_color"
+                        android:textSize="@dimen/call_subject_dialog_secondary_text_size"
+                        android:singleLine="true" />
+                </LinearLayout>
+            </LinearLayout>
+
+            <EditText
+                android:id="@+id/call_subject"
+                android:hint="@string/call_subject_hint"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:layout_gravity="top"
+                android:textColor="@color/dialtacts_secondary_text_color"
+                android:textSize="@dimen/call_subject_dialog_secondary_text_size"
+                android:gravity="top"
+                android:background="@null"
+                android:layout_marginTop="@dimen/call_subject_dialog_edit_spacing"
+                android:layout_marginStart="@dimen/call_subject_dialog_margin"
+                android:layout_marginEnd="@dimen/call_subject_dialog_margin"
+                />
+
+            <TextView
+                android:id="@+id/character_limit"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/dialtacts_secondary_text_color"
+                android:textSize="@dimen/call_subject_dialog_secondary_text_size"
+                android:singleLine="true"
+                android:layout_marginStart="@dimen/call_subject_dialog_margin"
+                android:layout_marginEnd="@dimen/call_subject_dialog_margin"
+                android:layout_marginTop="@dimen/call_subject_dialog_margin"
+                android:layout_marginBottom="@dimen/call_subject_dialog_margin"/>
+
+            <View
+                android:layout_width="fill_parent"
+                android:layout_height="1dp"
+                android:background="@color/call_subject_divider"/>
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="@dimen/call_subject_dialog_margin"
+                android:layout_marginEnd="@dimen/call_subject_dialog_margin"
+                android:layout_marginTop="@dimen/call_subject_dialog_margin"
+                android:layout_marginBottom="@dimen/call_subject_dialog_margin">
+
+                <ImageView
+                    android:id="@+id/history_button"
+                    android:layout_width="25dp"
+                    android:layout_height="25dp"
+                    android:src="@drawable/ic_history_white_drawable_24dp"
+                    android:tint="@color/call_subject_history_icon"
+                    android:layout_alignParentStart="true"
+                    android:layout_centerVertical="true" />
+
+                <TextView
+                    android:id="@+id/send_and_call_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/send_and_call_button"
+                    android:textColor="@color/call_subject_button"
+                    android:textSize="@dimen/call_subject_dialog_secondary_text_size"
+                    android:singleLine="true"
+                    android:layout_alignParentEnd="true"
+                    android:layout_centerVertical="true" />
+
+            </RelativeLayout>
+        </LinearLayout>
+    </RelativeLayout>
+    <!-- The subject list is pinned to the bottom of the screen. -->
+    <ListView
+        android:id="@+id/subject_list"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:layout_below="@id/dialog_view"
+        android:background="@color/call_subject_history_background"
+        android:divider="@null"
+        android:elevation="8dp" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res-common/layout/dialog_title.xml b/res-common/layout/dialog_title.xml
new file mode 100644
index 0000000..b88f47c
--- /dev/null
+++ b/res-common/layout/dialog_title.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingTop="18dp"
+    android:paddingStart="24dp"
+    android:paddingEnd="24dp"
+    android:textSize="20sp"
+    android:textColor="@color/contacts_text_color"
+    android:fontFamily="sans-serif-medium"
+    android:ellipsize="end"
+/>
\ No newline at end of file
diff --git a/res-common/layout/directory_header.xml b/res-common/layout/directory_header.xml
new file mode 100644
index 0000000..3e41aa7
--- /dev/null
+++ b/res-common/layout/directory_header.xml
@@ -0,0 +1,55 @@
+<?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.
+-->
+
+<!-- Layout used for list section separators. -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    style="@style/DirectoryHeader"
+    android:id="@+id/directory_header"
+    android:background="?attr/contact_browser_background"
+    android:paddingLeft="@dimen/directory_header_left_padding"
+    android:paddingRight="?attr/list_item_padding_right"
+    android:paddingStart="@dimen/directory_header_left_padding"
+    android:paddingEnd="?attr/list_item_padding_right"
+    android:paddingTop="@dimen/directory_header_extra_top_padding"
+    android:paddingBottom="@dimen/directory_header_extra_bottom_padding"
+    android:minHeight="@dimen/list_section_divider_min_height"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" >
+    <TextView
+        android:id="@+id/label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="@style/DirectoryHeaderStyle"
+        android:singleLine="true"
+        android:textAlignment="viewStart" />
+    <TextView
+        android:id="@+id/display_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="8dp"
+        android:textAppearance="@style/DirectoryHeaderStyle"
+        android:singleLine="true"
+        android:textAlignment="viewStart" />
+    <TextView
+        android:id="@+id/count"
+        android:paddingTop="1dip"
+        android:layout_width="0dip"
+        android:layout_height="wrap_content"
+        android:gravity="end"
+        android:singleLine="true"
+        android:textAppearance="@style/DirectoryHeaderStyle" />
+</LinearLayout>
diff --git a/res-common/layout/licenses.xml b/res-common/layout/licenses.xml
new file mode 100644
index 0000000..66d4f46
--- /dev/null
+++ b/res-common/layout/licenses.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2015 Google Inc. All Rights Reserved. -->
+
+<WebView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/webview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+</WebView>
\ No newline at end of file
diff --git a/res-common/layout/list_separator.xml b/res-common/layout/list_separator.xml
new file mode 100644
index 0000000..80abacb
--- /dev/null
+++ b/res-common/layout/list_separator.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/title"
+    android:textColor="@color/frequently_contacted_title_color"
+    android:paddingLeft="16dip"
+    android:paddingStart="16dip"
+    android:paddingRight="16dip"
+    android:paddingEnd="16dip"
+    android:paddingBottom="15dip"
+    android:paddingTop="16dip"
+    android:textStyle="bold"
+    android:textSize="@dimen/frequently_contacted_title_text_size"/>
diff --git a/res-common/layout/search_bar_expanded.xml b/res-common/layout/search_bar_expanded.xml
new file mode 100644
index 0000000..ecadbd1
--- /dev/null
+++ b/res-common/layout/search_bar_expanded.xml
@@ -0,0 +1,62 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/search_box_expanded"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal"
+    android:gravity="center_vertical"
+    android:visibility="gone" >
+
+    <ImageButton
+        android:id="@+id/search_back_button"
+        android:layout_width="@dimen/search_box_icon_size"
+        android:layout_height="@dimen/search_box_icon_size"
+        android:layout_marginEnd="@dimen/search_box_navigation_icon_margin"
+        android:src="@drawable/ic_back_arrow"
+        android:background="?attr/selectableItemBackgroundBorderless"
+        android:contentDescription="@string/action_menu_back_from_search"
+        android:tint="@color/actionbar_background_color" />
+
+    <android.widget.AutoCompleteTextView
+        android:id="@+id/search_view"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/search_box_icon_size"
+        android:layout_weight="1"
+        android:layout_marginLeft="@dimen/search_box_text_left_margin"
+        android:textSize="@dimen/search_text_size"
+        android:fontFamily="@string/search_font_family"
+        android:textColor="@color/searchbox_text_color"
+        android:textColorHint="@color/searchbox_hint_text_color"
+        android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
+        android:background="@null"
+        android:inputType="textFilter"
+        android:singleLine="true"
+        android:imeOptions="flagNoExtractUi" />
+
+    <ImageView
+        android:id="@+id/search_close_button"
+        android:layout_height="@dimen/search_box_close_icon_size"
+        android:layout_width="@dimen/search_box_close_icon_size"
+        android:padding="@dimen/search_box_close_icon_padding"
+        android:src="@drawable/ic_close_black_24dp"
+        android:clickable="true"
+        android:background="?attr/selectableItemBackgroundBorderless"
+        android:contentDescription="@string/description_clear_search"
+        android:alpha="@dimen/close_icon_alpha" />
+
+</LinearLayout>
diff --git a/res-common/layout/select_account_list_item.xml b/res-common/layout/select_account_list_item.xml
new file mode 100644
index 0000000..0ba4336
--- /dev/null
+++ b/res-common/layout/select_account_list_item.xml
@@ -0,0 +1,52 @@
+<?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.
+-->
+
+<!-- Layout of a single item in the InCallUI Account Chooser Dialog. -->
+<view class="com.android.contacts.common.widget.ActivityTouchLinearLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="8dp" >
+
+    <ImageView android:id="@+id/icon"
+               android:layout_width="48dp"
+               android:layout_height="48dp"
+               android:scaleType="center" />
+
+    <LinearLayout
+              android:id="@+id/text"
+              android:gravity="start|center_vertical"
+              android:layout_marginLeft="8dp"
+              android:layout_width="0dp"
+              android:layout_weight="1"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+         <TextView android:id="@+id/label"
+                   android:textAppearance="?android:attr/textAppearanceMedium"
+                   android:textColor="@color/dialtacts_primary_text_color"
+                   android:includeFontPadding="false"
+                   android:layout_width="match_parent"
+                   android:layout_height="wrap_content" />
+         <TextView android:id="@+id/number"
+                   android:textAppearance="?android:attr/textAppearanceSmall"
+                   android:includeFontPadding="false"
+                   android:layout_width="match_parent"
+                   android:layout_height="wrap_content"
+                   android:visibility="gone" />
+    </LinearLayout>
+
+</view>
diff --git a/res-common/layout/select_dialog_item.xml b/res-common/layout/select_dialog_item.xml
new file mode 100644
index 0000000..0c524fd
--- /dev/null
+++ b/res-common/layout/select_dialog_item.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!--
+  List item in the pop-up window that appears when tapping a contact's photo
+  in the contact editor. This is similar to the framework's select_dialog_item_material.xml layout
+  except the text appearance is medium and the padding is set to match the material spec.
+-->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/text1"
+    android:layout_width="match_parent"
+    android:layout_height="48dp"
+    android:textAlignment="viewStart"
+    android:textColor="@color/contacts_text_color"
+    android:textSize="16sp"
+    android:gravity="center_vertical"
+    android:paddingStart="24dip"
+    android:paddingEnd="24dip"
+    android:ellipsize="marquee" />
\ No newline at end of file
diff --git a/res-common/layout/unread_count_tab.xml b/res-common/layout/unread_count_tab.xml
new file mode 100644
index 0000000..783f1c1
--- /dev/null
+++ b/res-common/layout/unread_count_tab.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/view_pager_tab_background">
+    <!-- The tab icon -->
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true" />
+    <TextView
+        android:id="@+id/count"
+        android:background="@drawable/unread_count_background"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/tab_unread_count_background_size"
+        android:gravity="center"
+        android:minWidth="@dimen/tab_unread_count_background_size"
+        android:layout_marginStart="@dimen/tab_unread_count_margin_left"
+        android:layout_marginTop="@dimen/tab_unread_count_margin_top"
+        android:layout_toEndOf="@id/icon"
+        android:paddingLeft="@dimen/tab_unread_count_text_padding"
+        android:paddingRight="@dimen/tab_unread_count_text_padding"
+        android:textAlignment="center"
+        android:textSize="@dimen/tab_unread_count_text_size"
+        android:textColor="@color/tab_accent_color"
+        android:fontFamily="sans-serif-medium"
+        android:importantForAccessibility="no" />
+</RelativeLayout>
diff --git a/res-common/values-af-sw600dp/strings.xml b/res-common/values-af-sw600dp/strings.xml
new file mode 100644
index 0000000..e8d26c2
--- /dev/null
+++ b/res-common/values-af-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Toestel"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Daar is geen kontakte wat uitgevoer kan word nie. As jy wel kontakte op jou tablet het, laat sommige dataverskaffers dalk nie toe dat die kontakte van die tablet af uitgevoer word nie."</string>
+</resources>
diff --git a/res-common/values-af/strings.xml b/res-common/values-af/strings.xml
new file mode 100644
index 0000000..17b3358
--- /dev/null
+++ b/res-common/values-af/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teks gekopieer"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopieer na knipbord"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Bel <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Bel huis"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Bel selfoon"</string>
+    <string name="call_work" msgid="8299062439076337075">"Bel werk"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Bel werkfaks"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Bel huisfaks"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Bel roeper"</string>
+    <string name="call_other" msgid="4472141328347894937">"Bel"</string>
+    <string name="call_callback" msgid="687494744634190411">"Bel terugbel"</string>
+    <string name="call_car" msgid="9078083109758282133">"Bel motor"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Bel maatskappy, hoofnommer"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Bel ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Bel hoofnommer"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Bel faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Bel radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Bel teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Bel TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Bel werkselfoon"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Bel werkroeper"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Bel <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Bel MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Bel)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS huis"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS selfoon"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS werk"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS werkfaks"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS huisfaks"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS roeper"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS terugbel"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS motor"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS maatskappy, hoofnommer"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS hoofnommer"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS werkselfoon"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS werkroeper"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Boodskap)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Maak video-oproep"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vee gereeld-gekontaktes uit?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Jy gaan die gereeld gekontak-lys in die Kontakte- en Foon-program uitvee en e-posprogramme dwing om jou adresvoorkeure van nuuts af te leer."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Vee tans gereeld-gekontaktes uit..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Beskikbaar"</string>
+    <string name="status_away" msgid="6267905184545881094">"Weg"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Besig"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakte"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Ander"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Gids"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Werkgids"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Alle kontakte"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Soek tans…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Meer as <xliff:g id="COUNT">%d</xliff:g> gevind."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Geen kontakte nie"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> gevind</item>
+      <item quantity="one">1 gevind</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Vinnige kontak vir <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Geen naam nie)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Gereeld gekontak"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Bekyk kontak"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Alle kontakte met foonnommers"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Werkprofielkontakte"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Bekyk opdaterings"</string>
+    <string name="account_phone" msgid="325867897209266837">"Toestel"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Naam"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Bynaam"</string>
+    <string name="full_name" msgid="885420216812981202">"Naam"</string>
+    <string name="name_given" msgid="4153709115654909377">"Voornaam"</string>
+    <string name="name_family" msgid="5317387657540738981">"Van"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Naamvoorvoegsel"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Middelnaam"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Naamagtervoegsel"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetiese naam"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetiese voornaam"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetiese middelnaam"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetiese van"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Foon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-pos"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adres"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisasie"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Verhouding"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Spesiale datum"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS-boodskap"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adres"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Maatskappy"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titel"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Webwerf"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etikette"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-postuis"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-pos mobiel"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-pos werk"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-pos"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-pos <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-pos"</string>
+    <string name="postal_street" msgid="881349814077356134">"Straat"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Posbus"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Buurt"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Stad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Staat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poskode"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Bekyk huisadres"</string>
+    <string name="map_work" msgid="9015981646907637207">"Bekyk werkadres"</string>
+    <string name="map_other" msgid="55098598855607997">"Bekyk adres"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Bekyk <xliff:g id="CUSTOM">%s</xliff:g>-adres"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Klets met AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Klets met Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Klets met Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Klets met Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Klets met QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Klets met Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Klets met ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Klets met Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Klets"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"vee uit"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Vou naamvelde uit of in"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Vou fonetiese naamvelde uit of in"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Alle kontakte"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Gester"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Pasmaak"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontak"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Alle ander kontakte"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Alle kontakte"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Verwyder sinkroniseergroep"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Voeg sinkroniseergroep by"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Meer groepe"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"As jy \"<xliff:g id="GROUP">%s</xliff:g>\" uit sinkronisering verwyder, sal dit ook enige ongegroepeerde kontakte uit sinkronisering verwyder."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Stoor tans vertoonopsies"</string>
+    <string name="menu_done" msgid="32470053723443112">"Klaar"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Kanselleer"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Gepasmaakte aansig"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Stoor ingevoerde kontakte in:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Voer van SIM-kaart af in"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Voer in vanaf SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Voer in vanaf SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Voer in vanaf .vcf-lêer"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Kanselleer invoer van <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Kanselleer uitvoer van <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Kon nie vCard invoer/uitvoer kanselleer nie"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Onbekende fout."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Kon nie \"<xliff:g id="FILE_NAME">%s</xliff:g>\" oopmaak nie: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Kon nie die uitvoerder aktiveer nie: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Daar is geen uitvoerbare kontak nie."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Jy het \'n vereiste toestemming gedeaktiveer."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"\'n Fout het voorgekom tydens uitvoer: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Vereiste lêernaam is te lank (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/U-fout"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nie genoeg geheue nie. Die lêer is dalk te groot."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Kon nie vCard ontleed nie weens onverwagte rede."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Die formaat word nie ondersteun nie."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Kon nie meta-inligting van gegewe vCard-lêer(s) versamel nie."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Een of meer lêers kon nie ingevoer word nie (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Klaar met uitvoer van <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Het kontakte klaar uitgevoer."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontakte is klaar uitgevoer; klik die kennisgewing om kontakte te deel."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tik om kontakte te deel."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Uitvoer van <xliff:g id="FILENAME">%s</xliff:g> is gekanselleer."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Voer kontakdata uit"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontakdata word tans uitgevoer."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Kon nie databasis-inligting kry nie"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Daar is geen kontakte wat uitgevoer kan word nie. As jy kontakte op jou foon het, kan sommige dataverskaffers dalk nie toelaat dat die foon se kontakte uitgevoer word nie."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Die vCard-opsteller het nie behoorlik begin nie."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Kon nie uitvoer nie"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Die kontakdata is nie uitgevoer nie.\nRede: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Voer tans <xliff:g id="NAME">%s</xliff:g> in"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Kon nie vCard-data lees nie"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lees van vCard-data gekanselleer"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Klaar met invoer van vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Invoer van <xliff:g id="FILENAME">%s</xliff:g> gekanselleer"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> sal binnekort ingevoer word."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Die lêer sal binnekort ingevoer word."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard invoerversoek is verwerp. Probeer asseblief later weer."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> sal binnekort uitgevoer word."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Die lêer sal binnekort uitgevoer word."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontakte sal binnekort uitgevoer word."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard uitvoerversoek is verwerp. Probeer asseblief later weer."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontak"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Kas tans vCard(s) na die plaaslike tydelike berging. Die werklike invoer sal binnekort begin."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Kon nie vCard invoer nie."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontak ontvang via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Voer kontakte uit?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Kas tans"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Voer <xliff:g id="TOTAL_NUMBER">%s</xliff:g><xliff:g id="CURRENT_NUMBER">%s</xliff:g> in: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Voer uit na .vcf-lêer"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sorteer volgens"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Voornaam"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Van"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Naamformaat"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Voornaam eerste"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Van eerste"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Rekeninge"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Verstekrekening vir nuwe kontakte"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinkroniseer kontakmetadata [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinkroniseer kontakmetadata"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"My inligting"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Stel jou profiel op"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Meer oor Kontakte"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Instellings"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Deel sigbare kontakte"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Kon nie sigbare kontakte deel nie."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Deel gunstelingkontakte"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Deel alle kontakte"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kon nie kontakte deel nie."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Voer kontakte in/uit"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Voer kontakte in"</string>
+    <string name="share_error" msgid="665756457151793108">"Hierdie kontak kan nie gedeel word nie."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Daar is geen kontakte om te deel nie."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Soek"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakte om te wys"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakte om te wys"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definieer gepasmaakte aansig"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Stoor"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Deursoek kontakte"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Gunstelinge"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Geen kontakte nie."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Vee dikwels-gebruiktes uit"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Kies SIM-kaart"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Bestuur rekeninge"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Voer in/uit"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Geblokkeerde nommers"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"hou op soek"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Vee soektog uit"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opsies vir wys van kontakte"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Rekening"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Gebruik dit altyd vir oproepe"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Bel met"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Oproep met \'n nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Tik \'n nota om saam met oproep te stuur …"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"STUUR EN BEL"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ongeleeste items. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> ongeleeste item. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Bouweergawe"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Oopbronlisensies"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Lisensiebesonderhede vir oopbronsagteware"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privaatheidsbeleid"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Diensbepalings"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Oopbronlisensies"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Kon nie die URL oopmaak nie."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> is gemerk"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> is nie gemerk nie"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Maak video-oproep"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Vee uit"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellips"</string>
+</resources>
diff --git a/res-common/values-am-sw600dp/strings.xml b/res-common/values-am-sw600dp/strings.xml
new file mode 100644
index 0000000..65273ec
--- /dev/null
+++ b/res-common/values-am-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"መሣሪያ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ወደ ውጭ ሊላኩ የሚችሉ እውቂያዎች የሉም። በጡባዊዎ ውስጥ እውቂያዎች ካለዎት አንዳንድ የውሂብ አቅራቢዎች እውቂያዎቹ ከጡባዊው ወደ ውጭ እንዲላኩ አይፈቅዱም።"</string>
+</resources>
diff --git a/res-common/values-am/strings.xml b/res-common/values-am/strings.xml
new file mode 100644
index 0000000..54680f4
--- /dev/null
+++ b/res-common/values-am/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"ፅሁፍ ተገልብጧል"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ወደ ቅንጥብ ሰሌዳ ቅዳ"</string>
+    <string name="call_custom" msgid="2786306789889210756">"ለ<xliff:g id="CUSTOM">%s</xliff:g> ይደውሉ"</string>
+    <string name="call_home" msgid="1479549630992276827">"ለቤት ይደውሉ"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"ለተንቀሳቃሽ ስልክ ይደውሉ"</string>
+    <string name="call_work" msgid="8299062439076337075">"ለሥራ ይደውሉ"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"ለስራ ፋክስ ይደውሉ"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ለቤት ፋክስ ይደውሉ"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ለምልክት ማድረጊያ ይደውሉ"</string>
+    <string name="call_other" msgid="4472141328347894937">"ይደውሉ"</string>
+    <string name="call_callback" msgid="687494744634190411">"የጥሪ መልስ ይደውሉ"</string>
+    <string name="call_car" msgid="9078083109758282133">"ለመኪና ይደውሉ"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ለዋናው የኩባኒያ ይደውሉ"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ለISDN ይደውሉ"</string>
+    <string name="call_main" msgid="4640261071249938558">"ለዋናው ይደውሉ"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ለፋክስ ይደውሉ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ለሬዲዮ ይደውሉ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ለቴሌክስ ይደውሉ"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"ለTTY/TDD ይደውሉ"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"ለየስራ ተንቀሳቃሽ ስልክ ይደውሉ"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ለየሥራ ጥሪ ምልክት ማድረጊያ ይደውሉ"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"ለ<xliff:g id="ASSISTANT">%s</xliff:g> ይደውሉ"</string>
+    <string name="call_mms" msgid="8998771923464696960">"ለኤም ኤም ኤስ ይደውሉ"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ጥሪ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"ለ<xliff:g id="CUSTOM">%s</xliff:g> ጽሑፍ ይላኩ"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ለቤት ጽሑፍ ይላኩ"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ለተንቀሳቃሽ ስልክ ጽሑፍ ይላኩ"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ለስራ ጽሑፍ ይላኩ"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ለስራ ፋክስ ጽሑፍ ይላኩ"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ለቤት ፋክስ ጽሑፍ ይላኩ"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ለምልክት ማድረጊያ ጽሑፍ ይላኩ"</string>
+    <string name="sms_other" msgid="910895193552957097">"ጽሑፍ ይላኩ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ለጥሪ መልስ ጽሑፍ ይላኩ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ለመኪና ጽሑፍ ይላኩ"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ለዋናው ኩባኒያ ጽሑፍ ይላኩ"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ለISDN ጽሑፍ ይላኩ"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ለዋናው ጽሑፍ ይላኩ"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ለፋክስ ጽሑፍ ይላኩ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ለሬዲዮ ጽሑፍ ይላኩ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ለቴለክስ ጽሑፍ ይላኩ"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"ለTTY/TDD ጽሑፍ ይላኩ"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ለስራ ተንቀሳቃሽ ስልክ ጽሑፍ ይላኩ"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ለሥራ ምልክት ማድረጊያ ጽሑፍ ይላኩ"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"ለ<xliff:g id="ASSISTANT">%s</xliff:g> ጽሑፍ ይላኩ"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"ለኤም ኤም ኤስ ጽሑፍ ይላኩ"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (መልዕክት)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"የቪዲዮ ጥሪ ያድርጉ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"በተደጋጋሚ የተገኙ ይጽዱ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"በእውቂያዎች እና በስልክ መተግበሪያዎች ውስጥ በተደጋጋሚ ያገኟቸውን ዝርዝር አጽድተው የኢሜይል መተግበሪያዎች ምርጫዎችዎን ከባዶ ተነስተው እንዲያውቁ ያስገድዱዋቸዋል።"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"በተደጋጋሚ የተገኙትን በማጽዳት ላይ…"</string>
+    <string name="status_available" msgid="4832569677396634846">"የሚገኝ"</string>
+    <string name="status_away" msgid="6267905184545881094">"ወጣ ብሏል"</string>
+    <string name="status_busy" msgid="7111912905211403545">"ተይዟል"</string>
+    <string name="contactsList" msgid="7140022347217602605">"ዕውቂያዎች"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"ሌላ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ማውጫ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"የሥራ ስልክ ማውጫ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"ሁሉም እውቂያዎች"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"በመፈለግ ላይ…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"ከ<xliff:g id="COUNT">%d</xliff:g> በላይ ተገኝተዋል።"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"ምንም እውቂያዎች የሉም"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ተገኝቷል</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ተገኝተዋል</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"ለ<xliff:g id="NAME">%1$s</xliff:g> ፈጣን ዕውቂያ"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ስም የለም)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"በተደጋጋሚ የተገኙ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"ዕውቂያ ይመልከቱ"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"የስልክ ቁጥር ያላቸው ሁሉም ዕውቂያዎች"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"የሥራ መገለጫ ዕውቂያዎች"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"ዝማኔዎችን ይመልከቱ"</string>
+    <string name="account_phone" msgid="325867897209266837">"መሣሪያ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"ስም"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ቅጽል ስም"</string>
+    <string name="full_name" msgid="885420216812981202">"ስም"</string>
+    <string name="name_given" msgid="4153709115654909377">"የመጀመሪያ ስም"</string>
+    <string name="name_family" msgid="5317387657540738981">"የመጨረሻ ስም"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"ቅድመ-ስም"</string>
+    <string name="name_middle" msgid="3951610314424632183">"የመካከለኛ ስም"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"ድህረ-ስም"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"የድምፀ ልሳን ስም"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"የመጀመሪያ ስም ፎነቲክ"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"የድምፀ ልሳን መካከለኛ ስም"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"የመጨረሻ ስም ፎነቲክ"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ስልክ"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ኢሜይል"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"አድራሻ"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ድርጅት"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ግንኙነት"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"ልዩ ቀን"</string>
+    <string name="sms" msgid="8086289395154598654">"የፅሁፍ መልዕክት"</string>
+    <string name="postal_address" msgid="7692926530081579786">"አድራሻ"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"ኩባንያ"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ርዕስ"</string>
+    <string name="label_notes" msgid="3997277594846722699">"ማስታወሻዎች"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ድረ-ገፅ"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ምንም መሰየሚያዎች የሉም።"</string>
+    <string name="email_home" msgid="2230967805906450693">"ለቤት ኢሜይል ይላኩ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ለተንቀሳቃሽ ስልክ ኢሜይል ይላኩ"</string>
+    <string name="email_work" msgid="7065971921227432400">"ለሥራ ኢሜይል ይላኩ"</string>
+    <string name="email_other" msgid="4601881243553289615">"ኢሜይል"</string>
+    <string name="email_custom" msgid="5777583741581538870">"ለ<xliff:g id="CUSTOM">%s</xliff:g> ኢሜይል ይላኩ"</string>
+    <string name="email" msgid="5624424151176351591">"ኢሜይል"</string>
+    <string name="postal_street" msgid="881349814077356134">"መንገድ"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"የፖስታ ሣጥን ቁጥር"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"ሰፈር"</string>
+    <string name="postal_city" msgid="3173008531169519309">"ከተማ"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ግዛት"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ዚፕ ኮድ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"አገር"</string>
+    <string name="map_home" msgid="1221397355014741634">"የቤት አድራሻ ይመልከቱ"</string>
+    <string name="map_work" msgid="9015981646907637207">"የሥራ አድራሻ ይመልከቱ"</string>
+    <string name="map_other" msgid="55098598855607997">"አድራሻ ይመልከቱ"</string>
+    <string name="map_custom" msgid="4943554530347163288">"የ<xliff:g id="CUSTOM">%s</xliff:g> አድራሻ ይመልከቱ"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIMን በመጠቀም ይወያዩ"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Liveን በመጠቀም ይወያዩ"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahooን በመጠቀም ይወያዩ"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skypeን በመጠቀም ይወያዩ"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQን በመጠቀም ይወያዩ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talkን በመጠቀም ይወያዩ"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQን በመጠቀም ይወያዩ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabberን በመጠቀም 271448"</string>
+    <string name="chat" msgid="6297650784873558837">"ውይይት"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ሰርዝ"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"የስም መስኮችን ይዘርጉ ወይም ይሰብስቡ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"የድምፀ ልሳን ስም መስኮችን ይዘርጉ ወይም ይሰብስቡ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"ሁሉም እውቅያዎች"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ኮከብ የተደረገባቸው"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"ያብጁ"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"እውቂያ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"ሌሎች ሁሉም ዕውቂያዎች"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"ሁሉም እውቅያዎች"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"የማመሳሰል ቡድን አስወግድ"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"የማመሳሰል ቡድን ያክሉ"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"ተጨማሪ ቡድኖች…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"«<xliff:g id="GROUP">%s</xliff:g>»ን ከማመሳስሉ ማስወገድ ማናቸውም በቡድን ያልተካተቱ ዕውቅያዎችንም ከማመሳሰሉ ያስወግዳቸዋል።"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"የማሳያ አማራጮችን በማስቀመጥ ላይ…"</string>
+    <string name="menu_done" msgid="32470053723443112">"ተከናውኗል"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"ይቅር"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"ብጁ እይታ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"እንዲመጡ የተደረጉ እውቂያዎችን አስቀምጥ ወደ፦"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"ከሲም ካርድ ያስመጡ"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"ከSIM አስመጣ <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"ከSIM አስመጣ <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"ከ .vcf ፋይል አስመጣ"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"የ<xliff:g id="FILENAME">%s</xliff:g> ወደ ውስጥ ማስመጣት ይቅር?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"የ<xliff:g id="FILENAME">%s</xliff:g> ወደ ውጭ መላክ ይቅር?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard ማስመጣት/ወደ ውጪ ይቅር ማለት አልተቻለም"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"ያልታወቀ ስህተት።"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"«<xliff:g id="FILE_NAME">%s</xliff:g>»ን መክፈት አልተቻለም፦ <xliff:g id="EXACT_REASON">%s</xliff:g>።"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ይህንን ላኪ መጀመር አልተቻለም፦ «<xliff:g id="EXACT_REASON">%s</xliff:g>»"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ምንም ወደ ውጭ መላክ የሚችል ዕውቂያ የለም።"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"አንድ የሚያስፈልግ ፍቃድ አሰናክለዋል።"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"ወደ ውጪ በሚላክበት ጊዜ ስህተት ተከስቷል፦ <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"የተጠየቀው ፋይል ስም በጣም ረጅም ነው  («<xliff:g id="FILENAME">%s</xliff:g>»)።"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"የግብዓት/ውጽዓት ስህተት"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"በቂ ማህደረ ትውስታ የለም። ፋይሉ በጣም ትልቅ ሊሆን ይችላል።"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ባልተጠበቀ ምክንያት vCard መተንተን አልተቻለም።"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ቅርፀቱ አይደገፍም።"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"የተሰጠው(ጡት) vCard ፋይል(ሎች) ዲበ ውሂብ መረጃ መሰብሰብ አልተቻለም።"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"አንድ ወይም ከዚያ በላይ ፋይሎች ማስመጣት አልተቻለም (%s)።"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>ን ወደ ውጪ መላክ ተጠናቅቋል።"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"እውቂያዎችን ወደ ውጪ መላክ ተጠናቅቋል።"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"እውቂያዎችን ወደ ውጭ መላክ ተጠናቅቋል፣ እውቂያዎችን ለማጋራት ማሳወቂያውን ጠቅ ያድርጉ።"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"እውቂያዎችን ለማጋራት መታ ያድርጉ።"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>ን ወደ ውጪ መላክ ተሰርዟል።"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"የዕውቂያ ውሂብ ወደ ውጪ በመላክ ላይ"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"የእውቂያ ውሂብ ወደ ውጭ በመላክ ላይ።"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ውሂብ ጎታ መረጃን ማግኘት አልተቻለም።"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ወደ ውጭ ሊላኩ የሚችሉ እውቅያዎች የሉም። ስልክዎ ውስጥ እውቅያዎች ካሉዎት አንዳንድ የውሂብ አቅራቢዎች እውቂያዎቹ ከስልኩ ወደ ውጭ እንዲላኩ አይፈቅዱም።"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"የvCard  አቀናባሪው በትክክል አልጀመረም።"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ወደ ውጭ መላክ አልተቻለም"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"የዕውቅያ ውሂቡ ወደ ውጭ አልተላከም።\nምክንያት፦«<xliff:g id="FAIL_REASON">%s</xliff:g>»"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g>ን በማስመጣት ላይ"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"የvCard ውሂቡን ማንበብ አልተቻለም"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"የvCard ውሂብ ማንበብ ተሰርዟል"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"የ<xliff:g id="FILENAME">%s</xliff:g> vCard  ማስመጣት ተጠናቅቋል"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"የ<xliff:g id="FILENAME">%s</xliff:g> ማስመጣት ተሰርዟል"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ከትንሽ ጊዜ በኋላ ይመጣል።"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ፋይሉ ከትንሽ ጊዜ በኋላ ይመጣል።"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"የvCard ማስመጣት ጥያቄ ተቀባይነት አላገኘም። ትንሽ ቆይተው ይሞክሩ።"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ከትንሽ ጊዜ በኋላ ወደ ውጪ ይላካል።"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ፋይሉ ትንሽ ቆይቶ ወደ ውጪ ይላካል።"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"እውቂያዎች በቅርቡ ወደ ውጭ ይላካሉ።"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"የvCard ወደ ውጪ መላክ ጥያቄ ተቀባይነት አላገኘም። ትንሽ ቆይተው ይሞከሩ።"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"እውቂያ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(s) ወደ ጊዜያዊ ማከማቻ በመሸጎጥ ላይ ነው። ትክክለኛው ማስመጣቱ በቅርቡ ይጀምራል።"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCardን ማስመጣት አልተቻለም።"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"በNFC የደረሱ ዕውቂያዎች"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"እውቅያዎች ይላኩ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"በመሸጎጥ ላይ"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>ን በማስመጣት ላይ፦ <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"ወደ የ .vcf ፋይል ላክ"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ደርድር በ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"የመጀመሪያ ስም"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"የመጨረሻ ስም"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"የስም ቅርጸት"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"የመጀመሪያ ስም መጀመሪያ"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"የመጨረሻ ስም መጀመሪያ"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"መለያዎች"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"ለአዲስ እውቂያዎች ነባሪ መለያ"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"የእውቂያ ዲበ ውሂብን አሥምር [የሙከራ ስሪት]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"የእውቂያ ዲበ ውሂብን አሥምር"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"የእኔ መረጃ"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"የእርስዎን መገለጫ ያዋቅሩ"</string>
+    <string name="setting_about" msgid="3926137653588942297">"ስለዕውቂያዎች"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ቅንብሮች"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"የሚታዩ እውቂያዎችን አጋራ"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"የሚታዩ እውቂያዎችን ማጋራት አልተሳካም።"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ተወዳጅ እውቂያዎችን አጋራ"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"ሁሉንም እውቂያዎች አጋራ"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"እውቂያዎችን ማጋራት አልተሳካም።"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"ዕውቂያዎች ያስመጡ/ይላኩ"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"እውቅያዎችን ያስመጡ"</string>
+    <string name="share_error" msgid="665756457151793108">"ይህ ዕውቂያ ሊጋራ አይችልም።"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"ምንም የሚጋሩ እውቂያዎች የሉም።"</string>
+    <string name="menu_search" msgid="7464453023659824700">"ይፈልጉ"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"የሚታዩ ዕውቂያዎች"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"የሚታዩ ዕውቂያዎች"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"ብጁ እይታን በይን"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"አስቀምጥ"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"ዕውቅያዎችን ፈልግ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"ተወዳጆች"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"ምንም ዕውቂያዎች የሉም።"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"ተደጋጋሚዎችን አጽዳ"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"ሲም ካርድ ይምረጡ"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"መለያዎች አቀናብር"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ያስመጡ/ወደ ውጪ ይላኩ"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"የታገዱ ቁጥሮች"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"በ<xliff:g id="SOURCE">%1$s</xliff:g> በኩል"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> በ<xliff:g id="SOURCE">%2$s</xliff:g> በኩል"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"መፈለግ አቁም"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ፍለጋን አጽዳ"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"የእውቂያ ማሳያ አማራጮች"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"መለያ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ለጥሪዎች ሁልጊዜ ይህንን ተጠቀም"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ይደውሉ ከዚህ ጋር"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ከማስታወሻ ጋር ደውል"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"ከጥሪ ጋር ለመላክ የማስታወሻ ጽሑፍ ይተይቡ ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ላክ እና ደውል"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>። <xliff:g id="COUNT_3">%2$d</xliff:g> ያልተነበቡ ንጥሎች። </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>። <xliff:g id="COUNT_3">%2$d</xliff:g> ያልተነበቡ ንጥሎች። </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"የግንብ ሥሪት"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"የክፍት ምንጭ ፍቃዶች"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ለነፃ ምንጭ ሶፍትዌሮች የፍቃድ ዝርዝሮች"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"የግላዊነት መመሪያ"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"የአገልግሎት ውል"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"የክፍት ምንጭ ፍቃዶች"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"ዩ አር ኤሉን ለመክፈት አልተሳካም።"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ምልክት ተደርጎበታል"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ምልክት አልተደረገበትም"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"የቪዲዮ ጥሪ አስቀምጥ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ሰርዝ"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"ሶስት ነጥብ"</string>
+</resources>
diff --git a/res-common/values-ar-sw600dp/strings.xml b/res-common/values-ar-sw600dp/strings.xml
new file mode 100644
index 0000000..a53f580
--- /dev/null
+++ b/res-common/values-ar-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"الجهاز"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ليست هناك أية جهات اتصال قابلة للتصدير. إذا كانت لديك جهات اتصال على الجهاز اللوحي، فإن بعض موفري البيانات لا يسمحون بتصدير جهات الاتصال من الجهاز اللوحي."</string>
+</resources>
diff --git a/res-common/values-ar/strings.xml b/res-common/values-ar/strings.xml
new file mode 100644
index 0000000..98e3b54
--- /dev/null
+++ b/res-common/values-ar/strings.xml
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"تم نسخ النص"</string>
+    <string name="copy_text" msgid="3424081789297978355">"نسخ إلى الحافظة"</string>
+    <string name="call_custom" msgid="2786306789889210756">"الاتصال بـ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"الاتصال بهاتف منزلي"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"الاتصال بالجوال"</string>
+    <string name="call_work" msgid="8299062439076337075">"الاتصال بهاتف العمل"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"الاتصال بفاكس العمل"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"الاتصال بفاكس المنزل"</string>
+    <string name="call_pager" msgid="3038080882899955112">"الاتصال بجهاز النداء"</string>
+    <string name="call_other" msgid="4472141328347894937">"اتصال"</string>
+    <string name="call_callback" msgid="687494744634190411">"الاتصال برقم معادوة الاتصال"</string>
+    <string name="call_car" msgid="9078083109758282133">"الاتصال بهاتف السيارة"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"الاتصال بهاتف الشركة الرئيسي"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"‏اتصال بـ ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"الاتصال بالهاتف الرئيسي"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"الاتصال برقم الفاكس"</string>
+    <string name="call_radio" msgid="9055749313292712021">"اتصال بهاتف لاسلكي"</string>
+    <string name="call_telex" msgid="2909886619224843563">"الاتصال بالتلكس"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"‏اتصال بـ TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"الاتصال بجوال العمل"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"الاتصال بجهاز نداء العمل"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"الاتصال بـ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"اتصال بهاتف رسائل الوسائط المتعددة"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (اتصال)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"إرسال رسالة نصية إلى <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"إرسال رسالة نصية إلى هاتف منزلي"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"إرسال رسالة نصية إلى جوال"</string>
+    <string name="sms_work" msgid="3910570578912367742">"إرسال رسالة نصية إلى هاتف العمل"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"إرسال رسالة نصية إلى فاكس العمل"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"إرسال رسالة نصية إلى فاكس المنزل"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"إرسال رسالة نصية إلى جهاز النداء"</string>
+    <string name="sms_other" msgid="910895193552957097">"إرسال رسالة نصية"</string>
+    <string name="sms_callback" msgid="728414485478941361">"إرسال رسالة نصية إلى هاتف معاودة الاتصال"</string>
+    <string name="sms_car" msgid="8543669230270954512">"إرسال رسالة نصية إلى هاتف السيارة"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"إرسال رسالة نصية إلى الهاتف الرئيسي للشركة"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"‏إرسال رسالة نصية إلى ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"إرسال رسالة نصية إلى الهاتف الرئيسي"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"إرسال رسالة نصية إلى فاكس"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"إرسال رسالة نصية إلى هاتف لاسلكي"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"إرسال رسالة نصية إلى هاتف تلكس"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"‏إرسال رسالة نصية إلى TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"إرسال رسالة نصية إلى جوال العمل"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"إرسال رسالة نصية إلى جهاز نداء العمل"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"إرسال رسالة نصية إلى <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"إرسال رسالة نصية إلى هاتف رسائل الوسائط المتعددة"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (رسالة)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"إجراء مكالمة فيديو"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"محو قائمة من يتم الاتصال بهم كثيرًا؟"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"ستمحو قائمة من يتم الاتصال بهم كثيرًا في تطبيقي جهات الاتصال والهاتف، وستفرض على تطبيقات البريد الإلكتروني التعرف على تفضيلات توجيه الرسائل من البداية."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"جارٍ محو قائمة المُتصل بهم كثيرًا…"</string>
+    <string name="status_available" msgid="4832569677396634846">"متاح"</string>
+    <string name="status_away" msgid="6267905184545881094">"بالخارج"</string>
+    <string name="status_busy" msgid="7111912905211403545">"مشغول"</string>
+    <string name="contactsList" msgid="7140022347217602605">"جهات الاتصال"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"غير ذلك"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"الدليل"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"دليل العمل"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"جميع جهات الاتصال"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"جارٍ البحث..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"تم العثور على أكثر من <xliff:g id="COUNT">%d</xliff:g> من جهات الاتصال."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"ليست هناك جهات اتصال"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="zero">لا توجد أية جهة اتصال (<xliff:g id="COUNT">%d</xliff:g>)</item>
+      <item quantity="two">توجد جهتا اتصال (<xliff:g id="COUNT">%d</xliff:g>)</item>
+      <item quantity="few">توجد <xliff:g id="COUNT">%d</xliff:g> جهات اتصال</item>
+      <item quantity="many">توجد <xliff:g id="COUNT">%d</xliff:g> جهة اتصال</item>
+      <item quantity="other">توجد <xliff:g id="COUNT">%d</xliff:g> من جهات الاتصال</item>
+      <item quantity="one">توجد جهة اتصال واحدة</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"اتصال سريع لـ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(بلا اسم)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"يتم الاتصال بها بشكل متكرر"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"عرض جهة الاتصال"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"جميع جهات الاتصال التي لها أرقام هواتف"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"جهات الاتصال للملف الشخصي للعمل"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"عرض التحديثات"</string>
+    <string name="account_phone" msgid="325867897209266837">"الجهاز"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"الاسم"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"اللقب"</string>
+    <string name="full_name" msgid="885420216812981202">"الاسم"</string>
+    <string name="name_given" msgid="4153709115654909377">"الاسم الأول"</string>
+    <string name="name_family" msgid="5317387657540738981">"اسم العائلة"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"بادئة الاسم"</string>
+    <string name="name_middle" msgid="3951610314424632183">"الاسم الأوسط"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"لاحقة الاسم"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"الاسم صوتيًا"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"الاسم الأول صوتيًا"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"الاسم الصوتي الأوسط"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"اسم العائلة صوتيًا"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"الهاتف"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"البريد الإلكتروني"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"العنوان"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"المراسلة الفورية"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"المؤسسة"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"العلاقة"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"تاريخ مميز"</string>
+    <string name="sms" msgid="8086289395154598654">"رسالة نصية"</string>
+    <string name="postal_address" msgid="7692926530081579786">"العنوان"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"الشركة"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"العنوان"</string>
+    <string name="label_notes" msgid="3997277594846722699">"ملاحظات"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"موقع ويب"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"التصنيفات"</string>
+    <string name="email_home" msgid="2230967805906450693">"إرسال رسالة إلكترونية إلى عنوان البريد الإلكتروني للمنزل"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"إرسال رسالة إلكترونية إلى عنوان بريد إلكتروني على الجوال"</string>
+    <string name="email_work" msgid="7065971921227432400">"إرسال رسالة إلكترونية إلى عنوان البريد الإلكتروني للعمل"</string>
+    <string name="email_other" msgid="4601881243553289615">"إرسال رسالة إلكترونية"</string>
+    <string name="email_custom" msgid="5777583741581538870">"البريد الإلكتروني <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"إرسال رسالة إلكترونية"</string>
+    <string name="postal_street" msgid="881349814077356134">"الشارع"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"صندوق البريد"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"منطقة مجاورة"</string>
+    <string name="postal_city" msgid="3173008531169519309">"المدينة"</string>
+    <string name="postal_region" msgid="1695206048198921115">"الولاية"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"الرمز البريدي"</string>
+    <string name="postal_country" msgid="3988452247038791892">"البلد"</string>
+    <string name="map_home" msgid="1221397355014741634">"عرض عنوان المنزل"</string>
+    <string name="map_work" msgid="9015981646907637207">"عرض عنوان العمل"</string>
+    <string name="map_other" msgid="55098598855607997">"عرض العنوان"</string>
+    <string name="map_custom" msgid="4943554530347163288">"عرض عنوان <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"‏الدردشة باستخدام AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"‏الدردشة باستخدام Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"‏الدردشة باستخدام Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"‏الدردشة باستخدام Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"‏الدردشة باستخدام QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"‏الدردشة باستخدام Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"‏الدردشة باستخدام ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"‏الدردشة باستخدام Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"دردشة"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"حذف"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"توسيع أو تصغير حقول الاسم"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"توسيع أو تصغير حقول الاسم الصوتي"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"جميع جهات الاتصال"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"مميّزة بنجمة"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"تخصيص"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"جهة الاتصال"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"جميع جهات الاتصال الأخرى"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"جميع جهات الاتصال"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"إزالة مجموعة متزامنة"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"إضافة مجموعة متزامنة"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"مزيد من المجموعات..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"ستؤدي إزالة \"<xliff:g id="GROUP">%s</xliff:g>\"من المزامنة أيضًا إلى إزالة أية جهات اتصال غير مجمعة من المزامنة."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"جارٍ حفظ خيارات العرض..."</string>
+    <string name="menu_done" msgid="32470053723443112">"تم"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"إلغاء"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"عرض مُخصص"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"حفظ جهات الاتصال المستوردة إلى:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"‏استيراد من شريحة SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"‏استيراد من شريحة SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"‏استيراد من شريحة SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"‏الاستيراد من ملف vcf."</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"هل تريد إلغاء استيراد <xliff:g id="FILENAME">%s</xliff:g>؟"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"هل تريد إلغاء تصدير <xliff:g id="FILENAME">%s</xliff:g>؟"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"‏تعذر إلغاء استيراد/تصدير vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"خطأ غير معروف."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"تعذر فتح \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"تعذر بدء المُصدر: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ليست هناك جهة اتصال قابلة للتصدير."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"لقد عطلت إذنًا مطلوبًا."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"حدث خطأ أثناء التصدير: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"اسم الملف المطلوب أطول مما يجب (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"‏خطأ I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"الذاكرة غير كافية. ربما يكون الملف أكبر مما يجب."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"‏تعذر تحليل vCard لسبب غير متوقع."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"التنسيق غير معتمد."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"‏تعذر جمع معلومات وصفية حول ملفات vCard المحددة."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"‏تعذر استيراد ملف أو أكثر (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"تم الانتهاء من تصدير <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"تم الانتهاء من تصدير جهات الاتصال."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"تم الانتهاء من تصدير جهات الاتصال، انقر على الإشعار لمشاركة جهات الاتصال."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"انقر لمشاركة جهات الاتصال."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"تم إلغاء تصدير <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"تصدير بيانات جهة الاتصال"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"يجري تصدير بيانات جهات الاتصال."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"تعذر الحصول على معلومات قاعدة البيانات."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ليست هناك أية جهات اتصال قابلة للتصدير. إذا كانت لديك جهات اتصال على هاتفك، فإن بعض موفري البيانات لا يسمحون بتصدير جهات الاتصال من الهاتف."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"‏لم يبدأ مؤلف vCard بشكل صحيح."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"تعذر التصدير"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"لم يتم تصدير بيانات جهة الاتصال.\nالسبب: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"جارٍ استيراد <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"‏تعذرت قراءة بيانات vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"‏تم إلغاء قراءة بيانات vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"‏تم الانتهاء من استيراد ملف vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"تم إلغاء استيراد <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"سيتم استيراد <xliff:g id="FILENAME">%s</xliff:g> بعد قليل."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"سيتم استيراد الملف بعد قليل."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"‏تم رفض طلب استيراد vCard. أعد المحاولة لاحقًا."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"سيتم تصدير <xliff:g id="FILENAME">%s</xliff:g> بعد قليل."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"سيتم تصدير الملف بعد قليل."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"سيتم تصدير جهات الاتصال قريبًا."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"‏تم رفض طلب تصدير vCard. أعد المحاولة لاحقًا."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"جهة اتصال"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"‏يجري تخزين ملفات vCard مؤقتًا على وحدة تخزين مؤقتة محلية. سيبدأ الاستيراد الفعلي قريبًا."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"‏تعذر استيراد vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"‏استلام ج اتص.NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"تصدير جهات الاتصال؟"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"تخزين مؤقت"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"جارٍ استيراد <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"‏تصدير إلى ملف vcf."</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ترتيب بحسب"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"الاسم الأول"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"اسم العائلة"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"تنسيق الاسم"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"الاسم الأول أولاً"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"اسم العائلة /الاسم الأول"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"الحسابات"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"الحساب الافتراضي لجهات الاتصال الجديدة"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"‏مزامنة البيانات الوصفية لجهات الاتصال [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"مزامنة البيانات الوصفية لجهات الاتصال"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"معلوماتي"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"إعداد الملف الشخصي"</string>
+    <string name="setting_about" msgid="3926137653588942297">"حول جهات الاتصال"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"الإعدادات"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"مشاركة جهات الاتصال المرئية"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"أخفقت مشاركة جهات الاتصال المرئية."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"مشاركة جهات الاتصال المفضلة"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"مشاركة جميع جهات الاتصال"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"أخفقت مشاركة جهات الاتصال."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"استيراد/تصدير جهات اتصال"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"استيراد جهات الاتصال"</string>
+    <string name="share_error" msgid="665756457151793108">"لا يمكن مشاركة جهة الاتصال هذه."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"ليست هناك جهات اتصال لمشاركتها."</string>
+    <string name="menu_search" msgid="7464453023659824700">"البحث"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"جهات الاتصال المعروضة"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"جهات الاتصال المعروضة"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"تحديد العرض المُخصص"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"حفظ"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"البحث في جهات الاتصال"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"المفضلة"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"ليست هناك جهات اتصال."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"محو قائمة من يتصل بهم كثيرًا"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"‏تحديد شريحة SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"إدارة الحسابات"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"استيراد/تصدير"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"الأرقام المحظورة"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"عبر <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> عبر <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"إيقاف البحث"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"محو البحث"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"خيارات عرض جهات الاتصال"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"الحساب"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"استخدام هذا للمكالمات دائمًا"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"الاتصال باستخدام"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"مكالمة مع ملاحظة"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"اكتب ملاحظة لإرسالها مع المكالمة ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"الإرسال والاتصال"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="zero"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> unread items. </item>
+      <item quantity="two"> <xliff:g id="TITLE_2">%1$s</xliff:g>. عنصران (<xliff:g id="COUNT_3">%2$d</xliff:g>) غير مقروءين </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> عناصر غير مقروءة. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> عنصرًا غير مقروء. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> من العناصر غير المقروءة. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. عنصر واحد (<xliff:g id="COUNT_1">%2$d</xliff:g>) غير مقروء. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"نسخة الإصدار"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"تراخيص البرامج مفتوحة المصدر"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"تفاصيل الترخيص للبرامج مفتوحة المصدر"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"سياسة الخصوصية"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"بنود الخدمة"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"تراخيص البرامج مفتوحة المصدر"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"‏فشل فتح عنوان URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"تم تحديد <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"لم يتم تحديد <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"إجراء مكالمة فيديو"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"حذف"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"علامة حذف"</string>
+</resources>
diff --git a/res-common/values-az-rAZ-sw600dp/strings.xml b/res-common/values-az-rAZ-sw600dp/strings.xml
new file mode 100644
index 0000000..b3852ff
--- /dev/null
+++ b/res-common/values-az-rAZ-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Cihaz"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Eksport oluna bilən kontakt yoxdur. Əgər planşetinizdə kontakt varsa, bəzi data provayderləri kontaktların telefondan kənara eksport olunmasına icazə verməyə bilər."</string>
+</resources>
diff --git a/res-common/values-az-rAZ/strings.xml b/res-common/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..c9d2e56
--- /dev/null
+++ b/res-common/values-az-rAZ/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Mətn kopyalandı"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Mübadilə buferinə köçürün"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Zəng <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Ev zəngi"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Mobil zəng"</string>
+    <string name="call_work" msgid="8299062439076337075">"Iş zəngi"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"İş faksına zəng edin"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ev faksına zəng edin"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Peycer zəngi"</string>
+    <string name="call_other" msgid="4472141328347894937">"Zəng"</string>
+    <string name="call_callback" msgid="687494744634190411">"Geriyə zəng"</string>
+    <string name="call_car" msgid="9078083109758282133">"Avtomobil zəngi"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Əsas şirkət zəngi"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN zəng"</string>
+    <string name="call_main" msgid="4640261071249938558">"Əsas zəng"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Faks zəngi"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Radio zəngi"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Teleks zəngi"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD zəngi"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"İş mobil telefonuna zəng"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"İş peycerinə zəng"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Zəng <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS zəngi"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Zəng)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Mətn <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Ev mətni"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Mobil mətn"</string>
+    <string name="sms_work" msgid="3910570578912367742">"İş nömrəsinə mesaj"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"İş faksı mətni"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Ev faksı mətni"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Peycer nömrəsinə mesaj"</string>
+    <string name="sms_other" msgid="910895193552957097">"Mətn"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Geri zəng nömrəsinə mesaj"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Avtomobil nömrəsinə mesaj"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Əsas şirkət nömrəsinə mesaj"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN nömrəsinə mesaj"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Əsas mətn"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Faks nömrəsinə mesaj"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Radio nömrəsinə mesaj"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Teleks nömrəsinə mesaj"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD nömrəsinə mesaj"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"İş mobil nömrəsinə mesaj"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"İş peyceri nömrəsinə mesaj"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Mətn <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS nömrəsinə mesaj"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Mesaj)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Video zəng edin"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Tez-tez ünsiyyət qurulanlar silinsin?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Əlaqələr və Telefon proqramlarında tez-tez əlaqə saxlanılanların siyahısını siləcəksiniz və fraqmentdən ünvanlama seçimlərinizi öyrənmək üçün e-poçt proqramlarını məcbur edəcəksiniz."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Tez-tez ünsiyyət qurulanlar silinir..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Əlçatımlı"</string>
+    <string name="status_away" msgid="6267905184545881094">"Kənar"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Məşğul"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktlar"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Digər"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Kataloq"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"İş kataloqu"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Bütün kontaktlar"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Axtarılır..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> ədəddən çox tapılıb."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Kontakt yoxdur"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tapıldı</item>
+      <item quantity="one">1 tapıldı</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> üçün tez kontakt"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ad yoxdur)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Tez-tez əlaqə saxlanılan"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Kontakta baxın"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Telefon nömrələri olan bütün kontaktlar"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"İş profili kontaktları"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Güncəlləşmələri göstər"</string>
+    <string name="account_phone" msgid="325867897209266837">"Cihaz"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ad"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nik"</string>
+    <string name="full_name" msgid="885420216812981202">"Ad"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ad"</string>
+    <string name="name_family" msgid="5317387657540738981">"Soyad"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Ad prefiksi"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Atasının adı"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Ad suffiksi"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetik adı"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetik ad"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetik ata adı"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetik soyad"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-poçt"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Ünvan"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Təşkilat"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Əlaqə"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Xüsusi tarix"</string>
+    <string name="sms" msgid="8086289395154598654">"Mətn mesajı"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Ünvan"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Şirkət"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Başlıq"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Qeydlər"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Veb sayt"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"İşarələr"</string>
+    <string name="email_home" msgid="2230967805906450693">"Evə e-məktub"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Mobil e-poçt"</string>
+    <string name="email_work" msgid="7065971921227432400">"İşə e-məktub"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-poçt"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-poçt <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-poçt"</string>
+    <string name="postal_street" msgid="881349814077356134">"Küçə"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO Box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Qonşuluq"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Şəhər"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Dövlət"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poçt indeksi"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Ölkə"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ev ünvanına baxın"</string>
+    <string name="map_work" msgid="9015981646907637207">"İş ünvanına baxın"</string>
+    <string name="map_other" msgid="55098598855607997">"Ünvana baxın"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> ünvanına baxın"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM üzərindən çat"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live üzərindən çat"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo üzərindən çat"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype üzərindən çat"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ üzərindən çat"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Söhbət üzərindən çat"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ üzərindən çat"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber üzərindən çat"</string>
+    <string name="chat" msgid="6297650784873558837">"Çat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"sil"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Ad sahələrini genişləndirin və yığcamlaşdırın"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Fonetik ad sahələrini genişləndirin və ya yığcamlaşdırın"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Bütün kontaktlar"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Ulduzlu"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Fərdiləşdirin"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Bütün digər kontaktlar"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Bütün kontaktlar"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Sinxronizasiya qrupunu silin"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Sinx qrup əlavə edin"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Daha çox qrup..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" sinxronizasiyadan silinməsi istənilən qrupsuz kontaktları sinxronizasiyadan siləcək."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Displey seçənəkləri yadda saxlanır..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Hazırdır"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Ləğv et"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Fərdiləşdirilmiş görünüş"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"İmport olunan kontaktları yadda saxlayın:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM kartdan import edin"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM-dən import edin: <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM-dən import edin: <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf fayldan import edin"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> importu ləğv olunsun?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> eksportu ləğv edilsin?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Vizit kart importunu/eksportunu ləğv etmək mümkün olmadı"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Naməlum xəta."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" açmaq olmadı: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Eksportçunu başlatmaq olmadı: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Eksport edilə bilən heç bir kontakt yoxdur"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Tələb olunan icazəni deaktiv etmisiniz."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Eksport zamanı xəta baş verdi: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Tələb olunan fayl adı çox uzundur (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O xəta"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Yetərli qədər yaddaş yoxdur. Fayl çox böyük ola bilər.."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Gözlənilməyən səbəbə görə vizit kart təhlil edilə bilmədi."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format dəstəklənmir."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Verilmiş vizit kartların meta məlumatları toplana bilmədi."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Bir və daha çox fayl İmport edilə bilməz (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> eksportu bitdi"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontaktların eksportu tamamlandı."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktların eksportu tamamlandı, kontaktları paylaşmaq üçün bildirişə tıklayın."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Kontaktları paylaşmaq üçün toxunun."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> eksportu ləğv edildi"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontakt datası eksport olunur"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontakt datası eksport olunur."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Verilənlər bazası məlumatları əldə oluna bilmədi."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Eksport edilə bilən kontakt yoxdur. Əgər telefonunuzda kontaktlarınız varsa, bəzi data provayderləri kontaktların telefondan eksport olunmasına icazə verməyə bilər."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Vizit kart tərtibçisi düzgün başlamadı."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Eksport edilə bilmədi"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontakt datası eksport edilmədi.\nSəbəb: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> import edilir"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Vizit kart datası oxuna bilmədi"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Vizit kart datasının oxunması ləğv edildi"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> vizit kart İmportu qurtardı"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> importu ləğv edildi"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> tezliklə import olunacaq."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Bu fayl tezliklə import ediləcək."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Vizit kart import sorğusu rədd edildi. Yenidən cəhd edin."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> tezliklə eksport ediləcək."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fayl az sonra eksport ediləcək."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktlar tezliklə eksport ediləcək."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Vizit kart eksport sorğusu rədd edildi. Daha sonra cəhd edin."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Vizit kart yerli müvəqqəti yaddaşa keşlənir. Hazırkı import tezliklə başlayacaq."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Vizit kart import edilə bilmədi."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt NFC üzərindən alınıb"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Kontaktlar eksport olunsun?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Keşləndirilir"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"İmport edilir: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf fayldan eksport edin"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Bunlardan biri üzrə sırala"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ad"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Soyad"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Ad formatı"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Ad ilk yazılsın"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Soyad ilk yazılsın"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Hesablar"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Yeni kontaktlar üçün defolt hesab"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinxronizasiya kontakt metadatası [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinxronizasiya kontakt metadatası"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Məlumatlarım"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Profilinizi quraşdırın"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Kontaktlar Haqqında"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Ayarlar"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Görünən kontaktları paylaşın"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Görünən kontaktları paylaşmaq olmadı"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Sevdiyiniz kontaktları paylaşın"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Bütün kontaktları paylaşın"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kontaktları paylaşmaq uğursuz oldu."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kontaktları import/eksport edin"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Kontaktları İmport edin"</string>
+    <string name="share_error" msgid="665756457151793108">"Bu kontakt paylaşıla bilməz."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Bölüşmək üçün kontakt yoxdur."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Axtar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Göstərilməli kontaktlar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Göstərilməli kontaktlar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Fərdiləşdirilmiş görünüşü müəyyən edin"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Yadda saxlayın"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Kontakt axtarın"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritlər"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Kontakt yoxdur."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Müntəzəmləri təmizləyin"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM kart seçin"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Hesabları idarə edin"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"İmport/eksport"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Bloklanmış nömrələr"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> vasitəsilə"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> vasitəsilə <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"axtarışı dayandırın"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Axtarışı təmizləyin"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kontakt göstərilmə seçimləri"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Hesab"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Həmişə bu zənglər üçün istifadə edin"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Çağrı üçün SIM:"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Qeyd ilə zəng edin"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Zəng ilə göndərmək üçün qeyd yazın..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"GÖNDƏRİN &amp; ZƏNG EDİN"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> oxunmamış element. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> oxunmamış element. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Quruluş versiyası"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Açıq mənbə lisenziyaları"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Açıq mənbə proqramı üçün lisenziya detalları"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Məxfilik siyasəti"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Xidmət şərtləri"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Açıq mənbə lisenziyaları"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Linki açmaq alınmadı."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> yoxlanılıb"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> yoxlanılmayıb"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Video zəng edin"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Silin"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellips"</string>
+</resources>
diff --git a/res-common/values-b+sr+Latn-sw600dp/strings.xml b/res-common/values-b+sr+Latn-sw600dp/strings.xml
new file mode 100644
index 0000000..49abef8
--- /dev/null
+++ b/res-common/values-b+sr+Latn-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Uređaj"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nema kontakata za izvoz. Ako imate kontakte na tabletu, neki dobavljači podataka možda neće dozvoliti izvoz kontakata sa tableta."</string>
+</resources>
diff --git a/res-common/values-b+sr+Latn/strings.xml b/res-common/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..8a9a464
--- /dev/null
+++ b/res-common/values-b+sr+Latn/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekst je kopiran"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiraj u privremenu memoriju"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Pozovi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Pozovi kućni telefon"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Pozovi mobilni telefon"</string>
+    <string name="call_work" msgid="8299062439076337075">"Pozovi poslovni telefon"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Pozovi poslovni faks"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Pozovi kućni faks"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Pozovi pejdžer"</string>
+    <string name="call_other" msgid="4472141328347894937">"Pozovi"</string>
+    <string name="call_callback" msgid="687494744634190411">"Pozovi za povratni poziv"</string>
+    <string name="call_car" msgid="9078083109758282133">"Pozovi telefon u automobilu"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Pozovi glavni telefon preduzeća"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Pozovi ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Pozovi glavni telefon"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Pozovi faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Pozovi radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Pozovi teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Pozovi TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Pozovi poslovni mobilni telefon"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Pozovi poslovni pejdžer"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Pozovi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Pozovi broj za MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (pozovi)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Pošalji SMS na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Pošalji SMS na kućni telefon"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Pošalji SMS na mobilni telefon"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Pošalji SMS na poslovni telefon"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Pošalji SMS na poslovni faks"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Pošalji SMS na kućni faks"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Pošalji SMS na pejdžer"</string>
+    <string name="sms_other" msgid="910895193552957097">"Pošalji SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Pošalji SMS za povratni poziv"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Pošalji SMS na telefon u automobilu"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Pošalji SMS na glavni broj telefona preduzeća"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Pošalji SMS na ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Pošalji SMS na glavni telefon"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Pošalji SMS na faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Pošalji SMS na radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Pošalji SMS na teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Pošalji SMS na TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Pošalji SMS na poslovni mobilni telefon"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Pošalji SMS na poslovni pejdžer"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Pošalji SMS na <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Pošalji SMS na broj za MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (pošalji SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Uputi video poziv"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Brišete često kontaktirane?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Obrisaćete listu često kontaktiranih u aplikacijama Kontakti i Telefon, pa će imejl aplikacije morati ponovo da prikupe informacije o adresiranju."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Brisanje često kontaktiranih..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Dostupan/na"</string>
+    <string name="status_away" msgid="6267905184545881094">"Odsutan/na"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Zauzet/a"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakti"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Drugo"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktorijum"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Direktorijum za Work"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Svi kontakti"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Pretražuje se..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Pronađeno je više od <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nema kontakata"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Pronađen je <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="few">Pronađena su <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Pronađeno je <xliff:g id="COUNT">%d</xliff:g></item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Brzi kontakt za korisnika <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nema imena)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Često kontaktirani"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Prikazivanje kontakta"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Svi kontakti sa brojevima telefona"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontakti sa profila za Work"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Prikaži ažuriranja"</string>
+    <string name="account_phone" msgid="325867897209266837">"Uređaj"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ime"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nadimak"</string>
+    <string name="full_name" msgid="885420216812981202">"Ime"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ime"</string>
+    <string name="name_family" msgid="5317387657540738981">"Prezime"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefiks za ime"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Srednje ime"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufiks imena"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Ime – fonetski"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Ime – fonetski"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Srednje ime – fonetski"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Prezime – fonetski"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Imejl adresa"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Razmena trenutnih poruka"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizacija"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Odnos"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Poseban dan"</string>
+    <string name="sms" msgid="8086289395154598654">"Tekstualna poruka"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresa"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Preduzeće"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Naziv"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Beleške"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Veb-sajt"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Oznake"</string>
+    <string name="email_home" msgid="2230967805906450693">"Pošalji imejl na kućnu imejl adresu"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Pošalji imejl na mobilni telefon"</string>
+    <string name="email_work" msgid="7065971921227432400">"Pošalji imejl na poslovnu imejl adresu"</string>
+    <string name="email_other" msgid="4601881243553289615">"Pošalji imejl"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Pošalji imejl na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Pošalji imejl"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulica"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Poštanski fah"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Kraj"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Grad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Država"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poštanski broj"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Zemlja"</string>
+    <string name="map_home" msgid="1221397355014741634">"Prikaži kućnu adresu"</string>
+    <string name="map_work" msgid="9015981646907637207">"Prikaži poslovnu adresu"</string>
+    <string name="map_other" msgid="55098598855607997">"Prikaži adresu"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Prikaži adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Započni ćaskanje preko AIM-a"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Započni ćaskanje preko Windows Live-a"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Započni ćaskanje preko Yahoo-a"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Započni ćaskanje preko Skype-a"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Započni ćaskanje preko QQ-a"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Započni ćaskanje preko Google Talk-a"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Započni ćaskanje preko ICQ-a"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Započni ćaskanje preko Jabber-a"</string>
+    <string name="chat" msgid="6297650784873558837">"Ćaskanje"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"izbriši"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Proširivanje ili skupljanje polja za nazive"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Proširi ili skupi polja za fonetsko ime"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Svi kontakti"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Sa zvezdicom"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Prilagodi"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Svi drugi kontakti"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Svi kontakti"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Ukloni grupu za sinhronizaciju"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Dodavanje grupe za sinhronizaciju"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Još grupa…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Uklanjanjem grupe „<xliff:g id="GROUP">%s</xliff:g>“ sa liste za sinhronizaciju uklonićete i sve negrupisane kontakte sa te liste."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Čuvanje opcija prikaza..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Gotovo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Otkaži"</string>
+    <string name="listCustomView" msgid="1915154113477432033">"Kontakti u prilagođenom prikazu"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Sačuvajte uvezene kontakte na:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Uvezi sa SIM kartice"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Uvoz sa SIM kartice <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Uvoz sa SIM kartice <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Uvezi iz .vcf datoteke"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Želite li da otkažete uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Želite li da otkažete izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Nije moguće otkazati vCard uvoz/izvoz"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Nepoznata greška."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nije moguće otvoriti datoteku „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nije moguće pokrenuti program za izvoz: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nema kontakata za izvoz."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Onemogućili ste obaveznu dozvolu."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Došlo je do greške pri izvozu: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Zahtevani naziv datoteke je predugačak („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"U/I greška"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nema dovoljno memorije. Datoteka je možda prevelika."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Iz neočekivanog razloga nije moguće raščlaniti vCard datoteku."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format nije podržan."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nije moguće prikupiti metapodatke navedenih vCard datoteka."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Nije moguć uvoz jedne ili više datoteka (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je završen."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Izvoz kontakata je završen."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Izvoženje kontakata je završeno. Kliknite na obaveštenje da biste delili kontakte."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Dodirnite da biste delili kontakte."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je otkazan."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Izvoz podataka o kontaktima je u toku"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Podaci o kontaktima se izvoze."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Preuzimanje informacija iz baze podataka nije moguće."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nema kontakata za izvoz. Ako imate kontakte na telefonu, neki dobavljači podataka možda neće dozvoliti da se kontakti izvoze sa telefona."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Program za izradu vCard datoteka se nije ispravno pokrenuo."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Izvoz nije moguć"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Podaci o kontaktima nizu izvezeni.\nRazlog: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Uvoz kontakta <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Čitanje vCard podataka nije moguće"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Čitanje vCard podataka je otkazano"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Uvoz vCard datoteke <xliff:g id="FILENAME">%s</xliff:g> je završen"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je otkazan"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> će uskoro biti uvezena."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Datoteka će uskoro biti uvezena."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Zahtev za uvoz vCard datoteke je odbijen. Pokušajte ponovo kasnije."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> će uskoro biti izvezena."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Datoteka će uskoro biti izvezena."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontakti će uskoro biti izvezeni."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Zahtev za izvoz vCard datoteke je odbijen. Pokušajte ponovo kasnije."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Keširanje vCard datoteka u lokalnu privremenu memoriju. Uvoz će uskoro započeti."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Uvoz vCard datoteke nije moguć."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt preko NFC-a"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Želite li da izvezete kontakte?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Keširanje"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Uvozi se <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Izvezi u .vcf datoteku"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortiraj prema"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Imenu"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Prezimenu"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format imena i prezimena"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Prvo ime"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Prvo prezime"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Nalozi"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Podrazumevani nalog za nove kontakte"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinhronizuj metapodatke kontakata [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinhronizujte metapodatke kontakata"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Moje informacije"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Podesite profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"O Kontaktima"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Podešavanja"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Deli vidljive kontakte"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nije uspelo deljenje vidljivih kontakata."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Deli omiljene kontakte"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Deli sve kontakte"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Deljenje kontakata nije uspelo."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Uvoz/izvoz kontakata"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Uvoz kontakata"</string>
+    <string name="share_error" msgid="665756457151793108">"Ovaj kontakt ne može da se deli."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nema kontakata za deljenje."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Pretraži"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakti za prikaz"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakti za prikaz"</string>
+    <string name="custom_list_filter" msgid="582616656313514803">"Prilagođeni prikaz"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Pretražite kontakte"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Omiljeno"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nema kontakata."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Obriši često kontaktirane"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Izaberite SIM karticu"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Upravljaj nalozima"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Uvezi/izvezi"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokirani brojevi"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"preko <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> preko <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"zaustavljanje pretraživanja"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Brisanje pretrage"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opcije prikazivanja kontakata"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Nalog"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Uvek koristi ovo za pozive"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Pozovi pomoću"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Poziv sa beleškom"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Unesite belešku koju ćete poslati uz poziv..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"POŠALJI I POZOVI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitana stavka. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitane stavke. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitanih stavki. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Verzija"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licence otvorenog koda"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalji licence za softver otvorenog koda"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Politika privatnosti"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Uslovi korišćenja usluge"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licence otvorenog koda"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Otvaranje URL-a nije uspelo."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Označeno: <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Nije označeno: <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Uputi video poziv"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Izbrišite"</string>
+</resources>
diff --git a/res-common/values-be-rBY-sw600dp/strings.xml b/res-common/values-be-rBY-sw600dp/strings.xml
new file mode 100644
index 0000000..4613efb
--- /dev/null
+++ b/res-common/values-be-rBY-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Прылада"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Няма кантактаў, якія можна экспартаваць. Калі ў вас ёсць кантакты на планшэце, некаторыя пастаўшчыкі паслуг перадачы даных могуць не дазваляць экспарт кантактаў з планшэта."</string>
+</resources>
diff --git a/res-common/values-be-rBY/strings.xml b/res-common/values-be-rBY/strings.xml
new file mode 100644
index 0000000..f51f7f7
--- /dev/null
+++ b/res-common/values-be-rBY/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Тэкст скапіраваны"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Скапіраваць у буфер абмену"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Выклікаць <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Патэлефанаваць на хатні нумар"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Патэлефанаваць на нумар мабільнага тэлефона"</string>
+    <string name="call_work" msgid="8299062439076337075">"Патэлефанаваць на працоўны нумар тэлефона"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Патэлефанаваць на нумар працоўнага факса"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Патэлефанаваць на нумар хатняга факса"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Патэлефанаваць на пэйджар"</string>
+    <string name="call_other" msgid="4472141328347894937">"Выклікаць"</string>
+    <string name="call_callback" msgid="687494744634190411">"Зрабіць зваротны выклік"</string>
+    <string name="call_car" msgid="9078083109758282133">"Патэлефанаваць на нумар у машыне"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Патэлефанаваць на асноўны нумар кампаніі"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Выклікаць ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Патэлефанаваць на асноўны нумар"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Патэлефанаваць на нумар факса"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Патэлефанаваць на радыётэлефон"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Патэлефанаваць на нумар тэлекса"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Выклікаць TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Патэлефанаваць на працоўны нумар мабільнага тэлефона"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Патэлефанаваць на працоўны пэйджар"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Выклікаць <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Выклікаць MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Выклік)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Напiсаць тэкставае паведамленне <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Напiсаць тэкставае паведамленне на хатні тэлефон"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Напiсаць тэкставае паведамленне на мабільны нумар тэлефона"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Напiсаць тэкставае паведамленне на працоўны нумар тэлефона"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Напiсаць тэкставае паведамленне на працоўны факс"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Напiсаць тэкставае паведамленне на хатні факс"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Напiсаць тэкставае паведамленне на пэйджар"</string>
+    <string name="sms_other" msgid="910895193552957097">"Тэкставае паведамленне"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Напiсаць тэкставае паведамленне на нумар зваротнага выкліку"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Напiсаць тэкставае паведамленне на нумар у машыне"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Напiсаць тэкставае паведамленне на асноўны нумар кампаніі"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Тэкставае паведамленне ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Напiсаць тэкставае паведамленне на асноўны нумар"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Напiсаць тэкставае паведамленне на факс"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Напiсаць тэкставае паведамленне на радыётэлефон"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Напiсаць тэкставае паведамленне на тэлекс"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Напiсаць тэкставае паведамленне на TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Напiсаць тэкставае паведамленне на працоўны нумар мабільнага тэлефона"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Напiсаць тэкставае паведамленне на працоўны пэйджар"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Напiсаць тэкставае паведамленне <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Тэкставае паведамленне MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Паведамленне)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Зрабіць відэавыклік"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Выдалiць частыя кантакты?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Вы выдалiце найчасцей ужываныя кантакты ў праграмах Кантакты i Тэлефон i прымусiце праграмы па працы з электроннай поштай вывучыць вашы налады адрасацыi з нуля."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Выдаленне частых кантактаў..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Даступны"</string>
+    <string name="status_away" msgid="6267905184545881094">"Адсутнічае"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Заняты"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Кантакты"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Іншае"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Дырэкторыя"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Працоўны каталог"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Усе кантакты"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Ідзе пошук..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Знойдзена вынікаў: больш за <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Кантактаў няма"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> знойдзены</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> знойдзены</item>
+      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> знойдзена</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> знойдзена</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Хуткі кантакт для карыстальніка \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Без назвы)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Часта выкарыстаныя кантакты"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Прагледзець кантакт"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Усе кантакты з нумарамі тэлефонаў"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Кантакты працоўнага профілю"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Прагляд абнаўленняў"</string>
+    <string name="account_phone" msgid="325867897209266837">"Прылада"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Імя"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Псеўданiм"</string>
+    <string name="full_name" msgid="885420216812981202">"Імя"</string>
+    <string name="name_given" msgid="4153709115654909377">"Імя"</string>
+    <string name="name_family" msgid="5317387657540738981">"Прозвішча"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Прэфікс імені"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Імя па бацьку"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Суфікс да імені"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Вымаўленне імя"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Вымаўленне імя"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Вымаўленне імені па бацьку / 2-га імені"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Вымаўленне прозвішча"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Тэлефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Электронная пошта"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Адрас"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Iмгненныя паведамленнi"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Установа"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Сувязі"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Асаблівая дата"</string>
+    <string name="sms" msgid="8086289395154598654">"Тэкставае паведамленне"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Адрас"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Кампанія"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Назва"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Нататкі"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Вэб-сайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Меткі"</string>
+    <string name="email_home" msgid="2230967805906450693">"Паведамленне на хатні адрас электроннай пошты"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Адправіць электронную пошту на мабільны адрас"</string>
+    <string name="email_work" msgid="7065971921227432400">"Паведамленне на працоўную электронную пошту"</string>
+    <string name="email_other" msgid="4601881243553289615">"Электронная пошта"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Адправiць лiст на адрас: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Электронная пошта"</string>
+    <string name="postal_street" msgid="881349814077356134">"Вуліца"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Паштовая скрыня"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Наваколле"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Горад"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Шт"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Паштовы індэкс"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Краіна"</string>
+    <string name="map_home" msgid="1221397355014741634">"Прагледзець хатні адрас"</string>
+    <string name="map_work" msgid="9015981646907637207">"Паглядзець працоўны адрас"</string>
+    <string name="map_other" msgid="55098598855607997">"Прагледзець адрас"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Паглядзець адрас \"<xliff:g id="CUSTOM">%s</xliff:g>\""</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Чат у AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Чат у Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Чат у Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Чат у Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Чат у QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Чат у Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Чат праз ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Чат у Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Гутарка"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"выдаліць"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Разгарнуць ці згарнуць назвы палёў"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Разгарнуць ці згарнуць палі вымаўлення імён"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Усе кантакты"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Пазначаныя"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Карыстальнiцкi"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Кантакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Усе кантакты з папкі \"Іншыя\""</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Усе кантакты"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Выдаліць групу сінхранізацыі"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Дадаць групу сінхранізацыі"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Больш груп..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Выдаленне групы \"<xliff:g id="GROUP">%s</xliff:g>\" з чаргi на сінхранізацыю таксама выдаліць любыя разгрупаваныя кантакты з гэтай чаргi."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Захаванне параметраў адлюстравання..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Гатова"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Адмена"</string>
+    <string name="listCustomView" msgid="1915154113477432033">"Кантакты ў карыстальнiцкiм выглядзе"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Захаваць імпартаваныя кантакты ў:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Імпарт з SIM-карты"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Імпарт з SIM-карты <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Імпарт з SIM-карты SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Імпартаваць з файла .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Адмянiць iмпарт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Адмянiць экспарт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Немагчыма адмяніць імпарт/экспарт vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Невядомая памылка."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Немагчыма адкрыць файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Не атрымалася запусцiць экспарцёр: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Няма кантактаў для экспарту."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Вы адключылі дазвол, які патрабуецца."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Памылка экспарту: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Патрабаванае імя файла (\"<xliff:g id="FILENAME">%s</xliff:g>\") занадта доўгае."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Памылка ўводу/вываду"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Недастаткова памяці (магчыма, занадта вялікі файл)"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Па нечаканай прычыне немагчыма разабраць файл vCard."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Фармат не падтрымліваецца."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Немагчыма сабраць мета-інфармацыю з гэтых файлаў vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Адзін або некалькі файлаў не могуць быць імпартаваныя (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Экспарт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" завершаны."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Экспартаванне кантактаў завершана."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Экспартаванне кантактаў завершана, націсніце на апавяшчэнне, каб абагуліць кантакты."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Дакраніцеся, каб абагуліць кантакты."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Экспарт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" адменены."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Экспарт дадзеных кантакта"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Даныя кантакту экспартуюцца."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Немагчыма атрымаць інфармацыю з базы дадзеных."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Няма кантактаў, якiя можна экспартаваць. Калi ў вашым тэлефоне няма кантактаў, некаторыя пастаўшчыкi дадзеных могуць забараняць экспарт кантактаў з тэлефона."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Памылка запуску складальнiка файлаў vCard."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Не атрымалася экспартаваць"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Памылка экспарта кантактных дадзеных. \nПрычына: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Імпарт дадзеных карыстальнiка: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Немагчыма прачытаць дадзеныя vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Адменена чытанне дадзеных з vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Заканчэнне імпартавання vCard \"<xliff:g id="FILENAME">%s</xliff:g>\""</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Імпарт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" адменены"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Файл \"<xliff:g id="FILENAME">%s</xliff:g>\" будзе імпартаваны ў бліжэйшы час."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Файл будзе імпартаваны ў бліжэйшы час."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Запыт экспарту vCard адхілены. Паспрабуйце пазней."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Файл \"<xliff:g id="FILENAME">%s</xliff:g>\" будзе экспартаваны ў бліжэйшы час."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Файл хутка будзе экспартаваны."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Кантакты хутка будуць экспартаваны."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Запыт экспарту vCard адхілены. Паспрабуйце пазней."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"кантакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Кэшуе файлы vCard у лакальнае часовае сховішча. Фактычны імпарт пачнецца ў бліжэйшы час."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Немагчыма імпартаваць vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Кантакт атрыманы праз NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Экспартаваць кантакты?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кэшаванне"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Імпарт: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>, <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Экспартаваць у файл .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Сартаваць па"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Імені"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Прозвішчы"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Фармат імя"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Спачатку імя"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Спачатку прозвішча"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Уліковыя запісы"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Стандартны ўліковы запіс для новых кантактаў"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Сінхранізаваць метаданыя пра кантакты [ДЛЯ СУПРАЦОЎНІКАЎ]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Сінхранізаваць метаданыя пра кантакты"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Мая інфармацыя"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Наладжванне профілю"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Аб Кантактах"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Налады"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Адкрыць бачныя кантакты"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Спроба абагуліць бачныя кантакты няўдалая."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Абагуліць улюбёныя кантакты"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Абагуліць усе кантакты"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Не атрымалася абагуліць кантакты."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Імпарт/экспарт кантактаў"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Імпартаваць кантакты"</string>
+    <string name="share_error" msgid="665756457151793108">"Немагчыма падзялiцца гэтым кантактам."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Няма кантактаў, якія можна абагуліць."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Пошук"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Кантакты для адлюстр."</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Кантакты для адлюстр."</string>
+    <string name="custom_list_filter" msgid="582616656313514803">"Вызначыць карыстальніцкі выгляд"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Пошук кантактаў"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Выбраныя"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Няма кантактаў."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Выдалiць частыя кантакты"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Выбраць SIM-карту"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Кіраваць уліковымі запісамі"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Імпарт/экспарт"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Заблакіраваныя нумары"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"праз <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> праз <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"спыніць пошук"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Ачысціць пошук"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Параметры адлюстравання кантактаў"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Уліковы запіс"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Заўсёды выкарыст. гэта для выклікаў"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Выклікаць праз"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Выклік з нататкай"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Увесці нататку для адпраўкі з выклікам…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"АДПРАВІЦЬ І ВЫКЛІКАЦЬ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрачытаны элемент. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрачытаныя элементы. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрачытаных элементаў. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрачытанага элемента. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Версія зборкі"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Ліцэнзіі на ПЗ з адкрытым зыходным кодам"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Звесткі аб ліцэнзіі на праграмнае забеспячэнне з адкрытым зыходным кодам"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Палітыка прыватнасці"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Умовы абслугоўвання"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Ліцэнзіі на ПЗ з адкрытым зыходным кодам"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Не ўдалося адкрыць URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> пазначана"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> не пазначана"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Зрабіць відэавыклік"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Выдаліць"</string>
+</resources>
diff --git a/res-common/values-bg-sw600dp/strings.xml b/res-common/values-bg-sw600dp/strings.xml
new file mode 100644
index 0000000..f6e1e0b
--- /dev/null
+++ b/res-common/values-bg-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Устройство"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Няма контакти с възможност за експортиране. Ако имате контакти в таблета си, възможно е някои доставчици на данни да не позволяват експортирането им извън него."</string>
+</resources>
diff --git a/res-common/values-bg/strings.xml b/res-common/values-bg/strings.xml
new file mode 100644
index 0000000..4881e79
--- /dev/null
+++ b/res-common/values-bg/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текстът е копиран"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Копиране в буферната памет"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Обаждане на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Обаждане на домашен"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Обаждане на мобилен"</string>
+    <string name="call_work" msgid="8299062439076337075">"Обаждане на служебен"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Обаждане на служебен факс"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Обаждане на домашен факс"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Обаждане на пейджър"</string>
+    <string name="call_other" msgid="4472141328347894937">"Обаждане на"</string>
+    <string name="call_callback" msgid="687494744634190411">"Обаждане на обратно обаждане"</string>
+    <string name="call_car" msgid="9078083109758282133">"Обаждане на номер в кола"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Обаждане на основен служебен"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Обаждане на ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Обаждане на основен"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Обаждане на факс"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Обаждане на радио"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Обаждане на телекс"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Обаждане на TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Обаждане на служебен мобилен"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Обаждане на служебен пейджър"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Обаждане на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Обаждане на MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (обаждане)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Изпращане на SMS на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Изпращaне на SMS на домашен"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Изпращане на SMS на мобилен"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Изпращане на SMS на служебен"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Изпращане на SMS на служебен факс"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Изпращане на SMS на домашен факс"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Изпращане на SMS на пейджър"</string>
+    <string name="sms_other" msgid="910895193552957097">"Изпращане на SMS на"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Изпращане на SMS на отговорилия"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Изпращане на SMS на номер в кола"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Изпращaне на SMS на основен служебен"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Изпращaне на SMS на ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Изпращане на SMS на основен"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Изпращане на SMS на факс"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Изпращане на SMS на радиотелефон"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Изпращане на SMS на телекс"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Изпращане на SMS на TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Изпращане на SMS на служебен мобилен"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Изпращане на SMS на служебен пейджър"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Изпращане на SMS на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Изпращане на SMS на MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (изпращане на съобщение)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Провеждане на видеообаждане"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Да се изчистят ли често търсените?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Ще изчистите списъка с често търсените в приложенията Контакти и Телефон и ще принудите приложенията за имейл да научат предпочитанията ви за адресите, започвайки отначало."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Често търсените се изчистват…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Налице"</string>
+    <string name="status_away" msgid="6267905184545881094">"Отсъства"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Зает/а"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Контакти"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Други"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Директория"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Служебен указател"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Всички контакти"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Търси се…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Намерени са повече от <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Няма контакти"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">Намерени са <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Намерен е 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Бърз контакт за <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Няма име)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Често търсени"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Преглед на контакта"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Всички контакти с телефонни номера"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Контакти в служебния потребителски профил"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Преглед на актуализациите"</string>
+    <string name="account_phone" msgid="325867897209266837">"Устройство"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Име"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Псевдоним"</string>
+    <string name="full_name" msgid="885420216812981202">"Име"</string>
+    <string name="name_given" msgid="4153709115654909377">"Собствено име"</string>
+    <string name="name_family" msgid="5317387657540738981">"Фамилно име"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Обръщение"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Презиме"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Титла"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Име (фонетично)"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Собствено име (фонетично)"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Презиме (фонетично)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Фамилно име (фонетично)"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Имейл"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Адрес"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Незабавни съобщения"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Организация"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Връзки"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Специална дата"</string>
+    <string name="sms" msgid="8086289395154598654">"Текстово съобщение"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Адрес"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Фирма"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Длъжност"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Бележки"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Уебсайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Етикети"</string>
+    <string name="email_home" msgid="2230967805906450693">"Изпращане на имейл до домашен"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Изпращане на имейл до мобилен"</string>
+    <string name="email_work" msgid="7065971921227432400">"Изпращане на имейл до служебен"</string>
+    <string name="email_other" msgid="4601881243553289615">"Изпращане на имейл"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Изпращане на имейл до <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Изпращане на имейл"</string>
+    <string name="postal_street" msgid="881349814077356134">"Улица"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Пощенска кутия"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Квартал"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Град"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Щат"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Пощенски код"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Държава"</string>
+    <string name="map_home" msgid="1221397355014741634">"Преглед на домашния адрес"</string>
+    <string name="map_work" msgid="9015981646907637207">"Преглед на служебния адрес"</string>
+    <string name="map_other" msgid="55098598855607997">"Преглед на адреса"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Преглед на адреса: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Чат по AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Чат по Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Чат по Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Чат по Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Чат по QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Чат по Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Чат по ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Чат по Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Чат"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"изтриване"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Разгъване или свиване на полетата с името"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Разгъване или свиване на полетата за фонетични имена"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Всички контакти"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Със звезда"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Персонализиране"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Контакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Всички други контакти"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Всички контакти"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Премахване на група за синхронизиране"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Добавяне на група за синхронизиране"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Още групи…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Ако синхронизирането на „<xliff:g id="GROUP">%s</xliff:g>“ спре, то ще спре и за негрупираните контакти."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Опциите за показване се запазват…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Готово"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Отказ"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Персонализиран изглед"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Запазване на импортираните контакти във:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Импортиране от SIM карта"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Импортиране от SIM картата „<xliff:g id="SIM_NAME">^1</xliff:g>“ – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Импортиране от SIM картата „<xliff:g id="SIM_NAME">%1$s</xliff:g>“"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Импортиране от .vcf файл"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Да се анулира ли импортирането на „<xliff:g id="FILENAME">%s</xliff:g>“?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Да се анулира ли експортирането на „<xliff:g id="FILENAME">%s</xliff:g>“?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Импорт./експорт. не можа да се анулира"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Неизвестна грешка."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"„<xliff:g id="FILE_NAME">%s</xliff:g>“ не можа да се отвори: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Експортирането не можа да започне: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Няма контакт, позволяващ експортиране."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Деактивирахте задължително разрешение."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"При експортирането възникна грешка: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Поисканото име на файла е твърде дълго („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O грешка"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Няма достатъчно памет. Файлът може да е твърде голям."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"vCard не можа да се анализира по неочаквана причина."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Форматът не се поддържа."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Метаинформацията от даден/и vCard файл/ове не можа да бъде събрана."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Един или повече файла не можаха да бъдат импортирани (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Експортирането на „<xliff:g id="FILENAME">%s</xliff:g>“ завърши."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Експортирането на контактите завърши."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Експортирането на контактите завърши. Кликнете върху известието, за да ги споделите."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Докоснете, за да споделите контактите."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Експортирането на „<xliff:g id="FILENAME">%s</xliff:g>“ е анулирано."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Експортиране на данни за контакти"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Данните за контактите се експортират."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Информацията за базата от данни не можа да бъде получена."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Няма контакти, позволяващи експортиране. Ако в телефона си имате контакти, е възможно някои доставчици на данни да не позволяват експортирането им извън него."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Създателят на vCard не се стартира правилно."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Не се експортираха"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Данните за контакта не бяха експортирани.\nПричина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> се импортира"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Данните от vCard не бяха прочетени"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Четенето на данни от vCard е анулирано"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Импортирането на vCard файла „<xliff:g id="FILENAME">%s</xliff:g>“ завърши"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Импортирането на „<xliff:g id="FILENAME">%s</xliff:g>“ е анулирано"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"„<xliff:g id="FILENAME">%s</xliff:g>“ ще се импортира скоро."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Файлът ще се импортира скоро."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Заявката за импортиране на vCard бе отхвърлена. Опитайте отново по-късно."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"„<xliff:g id="FILENAME">%s</xliff:g>“ ще се експортира скоро."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Файлът ще се експортира скоро."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Контактите ще бъдат експортирани скоро."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Заявката за експортиране на vCard бе отхвърлена. Опитайте отново по-късно."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"контакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard се кешира/т във временно локално хранилище. Самото импортиране ще започне скоро."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard не можа да се импортира."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Контакти от КБП"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Да се експортират ли контактите?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кешира се"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Импортира/т се <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Експортиране като .vcf файл"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Сортиране по"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Собствено име"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Фамилно име"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Формат на името"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Първо собственото име"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Първо фамилното име"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Профили"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Стандартен профил за новите контакти"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Синхронизиране на метаданните за контактите [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Синхронизиране на метаданните за контактите"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Моята информация"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Настройване на потребителския ви профил"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Всичко за Контакти"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Настройки"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Споделяне на видимите контакти"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Споделянето на видимите контакти не бе успешно."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Споделяне на любимите контакти"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Споделяне на всички контакти"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Споделянето на контактите не бе успешно."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Импортиране/eкспортиране на контакти"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Импортиране на контактите"</string>
+    <string name="share_error" msgid="665756457151793108">"Този контакт не може да бъде споделен."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Няма контакти за споделяне."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Търсене"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Контакти за показване"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Контакти за показване"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Определяне на персонализирания изглед"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Запазване"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Търсене в контактите"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Любими"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Няма контакти."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Изчистване на често търсените"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Избиране на SIM карта"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Управление на профилите"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Импортиране/Експортиране"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Блокирани номера"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"чрез <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> чрез <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"спиране на търсенето"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Изчистване на търсенето"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Опции за показване на контактите"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Профил"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Винаги да се използва за обаждания"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Обаждане чрез"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Обаждане, включващо бележка"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Напишете придружаваща бележка, която ще се изпрати при извършване на обаждането..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ИЗПРАЩАНЕ И ОБАЖДАНЕ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочетени елемента. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> непрочетен елемент. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Версия"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Лицензи за отворен код"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Подробности за лицензите на софтуера с отворен код"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Декларация за поверителност"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Общи условия"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Лицензи за отворен код"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Отварянето на URL адреса не бе успешно."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"За <xliff:g id="ACCOUNT_INFO">%s</xliff:g> е поставена отметка"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"За <xliff:g id="ACCOUNT_INFO">%s</xliff:g> не е поставена отметка"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Извършване на видеообаждане"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Изтриване"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Многоточие"</string>
+</resources>
diff --git a/res-common/values-bn-rBD-sw600dp/strings.xml b/res-common/values-bn-rBD-sw600dp/strings.xml
new file mode 100644
index 0000000..9123d2c
--- /dev/null
+++ b/res-common/values-bn-rBD-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ডিভাইস"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"এখানে রপ্তানিযোগ্য কোনো পরিচিতি নেই৷ আপনার ট্যাবলেটে পরিচিতি থাকলে, কিছু ডেটা সরবরাহকারী আপনার ট্যাবলেট থেকে সেই পরিচিতিগুলিকে রপ্তানি করা মঞ্জুর নাও করতে পারে৷"</string>
+</resources>
diff --git a/res-common/values-bn-rBD/strings.xml b/res-common/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..8c65ae4
--- /dev/null
+++ b/res-common/values-bn-rBD/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"পাঠ্য অনুলিপি হয়েছে"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ক্লিপবোর্ডে প্রতিলিপি করুন"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> এ কল করুন"</string>
+    <string name="call_home" msgid="1479549630992276827">"বাড়ির নম্বরে কল করুন"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"মোবাইল নম্বরে কল করুন"</string>
+    <string name="call_work" msgid="8299062439076337075">"কর্মক্ষেত্রের নম্বরে কল করুন"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"কর্মক্ষেত্রের ফ্যাক্স নম্বরে কল করুন"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"বাড়ির ফ্যাক্স নম্বরে কল করুন"</string>
+    <string name="call_pager" msgid="3038080882899955112">"পেজার নম্বরে কল করুন"</string>
+    <string name="call_other" msgid="4472141328347894937">"কল করুন"</string>
+    <string name="call_callback" msgid="687494744634190411">"কলব্যাক করার নম্বরে কল করুন"</string>
+    <string name="call_car" msgid="9078083109758282133">"গাড়ির ফোন নম্বরে কল করুন"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"কোম্পানির প্রধান নম্বরে কল করুন"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN নম্বরে কল করুন"</string>
+    <string name="call_main" msgid="4640261071249938558">"প্রধান নম্বরে কল করুন"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ফ্যাক্স নম্বরে কল করুন"</string>
+    <string name="call_radio" msgid="9055749313292712021">"রেডিওর ফোন নম্বরে কল করুন"</string>
+    <string name="call_telex" msgid="2909886619224843563">"টেলেক্স নম্বরে কল করুন"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD নম্বরে কল করুন"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"কর্মক্ষেত্রের মোবাইল নম্বরে কল করুন"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"কর্মক্ষেত্রের পেজার নম্বরে কল করুন"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> এ কল করুন"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS নম্বরে কল করুন"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (কল)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ঘরের ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"মোবাইল নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_work" msgid="3910570578912367742">"কর্মক্ষেত্রের নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"কার্মক্ষেত্রের ফ্যাক্স নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"বাড়ির ফ্যাক্স নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"পেজারের নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_other" msgid="910895193552957097">"পাঠ্য বার্তা"</string>
+    <string name="sms_callback" msgid="728414485478941361">"কলব্যাক করার নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_car" msgid="8543669230270954512">"গাড়ির ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"কোম্পানির প্রধান ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_main" msgid="6815987840926184815">"প্রধান নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ফ্যাক্স নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"রেডিওর ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"টেলেক্স নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"কর্মক্ষেত্রের মোবাইলে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"কর্মক্ষেত্রের পেজারে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS ফোন নম্বরে পাঠ্য বার্তা পাঠান"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (বার্তা)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ভিডিও কল করুন"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"ঘন ঘন যোগাযোগ করা হয়েছে এমন পরিচিতিগুলিকে সাফ করবেন?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"পরিচিতি এবং ফোন অ্যাপ্লিকেশানগুলি থেকে আপনি ঘন ঘন যোগাযোগ করা পরিচিতির তালিকা সাফ করবেন, এবং ইমেল অ্যাপ্লিকেশানগুলিকে আবার শুরু থেকে আপনার ঠিকানা অভিরুচি জানতে বাধ্য করবেন৷"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"ঘন ঘন যোগাযোগ করা পরিচিতিগুলিকে সাফ করা হচ্ছে…"</string>
+    <string name="status_available" msgid="4832569677396634846">"উপলব্ধ"</string>
+    <string name="status_away" msgid="6267905184545881094">"অন্যত্র"</string>
+    <string name="status_busy" msgid="7111912905211403545">"ব্যস্ত"</string>
+    <string name="contactsList" msgid="7140022347217602605">"পরিচিতিগুলি"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"অন্যান্য"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ডিরেক্টরি"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"কাজের সংগ্রহ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"সকল পরিচিতি"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"অনুসন্ধান করছে..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>টির থেকে বেশি খুঁজে পাওয়া গিয়েছে৷"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"কোনো পরিচিতি নেই"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g>টি খুঁজে পাওয়া গেছে</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>টি খুঁজে পাওয়া গেছে</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> এর জন্য দ্রুত পরিচিতি"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(কোনও নাম নেই)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"ঘন ঘন যোগাযোগ করা হয়েছে"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"পরিচিতি দেখুন"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ফোন নম্বর সহ সমস্ত পরিচিতি"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"কর্মস্থলের প্রোফাইলের পরিচিতিগুলি"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"আপডেটগুলি দেখুন"</string>
+    <string name="account_phone" msgid="325867897209266837">"ডিভাইস"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"নাম"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ডাকনাম"</string>
+    <string name="full_name" msgid="885420216812981202">"নাম"</string>
+    <string name="name_given" msgid="4153709115654909377">"প্রথম নাম"</string>
+    <string name="name_family" msgid="5317387657540738981">"পদবি"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"নামের আগের অংশ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"মাঝের নাম"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"নামের পরের অংশ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"উচ্চারণগত নাম"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"উচ্চারণগত প্রথম নাম"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"উচ্চারণগত মাঝের নাম"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"উচ্চারণগত পারিবারিক নাম"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ফোন"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ইমেল"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ঠিকানা"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"সংগঠন"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"সম্পর্ক"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"বিশেষ তারিখ"</string>
+    <string name="sms" msgid="8086289395154598654">"পাঠ্য বার্তা"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ঠিকানা"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"কোম্পানি"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"নাম"</string>
+    <string name="label_notes" msgid="3997277594846722699">"দ্রষ্টব্য"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ওয়েবসাইট"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"লেবেলগুলি"</string>
+    <string name="email_home" msgid="2230967805906450693">"বাড়ির ইমেল ঠিকানায় ইমেল করুন"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"মোবাইলের ইমেল ঠিকানায় ইমেল করুন"</string>
+    <string name="email_work" msgid="7065971921227432400">"কর্মক্ষেত্রের ইমেল ঠিকানায় ইমেল করুন"</string>
+    <string name="email_other" msgid="4601881243553289615">"ইমেল করুন"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> এ ইমেল করুন"</string>
+    <string name="email" msgid="5624424151176351591">"ইমেল"</string>
+    <string name="postal_street" msgid="881349814077356134">"রাস্তা"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"পোস্ট বক্স"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"নিকটবর্তী অঞ্চল"</string>
+    <string name="postal_city" msgid="3173008531169519309">"শহর"</string>
+    <string name="postal_region" msgid="1695206048198921115">"রাজ্য"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"পিন কোড"</string>
+    <string name="postal_country" msgid="3988452247038791892">"দেশ"</string>
+    <string name="map_home" msgid="1221397355014741634">"বাড়ির ঠিকানা দেখুন"</string>
+    <string name="map_work" msgid="9015981646907637207">"কর্মক্ষেত্রের ঠিকানা দেখুন"</string>
+    <string name="map_other" msgid="55098598855607997">"ঠিকানা দেখুন"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> ঠিকানা দেখুন"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber ব্যবহার করে চ্যাট করুন"</string>
+    <string name="chat" msgid="6297650784873558837">"চ্যাট করুন"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"মুছুন"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"নামের ক্ষেত্রটিকে প্রসারিত বা সঙ্কুচিত করুন"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ফোনেটিক নামের ক্ষেত্রটিকে প্রসারিত বা সঙ্কুচিত করুন"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"সকল পরিচিতি"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"তারকা চিহ্নিত"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"নিজের সুবিধামতো করুন"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"পরিচিতি"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"অন্যান্য সকল পরিচিতি"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"সকল পরিচিতি"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"সমন্বয় গোষ্ঠী সরান"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"সমন্বয় গোষ্ঠী যোগ করুন"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"আরো গোষ্ঠী…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"সমন্বয় থেকে \"<xliff:g id="GROUP">%s</xliff:g>\" সরানো হলে তা সমন্বয় থেকে যেকোনো অগোষ্ঠীবদ্ধ পরিচিতিগুলিকেও সরাবে৷"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"প্রদর্শনের বিকল্পগুলি সংরক্ষণ করা হচ্ছে..."</string>
+    <string name="menu_done" msgid="32470053723443112">"সম্পন্ন হয়েছে"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"বাতিল করুন"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"কাস্টমাইজ করা দৃশ্য"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"আমদানি করা পরিচিতিগুলি এতে সংরক্ষণ করুন:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"সিম কার্ড থেকে আমদানি করুন"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> SIM থেকে আমদানি করুন - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> SIM থেকে আমদানি করুন"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ফাইল থেকে আমদানি করুন"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> এর আমদানি বাতিল করবেন?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> এর রপ্তানি বাতিল করবেন?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard এর আমদানি/রপ্তানি বাতিল করা যায়নি"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"অজানা ত্রুটি৷"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" খোলা যায়নি: <xliff:g id="EXACT_REASON">%s</xliff:g>৷"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"রপ্তানিকারক শুরু করা যায়নি: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"৷"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"রপ্তানিযোগ্য কোনো পরিচিতি নেই৷"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"আপনি একটি প্রয়োজনীয় অনুমতি অক্ষম করেছেন৷"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"রপ্তানির সময় একটি ত্রুটি ঘটেছে: \" <xliff:g id="EXACT_REASON">%s</xliff:g> \"৷"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"প্রয়োজনীয় ফাইলের নামটি  (\"<xliff:g id="FILENAME">%s</xliff:g>\") অত্যন্ত দীর্ঘ৷"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O ত্রুটি"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"যথেষ্ট মেমরি নেই৷ ফাইলটি খুব বড় হতে পারে৷"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"একটি অপ্রত্যাশিত কারণে vCard পার্জ করা যায়নি৷"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"এই ফর্ম্যাটটি সমর্থিত নয়৷"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"প্রদত্ত vCard ফাইলের(গুলির) মেটা তথ্য সংগ্রহ করা যায়নি৷"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"একটি বা একাধিক (%s) ফাইল আমদানি করা যাবে না৷"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> রপ্তানি করা সম্পন্ন হয়েছে৷"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"পরিচিতি রপ্তানি করা সম্পন্ন হয়েছে৷"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"পরিচিতিগুলি রপ্তানি করা হয়েছে, পরিচিতিগুলিকে শেয়ার করতে বিজ্ঞপ্তিটিতে ক্লিক করুন৷"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"পরিচিতিগুলিকে শেয়ার করতে আলতো চাপ দিন৷"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> রপ্তানি করা বাতিল হয়েছে৷"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"পরিচিতির তথ্য রপ্তানি করা হচ্ছে"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"পরিচিতির ডেটা রপ্তানি করা হচ্ছে৷"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ডেটাবেসের তথ্য পাওয়া যায়নি৷"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"এখানে রপ্তানিযোগ্য কোনো পরিচিতি নেই৷ আপনার ফোনে পরিচিতি থাকলে, কিছু ডেটা সরবরাহকারী আপনার ফোন থেকে সেই পরিচিতিগুলিকে রপ্তানি করা মঞ্জুর নাও করতে পারে৷"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard কম্পোজার সঠিকভাবে শুরু করা হয়নি৷"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"রপ্তানি করা যায়নি"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"পরিচিতির তথ্য রপ্তানি করা যায়নি৷\nকারণ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> আমদানি করা হচ্ছে"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard ডেটা পড়া যায়নি"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard ডেটা পড়া বাতিল করা হয়েছে"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> আমদানি করা সমাপ্ত হয়েছে"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> আমদানি করা বাতিল করা হয়েছে"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> শীঘ্রই আমদানি করা হবে৷"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ফাইলটি শীঘ্রই আমদানি করা হবে৷"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard আমদানি করার অনুরোধ প্রত্যাখ্যাত হয়েছে৷ পরে আবার চেষ্টা করুন৷"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> শীঘ্রই রপ্তানি করা হবে৷"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ফাইলটি শীঘ্রই রপ্তানি করা হবে৷"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"পরিচিতিগুলি শীঘ্রই রপ্তানি করা হবে৷"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard রপ্তানি করার অনুরোধ প্রত্যাখ্যাত হয়েছে৷ পরে আবার চেষ্টা করুন৷"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"পরিচিতি"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"স্থানীয় অস্থায়ী সংগ্রহস্থলে vCard(গুলি)কে ক্যাশ করা হচ্ছে৷ প্রকৃত আমদানি শীঘ্রই শুরু হবে৷"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard আমদানি করতে পারা যায় নি৷"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC এর মাধ্যমে পরিচিতি প্রাপ্ত হয়েছে"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"পরিচিতিগুলি রপ্তানি করবেন?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ক্যাশ করা হচ্ছে"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"আমদানি করা হচ্ছে, <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ফাইলে রপ্তানি করুন"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"এই অনুসারে বাছুন"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"প্রথম নাম"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"পদবি"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"নামের বিন্যাস"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"প্রথমে প্রথম নামটি"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"প্রথমে উপাধি"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"অ্যাকাউন্টগুলি"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"নতুন পরিচিতিগুলির জন্য ডিফল্ট অ্যাকাউন্ট"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"পরিচিতির মেটাডাটা সিঙ্ক করুন [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"পরিচিতির মেটাডাটা সিঙ্ক করুন"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"আমার তথ্য"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"আপনার প্রোফাইল সেট আপ করুন"</string>
+    <string name="setting_about" msgid="3926137653588942297">"পরিচিতি সম্পর্কিত"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"সেটিংস"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"দৃশ্যমান পরিচিতিগুলিকে শেয়ার করুন"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"দৃশ্যমান পরিচিতিগুলি শেয়ার করতে ব্যর্থ হয়েছে৷"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"পছন্দসই পরিচিতিগুলি শেয়ার করুন"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"সকল পরিচিতি শেয়ার করুন"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"পরিচিতিগুলিকে শেয়ার করতে ব্যর্থ হয়েছে৷"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"পরিচিতিগুলি আমদানি/রপ্তানি করুন"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"পরিচিতিগুলি আমদানি করুন"</string>
+    <string name="share_error" msgid="665756457151793108">"এই পরিচিতিটিকে শেয়ার করা যাবে না৷"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"শেয়ার করার জন্য কোনো পরিচিতি নেই৷"</string>
+    <string name="menu_search" msgid="7464453023659824700">"অনুসন্ধান করুন"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"দেখানোর জন্য পরিচিতিগুলি"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"দেখানোর জন্য পরিচিতিগুলি"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"কাস্টমাইজ করা দৃশ্য নির্ধারণ করুন"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"সংরক্ষণ করুন"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"পরিচিতিগুলি খুঁজুন"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"পছন্দগুলি"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"কোনো পরিচিতি নেই৷"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"পুনরাবৃত্তি সাফ করুন"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"সিম কার্ড নির্বাচন করুন"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"অ্যাকাউন্টগুলি পরিচালনা করুন"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"আমদানি/রপ্তানি"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"অবরুদ্ধ নম্বরগুলি"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> এর মাধ্যমে"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> এর মাধ্যমে <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"অনুসন্ধান বন্ধ করুন"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"অনুসন্ধান সাফ করুন"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"পরিচিতি প্রদর্শনের বিকল্পগুলি"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"অ্যাকাউন্ট"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"কলের জন্য সবসময় এটি ব্যবহার করুন"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"এর মাধ্যমে কল করুন"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"একটি নোট সহ কল করুন"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"কলের সাথে পাঠানোর জন্য একটি নোট লিখুন ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"পাঠান এবং কল করুন"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>৷ <xliff:g id="COUNT_3">%2$d</xliff:g>টি অপঠিত আইটেম৷ </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>৷ <xliff:g id="COUNT_3">%2$d</xliff:g>টি অপঠিত আইটেম৷ </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"বিল্ডের সংস্করণ"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"মুক্ত উৎস লাইসেন্সগুলি"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"মুক্ত উৎস সফ্টওয়্যারের লাইসেন্স বিবরণ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"গোপনীয়তা নীতি"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"পরিষেবার শর্তাবলী"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"মুক্ত উৎস লাইসেন্সগুলি"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url খুলতে ব্যর্থ হয়েছে৷"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> এ টিক চিহ্ন দেওয়া হয়েছে"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> এ টিক চিহ্ন দেওয়া হয়নি"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ভিডিও কল করুন"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"মুছুন"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"এলিপসিস"</string>
+</resources>
diff --git a/res-common/values-bs-rBA-sw600dp/strings.xml b/res-common/values-bs-rBA-sw600dp/strings.xml
new file mode 100644
index 0000000..7e14feb
--- /dev/null
+++ b/res-common/values-bs-rBA-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Uređaj"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nema kontakata koji se mogu izvoziti. Ako imate kontakte na tabletu, neki dobavljači podataka možda ne dozvoljavaju izvoz kontakata s tableta."</string>
+</resources>
diff --git a/res-common/values-bs-rBA/strings.xml b/res-common/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..b1b1d43
--- /dev/null
+++ b/res-common/values-bs-rBA/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekst je kopiran"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiraj u međumemoriju"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Pozovi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Pozovi kuću"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Pozovi mobitel"</string>
+    <string name="call_work" msgid="8299062439076337075">"Pozovi posao"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Pozovi poslovni faks"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Pozovi kućni faks"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Pozovi pejdžer"</string>
+    <string name="call_other" msgid="4472141328347894937">"Pozovi"</string>
+    <string name="call_callback" msgid="687494744634190411">"Pozovi broj za uzvraćanje poziva"</string>
+    <string name="call_car" msgid="9078083109758282133">"Pozovi automobil"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Pozovi glavni broj kompanije"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Pozovi ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Pozovi glavni broj"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Pozovi faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Pozovi radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Pozovi teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Pozovi TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Pozovi poslovni mobitel"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Pozovi poslovni pejdžer"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Pozovi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Pozovi MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Poziv)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Pošalji tekstualnu poruku na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Pošalji tekstualnu poruku na kućni broj"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Pošalji tekstualnu poruku na mobilni"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Pošalji tekstualnu poruku na poslovni broj"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Pošalji tekstualnu poruku na poslovni faks"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Pošalji tekstualnu poruku na kućni faks"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Pošalji tekstualnu poruku na pejdžer"</string>
+    <string name="sms_other" msgid="910895193552957097">"Pošalji tekstualnu poruku"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Pošalji tekstualnu poruku na broj za povratni poziv"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Pošalji tekstualnu poruku na automobil"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Pošalji tekstualnu poruku na glavni broj kompanije"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Pošalji tekstualnu poruku na ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Pošalji tekstualnu poruku na glavni broj"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Pošalji tekstualnu poruku na faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Pošalji tekstualnu poruku na radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Pošalji tekstualnu poruku na teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Pošalji tekstualnu poruku na TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Pošalji tekstualnu poruku na poslovni mobitel"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Pošalji tekstualnu poruku na poslovni pejdžer"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Pošalji tekstualnu poruku <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Pošalji tekstualnu poruku na MMS broj"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Poruka)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Uputi videopoziv"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Obrisati često kontaktirane osobe?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Obrisat ćete listu često kontaktiranih osoba u aplikaciji Kontakti i Aplikaciji za telefon, pa će aplikacije za e-poštu morati ispočetka učiti vaše postavke adresa."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Brisanje često kontaktiranih osoba…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Dostupno"</string>
+    <string name="status_away" msgid="6267905184545881094">"Odsutan"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Zauzeto"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakti"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Ostalo"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Imenik"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Poslovni imenik"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Svi kontakti"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Pretraživanje…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Pronađeno je više od <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nema kontakata"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontakt pronađen</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakta pronađena</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakata pronađeno</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Brzi kontakt za <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Bez imena)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Često kontaktirane osobe"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Prikaži kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Svi kontakti s brojevima telefona"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontakti radnog profila"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Prikaži ažuriranja"</string>
+    <string name="account_phone" msgid="325867897209266837">"Uređaj"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ime"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nadimak"</string>
+    <string name="full_name" msgid="885420216812981202">"Ime"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ime"</string>
+    <string name="name_family" msgid="5317387657540738981">"Prezime"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefiks imena"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Srednje ime"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufiks imena"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetsko ime"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetsko ime"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetsko srednje ime"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetsko prezime"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-pošta"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizacija"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Odnos"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Posebni datum"</string>
+    <string name="sms" msgid="8086289395154598654">"Tekstualna poruka"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresa"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Kompanija"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Naziv"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Bilješke"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Web stranica"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Oznake"</string>
+    <string name="email_home" msgid="2230967805906450693">"Pošalji poruku e-pošte na kućnu adresu e-pošte"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Mobilna e-pošta"</string>
+    <string name="email_work" msgid="7065971921227432400">"Pošalji poruku e-pošte na poslovnu adresu e-pošte"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-pošta"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-pošta <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-pošta"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulica"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Poštanski pretinac"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Naselje"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Grad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Država"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poštanski broj"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Država"</string>
+    <string name="map_home" msgid="1221397355014741634">"Prikaži kućnu adresu"</string>
+    <string name="map_work" msgid="9015981646907637207">"Prikaži poslovnu adresu"</string>
+    <string name="map_other" msgid="55098598855607997">"Prikaži adresu"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Prikaži adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Ćaskanje putem aplikacije AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Ćaskanje putem aplikacije Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Ćaskanje putem aplikacije Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Ćaskanje putem aplikacije Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Ćaskanje putem aplikacije QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Ćaskanje putem aplikacije Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Ćaskanje putem aplikacije ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Ćaskanje putem aplikacije Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Ćaskanje"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"izbriši"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Proširi ili skupi polja za imena"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Proširi ili skupi polja za fonetska imena"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Svi kontakti"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Označeno zvijezdom"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Prilagodi"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Svi drugi kontakti"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Svi kontakti"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Ukloni grupu za sinhronizaciju"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Dodaj grupu za sinhronizaciju"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Više grupa…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Uklanjanje grupe \"<xliff:g id="GROUP">%s</xliff:g>\" iz sinhronizacije će također ukloniti sve negrupirane kontakte iz sinhronizacije."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Čuvanje opcija prikaza u toku…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Gotovo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Otkaži"</string>
+    <string name="listCustomView" msgid="1915154113477432033">"Kontakti u prilagođenom prikazu"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Sačuvaj uvezene kontakte na karticu:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Uvezi sa SIM kartice"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Uvezi sa SIM kartice <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Uvezi sa SIM kartice <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Uvezi iz .vcf fajla"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Otkazati uvoz fajla <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Otkazati izvoz fajla <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Nemoguće otkazati uvoz/izvoz vCard fajla"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Nepoznata greška."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nije moguće otvoriti \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nije moguće pokrenuti program za izvoz: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nema sadržaja za izvoz."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Onemogućili ste potrebnu dozvolu."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Došlo je do greške prilikom izvoza: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Zahtijevano ime fajla je predugo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O greška"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nema dovoljno memorije. Možda je fajl prevelik."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Nije moguće raščlaniti vCard fajl iz neočekivanog razloga."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format nije podržan."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nije moguće otvoriti metapodatke vCard fajl(ov)a."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Nije moguće uvesti jedan ili više fajlova (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Izvoz fajla <xliff:g id="FILENAME">%s</xliff:g> je završen."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Izvoz kontakata je završen."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Izvoz kontakata je završen. Kliknite obavještenje da podijelite kontakte."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Dodirnite da podijelite kontakte."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Izvoz fajla <xliff:g id="FILENAME">%s</xliff:g> je otkazan."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Izvoz podataka kontakta u toku"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Podaci kontakta se izvoze."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nije moguće preuzeti informacije iz baze podataka."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nema kontakata koji se mogu izvoziti. Ako imate kontakte na telefonu, neki dobavljači podataka možda ne dozvoljavaju izvoz kontakata s telefona."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Program za izradu kartica vCard nije pravilno pokrenut."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Izvoz nije uspio"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Podaci kontakta nisu izvezeni.\nRazlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Uvozi se kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Čitanje podataka vCard nije uspjelo"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Čitanje vCard podataka je otkazano"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Završen uvoz vCard fajla <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Uvoz fajla <xliff:g id="FILENAME">%s</xliff:g> je otkazan"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Fajl <xliff:g id="FILENAME">%s</xliff:g> će uskoro biti uvezen."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fajl će uskoro biti uvezen."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Zahtjev za uvoz vCard fajla je odbijen. Pokušajte ponovo kasnije."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Fajl <xliff:g id="FILENAME">%s</xliff:g> će će uskoro biti izvezen."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fajl će uskoro biti izvezen."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontakti će uskoro biti izvezeni."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Zahtjev za izvoz vCard fajla je odbijen. Pokušajte ponovo kasnije."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Spremanje vCard fajlova u lokalnu privremenu pohranu. Uvoz će započeti uskoro."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Uvoz vCard kartice nije uspio."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt preko NFC-a"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Izvesti kontakte?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Spremanje u privremenu pohranu u toku"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Uvozi se <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Izvezi u .vcf fajl"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Poredaj po"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ime"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Prezime"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format imena"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Ime prvo"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Prezime prvo"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Računi"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Zadani račun za nove kontakte"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinhroniziraj metapodatke kontakata [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinhroniziraj metapodatke kontakata"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Moje informacije"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Postavite svoj profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"O Kontaktima"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Postavke"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Podijeli vidljive kontakte"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Dijeljenje vidljivih kontakata nije uspjelo."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Dijeli omiljene kontakte"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Dijeli sve kontakte"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Dijeljenje kontakata nije uspjelo."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Uvoz/izvoz kontakata"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Uvezi kontakte"</string>
+    <string name="share_error" msgid="665756457151793108">"Ovaj kontakt se ne može podijeliti."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nema kontakata za dijeljenje."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Traži"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakti za prikaz"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakti za prikaz"</string>
+    <string name="custom_list_filter" msgid="582616656313514803">"Definiraj prilagođeni prikaz"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Traži kontakte"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoriti"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nema kontakata."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Obriši često kontaktirane"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Odaberi SIM karticu"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Upravljaj računima"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Uvoz/izvoz"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokirani brojevi"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"putem <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> putem <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"zaustavi pretraživanje"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Obriši pretragu"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opcije prikaza kontakata"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Račun"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Uvijek koristi ovu karticu za pozive"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Poziv putem"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Poziv s bilješkom"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Upišite bilješku koja će se poslati uz poziv ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"POŠALJI I POZOVI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitana stavka. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitane stavke. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitanih stavki. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Međuverzija aplikacije"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open source licence"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalji o licenci za Open source softver"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Pravila o privatnosti"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Uslovi pružanja usluge"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open source licence"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Otvaranje URL-a nije uspjelo."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> je označen"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> nije označen"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Uputi videopoziv"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Izbriši"</string>
+</resources>
diff --git a/res-common/values-ca-sw600dp/strings.xml b/res-common/values-ca-sw600dp/strings.xml
new file mode 100644
index 0000000..2e82e0d
--- /dev/null
+++ b/res-common/values-ca-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositiu"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"No hi ha cap contacte que es pugui exportar. Si en tens algun a la tauleta, és possible que hi hagi proveïdors de dades que no permetin que els contactes s\'exportin des d\'aquest dispositiu."</string>
+</resources>
diff --git a/res-common/values-ca/strings.xml b/res-common/values-ca/strings.xml
new file mode 100644
index 0000000..aa96cf9
--- /dev/null
+++ b/res-common/values-ca/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text copiat"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copia al porta-retalls"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Truca al <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Truca a casa"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Truca al mòbil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Truca a la feina"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Truca al fax de la feina"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Truca al fax de casa"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Truca al cercapersones"</string>
+    <string name="call_other" msgid="4472141328347894937">"Truca"</string>
+    <string name="call_callback" msgid="687494744634190411">"Truca a un número de devolució de trucada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Truca al cotxe"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Truca al telèfon principal de l\'empresa"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Truca a l\'XDSI"</string>
+    <string name="call_main" msgid="4640261071249938558">"Truca al telèfon principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Truca al fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Truca a la ràdio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Truca al tèlex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Truca a TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Truca al mòbil de la feina"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Truca al cercapersones de la feina"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Truca al <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Truca al número MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (truca-li)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Envia SMS al <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Envia un SMS a casa"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Envia un SMS al mòbil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Envia un SMS a la feina"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Envia un SMS al fax de la feina"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Envia un SMS al fax de casa"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Envia un SMS al cercapersones"</string>
+    <string name="sms_other" msgid="910895193552957097">"Envia un SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Envia un SMS a un número de devolució de trucada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Envia un SMS al cotxe"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Envia un SMS al telèfon principal de l\'empresa"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Envia un SMS a l\'XDSI"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Envia un SMS al telèfon principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Envia un SMS al fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Envia un SMS a la ràdio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Envia un SMS al tèlex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Envia un SMS al TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Envia un SMS al telèfon mòbil de la feina"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Envia un SMS al cercapersones de la feina"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Envia un SMS a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Envia un MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (envia-li un missatge)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Fes una videotrucada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vols esborrar els contactes freqüents?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"S\'esborrarà la llista de contactes més freqüents a les aplicacions Contactes i Telèfon i es forçarà les aplicacions de correu electrònic a obtenir informació nova sobre les teves preferències pel que fa a adreces."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"S\'estan esborrant contactes freq..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponible"</string>
+    <string name="status_away" msgid="6267905184545881094">"Absent"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupat"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contactes"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Altres"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directori"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directori de la feina"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Tots els contactes"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"S\'està cercant..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Se n\'han trobat més de <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"No hi ha cap contacte"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactes trobats</item>
+      <item quantity="one">1 contacte trobat</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contacte ràpid per a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sense nom)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contactes freqüents"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Mostra el contacte"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Tots els contactes que tenen números de telèfon"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contactes del perfil professional"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Mostra les actualitzacions"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositiu"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nom"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Àlies"</string>
+    <string name="full_name" msgid="885420216812981202">"Nom"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nom"</string>
+    <string name="name_family" msgid="5317387657540738981">"Cognoms"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefix del nom"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Segon nom"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufix del nom"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nom fonètic"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nom fonètic"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Segon nom fonètic"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Cognoms fonètics"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telèfon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Adreça electrònica"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adreça"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Xat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organització"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relació"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data especial"</string>
+    <string name="sms" msgid="8086289395154598654">"Missatge de text"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adreça"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Càrrec"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Lloc web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiquetes"</string>
+    <string name="email_home" msgid="2230967805906450693">"Envia un correu electrònic a l\'adreça particular"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Envia un correu electrònic al mòbil"</string>
+    <string name="email_work" msgid="7065971921227432400">"Envia un correu electrònic a la feina"</string>
+    <string name="email_other" msgid="4601881243553289615">"Correu electrònic"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Envia un correu electrònic a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Correu electrònic"</string>
+    <string name="postal_street" msgid="881349814077356134">"Carrer"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Apartat postal"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Barri"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Ciutat"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Codi postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Visualitza l\'adreça particular"</string>
+    <string name="map_work" msgid="9015981646907637207">"Visualitza l\'adreça de la feina"</string>
+    <string name="map_other" msgid="55098598855607997">"Visualitza l\'adreça"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Visualitza l\'adreça <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Xateja amb AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Xateja amb Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Xateja amb Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Xateja amb Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Xateja amb QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Xateja amb Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Xateja amb ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Xateja amb Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Xat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"suprimeix"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Desplega o replega els camps de nom"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Desplega o replega els camps de nom fonètic"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Tots els contactes"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Destacats"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalitza"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contacte"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"La resta de contactes"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Tots els contactes"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Elimina el grup de sincronització"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Afegeix un grup de sincronització"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Més grups..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Si s\'elimina \"<xliff:g id="GROUP">%s</xliff:g>\" de la sincronització, també se n\'eliminaran els contactes no agrupats."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"S\'estan desant les opcions de visualització..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Fet"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancel·la"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Visualització personalitzada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Desa els contactes importats a:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importa de la targeta SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importa des de la targeta SIM <xliff:g id="SIM_NAME">^1</xliff:g> (<xliff:g id="SIM_NUMBER">^2</xliff:g>)"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importa des de la targeta SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importa d\'un fitxer .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Vols cancel·lar la importació de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Vols cancel·lar l\'exportació de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"No es pot cancel·lar la imp./exp. vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"S\'ha produït un error desconegut."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"No s\'ha pogut obrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"No s\'ha pogut iniciar l\'exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"No hi ha cap contacte que es pugui exportar."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Has desactivat un permís obligatori."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"S\'ha produït un error durant l\'exportació: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"El nom de fitxer obligatori és massa llarg (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Error d\'E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"No hi ha prou memòria. És possible que el fitxer sigui massa gran."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"No s\'ha pogut analitzar la vCard a causa d\'un motiu inesperat."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"No s\'admet aquest format."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"No s\'ha pogut recopilar metainformació dels fitxers de la vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"No s\'ha pogut importar un dels fitxers com a mínim (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportació de <xliff:g id="FILENAME">%s</xliff:g> finalitzada."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"S\'han acabat d\'exportar els contactes."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"S\'han acabat d\'exportar els contactes; fes clic a la notificació per compartir-los."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Toca per compartir els contactes."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"S\'ha cancel·lat l\'exportació de: <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"S\'estan exportant les dades de contacte"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"S\'estan exportant les dades de contacte."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"No s\'ha pogut obtenir informació de la base de dades."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"No hi ha cap contacte que es pugui exportar. Si en tens algun al telèfon, és possible que hi hagi proveïdors de dades que no permetin que els contactes s\'exportin des del telèfon."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"No s\'ha iniciat correctament el creador de vCard."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Error en exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"No s\'han exportat les dades de contacte.\nMotiu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"S\'està important <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"No s\'han pogut llegir les dades de vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lectura de dades de vCard cancel·lada"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importació de vCard <xliff:g id="FILENAME">%s</xliff:g> finalitzada"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"S\'ha cancel·lat la importació de: <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> s\'importarà d\'aquí a poc."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"D\'aquí a poc s\'importarà el fitxer."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"S\'ha rebutjat la sol·licitud per importar la vCard. Torna-ho a provar més tard."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> s\'exportarà en breu."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"El fitxer s\'exportarà en breu."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Aviat s\'exportaran els contactes."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"S\'ha rebutjat la sol·licitud per exportar la vCard. Torna-ho a provar més tard."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contacte"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"S\'estan desant les vCard a l\'emmagatzematge temporal local. La importació real començarà aviat."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"No s\'ha pogut importar la vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contac. reb. NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Vols exportar els contactes?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Desament a la memòria cau"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"S\'està important <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exporta a un fitxer .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordena per"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nom"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Cognoms"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format del nom"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Primer el nom"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Primer els cognoms"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Comptes"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Compte predeterminat per als contactes nous"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronitza les metadades dels contactes [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronitza les metadades dels contactes"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"La meva informació"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configura el teu perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Sobre Contactes"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Configuració"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Comparteix contactes visibles"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Error en compartir els contactes visibles."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Comparteix els contactes preferits"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Comparteix tots els contactes"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"No s\'han pogut compartir els contactes."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importa/exporta contactes"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importa contactes"</string>
+    <string name="share_error" msgid="665756457151793108">"No es pot compartir aquest contacte."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"No hi ha cap contacte per compartir."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Cerca"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contactes per mostrar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contactes per mostrar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Defineix la visualització personalitzada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Desa"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Cerca als contactes"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Preferits"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"No hi ha cap contacte."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Esborra contactes freqüents"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Selecciona una targeta SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gestiona els comptes"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importa/exporta"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloquejats"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"mitjançant <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> mitjançant <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"Atura la cerca."</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Esborra la cerca."</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opcions de visualització de contactes"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Compte"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Utilitza sempre per a les trucades"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Truca mitjançant"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Trucada amb una nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escriu una nota per enviar-la juntament amb la trucada..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIA NOTA I TRUCA"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> elements no llegits. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> element no llegit. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versió de la compilació"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Llicències del programari lliure"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalls de la llicència del programari lliure"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de privadesa"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Condicions del servei"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Llicències de programari lliure"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"No s\'ha pogut obrir l\'URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"S\'ha marcat <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"No s\'ha marcat <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Fa una videotrucada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Suprimeix"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Punts suspensius"</string>
+</resources>
diff --git a/res-common/values-cs-sw600dp/strings.xml b/res-common/values-cs-sw600dp/strings.xml
new file mode 100644
index 0000000..25de233
--- /dev/null
+++ b/res-common/values-cs-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Zařízení"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nelze exportovat žádné kontakty. Pokud kontakty v tabletu uložené máte, je možné, že poskytovatel datových služeb zakázal jejich export mimo tablet."</string>
+</resources>
diff --git a/res-common/values-cs/strings.xml b/res-common/values-cs/strings.xml
new file mode 100644
index 0000000..cd63fb9
--- /dev/null
+++ b/res-common/values-cs/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text zkopírován"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Zkopírovat do schránky"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Volat číslo <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Volat domů"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Volat mobil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Volat do práce"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Volat pracovní fax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Volat domácí fax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Volat pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Volat"</string>
+    <string name="call_callback" msgid="687494744634190411">"Volat na číslo zpětného volání"</string>
+    <string name="call_car" msgid="9078083109758282133">"Volat do auta"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Volat firmu (hlavní)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Volat na číslo ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Volat na hlavní číslo"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Volat fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Volat radiotelefon"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Volat na číslo Telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Volat na číslo TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Volat na pracovní mobil"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Volat na pracovní pager"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Volat kontakt <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Volat MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Zavolat)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Poslat SMS na číslo <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Poslat SMS domů"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Poslat SMS na mobil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Poslat SMS do práce"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Poslat SMS na pracovní fax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Poslat SMS na domácí fax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Poslat SMS na pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Poslat SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Poslat SMS na číslo zpětného volání"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Poslat SMS do auta"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Poslat SMS do firmy (hlavní)"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Poslat SMS na číslo ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Poslat SMS na hlavní číslo"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Poslat SMS na fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Poslat SMS na radiotelefon"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Poslat SMS na číslo Telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Poslat SMS na číslo TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Poslat SMS na pracovní mobil"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Poslat SMS na pracovní pager"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Poslat SMS na kontakt <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Poslat SMS na číslo MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Poslat zprávu)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Uskutečnit videohovor"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vymazat často kontaktované osoby?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Vymažete seznam často kontaktovaných osob v aplikacích Kontakty a Telefon a e-mailové aplikace budou muset nastavení adresátů vytvořit znovu."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Mazání často kontaktovaných osob..."</string>
+    <string name="status_available" msgid="4832569677396634846">"K dispozici"</string>
+    <string name="status_away" msgid="6267905184545881094">"Pryč"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Nemám čas"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakty"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Jiné"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Adresář"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Pracovní adresář"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Všechny kontakty"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Vyhledávání…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Nalezeno více kontaktů než <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Žádné kontakty"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="few">Nalezeno: <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="many">Nalezeno: <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Nalezeno: <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Nalezeno: 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Rychlý kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Žádné jméno)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Často používané"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Zobrazit kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Kontakty s telefonními čísly"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontakty z pracovního profilu"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Zobrazit aktualizace"</string>
+    <string name="account_phone" msgid="325867897209266837">"Zařízení"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Jméno"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Přezdívka"</string>
+    <string name="full_name" msgid="885420216812981202">"Jméno"</string>
+    <string name="name_given" msgid="4153709115654909377">"Jméno"</string>
+    <string name="name_family" msgid="5317387657540738981">"Příjmení"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Titul před jménem"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Druhé jméno"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Titul za jménem"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Jméno (foneticky)"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Jméno (foneticky)"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Druhé jméno (foneticky)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Příjmení (foneticky)"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizace"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Vztah"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Zvláštní datum"</string>
+    <string name="sms" msgid="8086289395154598654">"Textová zpráva"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresa"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Společnost"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Pozice"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Poznámky"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Štítky"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-mail domů"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-mail na mobil"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-mail do práce"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-mail <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulice"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Číslo poštovní schránky"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Čtvrť"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Město"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Stát"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"PSČ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Země"</string>
+    <string name="map_home" msgid="1221397355014741634">"Zobrazit adresu domů"</string>
+    <string name="map_work" msgid="9015981646907637207">"Zobrazit adresu do práce"</string>
+    <string name="map_other" msgid="55098598855607997">"Zobrazit adresu"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Zobrazit adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatovat pomocí AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatovat pomocí Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatovat pomocí Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatovat pomocí Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatovat pomocí QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatovat pomocí Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatovat pomocí ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatovat pomocí Jabberu"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatovat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"smazat"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Rozbalit nebo sbalit pole jména"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Rozbalí nebo sbalí pole s fonetickým přepisem jména"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Všechny kontakty"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Označené hvězdičkou"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizovat"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Všechny ostatní kontakty"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Všechny kontakty"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Odstranit synchronizovanou skupinu"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Přidat synchronizovanou skupinu"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Další skupiny…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Odebráním skupiny <xliff:g id="GROUP">%s</xliff:g> ze synchronizace odeberete ze synchronizace také všechny kontakty mimo skupinu."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Ukládání možností zobrazení…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Hotovo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Zrušit"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Vlastní zobrazení"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Účet k uložení importovaných kontaktů:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importovat ze SIM karty"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importovat ze SIM karty <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importovat ze SIM karty <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importovat ze souboru VCF"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Zrušit import souboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Zrušit export souboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Import/export vizitky vCard nelze zrušit"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Neznámá chyba."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Soubor <xliff:g id="FILE_NAME">%s</xliff:g> nelze otevřít: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nelze spustit nástroj pro export: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Žádný kontakt nelze exportovat."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Zakázali jste požadované oprávnění."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Při exportu došlo k chybě: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Požadovaný název souboru (<xliff:g id="FILENAME">%s</xliff:g>) je příliš dlouhý."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Chyba I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Není k dispozici dostatek paměti. Soubor může být příliš velký."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Analýza souboru vCard se z neočekávaných důvodů nezdařila."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formát není podporován."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Informace o metadatech daných souborů vCard se nepodařilo shromáždit."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Jeden nebo více souborů se nepodařilo importovat (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Export souboru <xliff:g id="FILENAME">%s</xliff:g> byl dokončen."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Exportování kontaktů bylo dokončeno."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Export kontaktů byl dokončen. Klepnutím na oznámení je můžete sdílet."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Klepnutím můžete sdílet kontakty."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Export souboru <xliff:g id="FILENAME">%s</xliff:g> byl zrušen."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Export dat kontaktů"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Probíhá export dat kontaktů."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nepodařilo se získat informace o databázi."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nelze exportovat žádné kontakty. Pokud kontakty v telefonu uložené máte, je možné, že poskytovatel datových služeb zakázal jejich export mimo telefon."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Editor souboru vCard nebyl správně spuštěn."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Export se nezdařil"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Data kontaktů nebyla exportována.\nDůvod: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Probíhá import: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nepodařilo se přečíst údaje vizitky vCard."</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Čtení dat souboru vCard bylo zrušeno"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Import souboru vCard (<xliff:g id="FILENAME">%s</xliff:g>) byl dokončen"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Import souboru <xliff:g id="FILENAME">%s</xliff:g> byl zrušen."</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Soubor <xliff:g id="FILENAME">%s</xliff:g> bude za okamžik importován."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Soubor bude zakrátko importován."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Požadavek na import souborů vCard byl zamítnut. Zkuste to prosím později."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Soubor <xliff:g id="FILENAME">%s</xliff:g> bude za okamžik exportován."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Soubor bude brzy exportován."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontakty budou brzy exportovány."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Požadavek na export souborů vCard byl zamítnut. Zkuste to prosím později."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Načítání souboru vCard do mezipaměti místního dočasného úložiště. Vlastní import bude zahájen v krátké době."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Soubor vCard se nepodařilo importovat."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt přijatý prostřednictvím komunikace NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportovat kontakty?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Ukládání do mezipaměti"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Probíhá import: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportovat do souboru VCF"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Seřadit podle"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Jméno"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Příjmení"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formát jména"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Nejprve jméno"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Nejprve příjmení"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Účty"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Výchozí účet pro nové kontakty"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synchronizovat metadata kontaktů [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synchronizovat metadata kontaktů"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Moje údaje"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Nastavit váš profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Informace o kontaktech"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Nastavení"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Sdílet viditelné kontakty"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Sdílení viditelných kontaktů se nezdařilo."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Sdílet oblíbené kontakty"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Sdílet všechny kontakty"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kontakty se nepodařilo sdílet."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importovat nebo exportovat kontakty"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importovat kontakty"</string>
+    <string name="share_error" msgid="665756457151793108">"Tento kontakt nelze sdílet."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nejsou dostupné žádné kontakty ke sdílení."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Hledat"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakty k zobrazení"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakty k zobrazení"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Nastavit vlastní zobrazení"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Uložit"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Vyhledejte kontakty"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Oblíbené"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Žádné kontakty."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Vymazat často kontaktované"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Vybrat SIM kartu"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Správa účtů"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importovat/Exportovat"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokovaná čísla"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"prostřednictvím zdroje <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> prostřednictvím zdroje <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"zastavit vyhledávání"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Vymazat vyhledávání"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Možnosti zobrazení kontaktů"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Účet"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Vždy používat pro hovory"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Volat pomocí"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Volání s poznámkou"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Zadejte poznámku, která se odešle pomocí volání…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ODESLAT A ZAVOLAT"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepřečtené položky. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepřečtené položky. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepřečtených položek. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> nepřečtená položka. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Verze sestavení"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licence open source"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Podrobnosti o licencích pro software open source"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Zásady ochrany soukromí"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Smluvní podmínky"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licence open source"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Adresu URL se nepodařilo otevřít."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> – zaškrtnuto"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> – nezaškrtnuto"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Zahájit videohovor"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Smazat"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Tři tečky"</string>
+</resources>
diff --git a/res-common/values-da-sw600dp/strings.xml b/res-common/values-da-sw600dp/strings.xml
new file mode 100644
index 0000000..7009cb2
--- /dev/null
+++ b/res-common/values-da-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Enhed"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Der er ingen kontaktpersoner, der kan eksporteres. Hvis du har kontaktpersoner på din tablet, tillader nogle dataudbydere muligvis ikke, at kontaktpersonerne eksporteres fra din tablet."</string>
+</resources>
diff --git a/res-common/values-da/strings.xml b/res-common/values-da/strings.xml
new file mode 100644
index 0000000..a3047be
--- /dev/null
+++ b/res-common/values-da/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teksten blev kopieret"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiér til udklipsholder"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Ring til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Ring hjem"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Ring til mobil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ring til arbejde"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ring til arbejdsfax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ring til hjemmefax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Ring til personsøger"</string>
+    <string name="call_other" msgid="4472141328347894937">"Ring til"</string>
+    <string name="call_callback" msgid="687494744634190411">"Ring til tilbagekald"</string>
+    <string name="call_car" msgid="9078083109758282133">"Ring til bil"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Ring til virksomhedens hovednummer"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Ring til ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Ring til hovednummeret"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Ring til fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Ring til radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Ring til telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Ring til TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ring til arbejdsmobiltelefon"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ring til personsøger på arbejdet"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Ring til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Ring til mms"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ring op)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Send sms til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Send sms til hjem"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Send sms til mobil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Send sms til arbejde"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Send sms til arbejdsfax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Send sms til hjemmefax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Send sms til personsøger"</string>
+    <string name="sms_other" msgid="910895193552957097">"Send sms"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Send sms til tilbagekald"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Send sms til bil"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Send sms til virksomhedens hovednummer"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Send sms til ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Send sms til hovednummeret"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Send sms til fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Send sms til radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Send sms til telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Send sms til TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Send sms til arbejdsmobiltelefon"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Send sms til personsøger på arbejdet"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Send sms til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Send sms til mms"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (send besked)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Foretag videoopkald"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vil du rydde de ofte kontaktede?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Hvis du gør dette, rydder du listen over personer, som du ofte kontakter, i appene Kontaktpersoner og Opkald. Du vil samtidig tvinge e-mailapps til at lære dine adressepræferencer fra bunden."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Ofte kontaktede personer ryddes…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Tilgængelig"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ikke til stede"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Optaget"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktpersoner"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Andet"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Indeks"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Indeks for arbejde"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Alle kontaktpersoner"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Søger..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Der er fundet mere end <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ingen kontaktpersoner"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Der blev fundet <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Der blev fundet <xliff:g id="COUNT">%d</xliff:g></item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Hurtig kontakt til <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Intet navn)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Ofte kontaktet"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Vis kontaktperson"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Alle kontaktpersoner med telefonnumre"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontaktpersoner for arbejdsprofil"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Se opdateringer"</string>
+    <string name="account_phone" msgid="325867897209266837">"Enhed"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Navn"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Kaldenavn"</string>
+    <string name="full_name" msgid="885420216812981202">"Navn"</string>
+    <string name="name_given" msgid="4153709115654909377">"Fornavn"</string>
+    <string name="name_family" msgid="5317387657540738981">"Efternavn"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Navnepræfiks"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Mellemnavn"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Navnesuffiks"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetisk navn"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetisk fornavn"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetisk mellemnavn"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetisk efternavn"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresse"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisation"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Forhold"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Særlig dato"</string>
+    <string name="sms" msgid="8086289395154598654">"Sms"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresse"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Virksomhed"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titel"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Noter"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketter"</string>
+    <string name="email_home" msgid="2230967805906450693">"Send e-mail hjem"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Send e-mail til mobil"</string>
+    <string name="email_work" msgid="7065971921227432400">"Send e-mail til arbejde"</string>
+    <string name="email_other" msgid="4601881243553289615">"Send e-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Send e-mail til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Send e-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Gade"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postboks"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Nabolag"</string>
+    <string name="postal_city" msgid="3173008531169519309">"By"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Stat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postnummer"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Vis hjemmeadresse"</string>
+    <string name="map_work" msgid="9015981646907637207">"Vis arbejdsadresse"</string>
+    <string name="map_other" msgid="55098598855607997">"Vis adresse"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Vis <xliff:g id="CUSTOM">%s</xliff:g>-adresse"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chat ved hjælp af AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chat ved hjælp af Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chat ved hjælp af Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chat ved hjælp af Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chat ved hjælp af QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chat ved hjælp af Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chat ved hjælp af ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chat ved hjælp af Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"slet"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Udvid eller skjul navnefelter"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Udvid eller skjul felter til fonetiske navne"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Alle kontaktpersoner"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Stjernemarkerede"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Tilpas"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontaktperson"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Alle andre kontakter"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Alle kontaktpersoner"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Fjern synkroniseringsgruppe"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Tilføj synkroniseringsgruppe"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Flere grupper..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Hvis du fjerner \"<xliff:g id="GROUP">%s</xliff:g>\" fra synkroniseringen, fjernes alle ugrupperede kontaktpersoner fra synkroniseringen."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Gemmer valgmuligheder for visning…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Færdig"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Annuller"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Tilpasset visning"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Gem importerede kontaktpersoner på:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importér fra SIM-kort"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importér fra SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importér fra SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importér fra .vcf-fil"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Vil du annullere importen af <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Vil du annullere eksporten af <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Import/eksport af vCard kunne ikke annulleres"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Ukendt fejl."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" kunne ikke åbnes: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Eksportfunktionen kunne ikke startes: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Der er ingen kontaktpersoner, der kan eksporteres."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Du har deaktiveret en påkrævet tilladelse."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Der opstod en fejl under eksporten: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Det krævede filnavn er for langt (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O-fejl"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Ikke nok hukommelse. Filen kan være for stor."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"vCard kunne ikke parses af uventede årsager."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formatet understøttes ikke."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Metaoplysninger om de angivne vCard-filer kunne ikke hentes."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"En eller flere filer kunne ikke importeres (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> er eksporteret."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontaktpersoner blev eksporteret."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktpersonerne er eksporteret. Klik på underretningen for at dele kontaktpersoner."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tryk for at dele kontaktpersoner."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Eksport af <xliff:g id="FILENAME">%s</xliff:g> er annulleret."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Eksporterer kontaktdata"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktoplysningerne eksporteres."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Databaseoplysningerne kunne ikke hentes."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Der er ingen kontaktpersoner, der kan eksporteres. Hvis du har kontaktpersoner på din telefon, vil nogle dataudbydere muligvis ikke tillade, at kontaktpersonerne eksporteres fra telefonen."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Oprettelsen af vCard startede ikke korrekt."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Eksport ikke mulig"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontaktdataene blev ikke eksporteret.\nÅrsag: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importerer <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Dataene på dette vCard kunne ikke læses"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Læsning af vCard-data blev annulleret"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Import af vCard afsluttet <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Import af <xliff:g id="FILENAME">%s</xliff:g> blev annulleret"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> importeres om et øjeblik."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Filen importeres inden længe."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Anmodningen om import af vCard blev afvist. Prøv igen senere."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> eksporteres om et øjeblik."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Filen eksporteres om et øjeblik."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktpersoner eksporteres om lidt."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Anmodningen om eksport af vCard blev afvist. Prøv igen senere."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontaktperson"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Cachelagrer vCard-fil(er) til lokalt midlertidigt lager. Den egentlige import starter snart."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard kunne ikke importeres."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Eksportér kontaktpersoner?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Cachelagrer"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importerer <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksportér til .vcf-fil"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortér efter"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Fornavn"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Efternavn"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Navneformat"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Fornavn først"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Efternavn først"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Konti"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Standardkonto til nye kontaktpersoner"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synkroniser metadata for kontaktpersoner [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synkroniser metadata for kontaktpersoner"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mine oplysninger"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Opsæt din profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Om Kontaktpersoner"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Indstillinger"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Del synlige kontaktpersoner"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Det lykkedes ikke at dele synlige kontaktpersoner."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Del foretrukne kontaktpersoner"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Del alle kontaktpersoner"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kontaktpersonerne kunne ikke deles."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importér/eksportér kontaktpersoner"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importér kontaktpersoner"</string>
+    <string name="share_error" msgid="665756457151793108">"Denne kontaktperson kan ikke deles."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Der er ingen kontaktpersoner, der kan deles."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Søg"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontaktpersoner, der skal vises"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontaktpersoner, der skal vises"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Angiv tilpasset visning"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Gem"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Søg i kontaktpersoner"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Foretrukne"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ingen kontaktpersoner."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Ryd hyppige"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Vælg SIM-kort"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Administrer konti"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importér/eksportér"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokerede telefonnumre"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"stop søgning"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Ryd søgning"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Indstillinger for visning af kontaktpersoner"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konto"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Brug altid ved opkald"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ring med"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Ring med en note"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Indtast en note, som skal sendes ved opkald..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SEND, OG RING OP"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ulæst post. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ulæste poster. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Build-version"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open source-licenser"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licensoplysninger til open source-software"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privatlivspolitik"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Servicevilkår"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open source-licenser"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Webadressen kunne ikke åbnes."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> er valgt"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> er ikke valgt"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Foretag videoopkald"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Slet"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipse"</string>
+</resources>
diff --git a/res-common/values-de-sw600dp/strings.xml b/res-common/values-de-sw600dp/strings.xml
new file mode 100644
index 0000000..82fb7e6
--- /dev/null
+++ b/res-common/values-de-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Gerät"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Es sind keine exportierbaren Kontakte vorhanden. Falls sich Kontakte auf deinem Tablet befinden, ist das Exportieren der Kontakte eventuell durch den Datenanbieter gesperrt."</string>
+</resources>
diff --git a/res-common/values-de/strings.xml b/res-common/values-de/strings.xml
new file mode 100644
index 0000000..6728949
--- /dev/null
+++ b/res-common/values-de/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text kopiert"</string>
+    <string name="copy_text" msgid="3424081789297978355">"In Zwischenablage kopieren"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> anrufen"</string>
+    <string name="call_home" msgid="1479549630992276827">"Private Nummer anrufen"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Mobilfunknummer anrufen"</string>
+    <string name="call_work" msgid="8299062439076337075">"Geschäftliche Nummer anrufen"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Fax (geschäftlich) anrufen"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Fax (privat) anrufen"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Pager anrufen"</string>
+    <string name="call_other" msgid="4472141328347894937">"Anrufen"</string>
+    <string name="call_callback" msgid="687494744634190411">"Rückrufnummer anrufen"</string>
+    <string name="call_car" msgid="9078083109758282133">"Auto anrufen"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Firma (Hauptnr.) anrufen"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN anrufen"</string>
+    <string name="call_main" msgid="4640261071249938558">"Hauptnummer anrufen"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Fax anrufen"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Funktelefon anrufen"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Telex anrufen"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY-/TDD anrufen"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Mobilfunknummer (geschäftlich) anrufen"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Pager (geschäftlich) anrufen"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> anrufen"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS anrufen"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Anruf)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS an <xliff:g id="CUSTOM">%s</xliff:g> senden"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS an private Nummer senden"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS an Mobilfunknummer senden"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS an geschäftliche Nummer senden"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS an Fax (geschäftlich) senden"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS an Fax (privat) senden"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS an Pager senden"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS senden"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS an Rückrufnummer senden"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS an Autotelefon senden"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS an Firma (Hauptnr.) senden"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS an ISDN senden"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS an Hauptnummer senden"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS an Fax senden"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS an Funktelefon senden"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS an Telex senden"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS an TTY-/TDD senden"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS an Mobilfunknummer (geschäftlich) senden"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS an Pager (geschäftlich) senden"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS an <xliff:g id="ASSISTANT">%s</xliff:g> senden"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS an MMS senden"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Nachricht)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Videoanruf starten"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Liste \"Häufig kontaktiert\" löschen?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Du löschst die Liste \"Häufig kontaktiert\" in den Apps \"Kontakte\" und \"Telefon\" und bewirkst so ein Zurücksetzen deiner Adresseinstellungen für E-Mail-Apps."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"\"Häufig kontaktiert\" wird gelöscht…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Verfügbar"</string>
+    <string name="status_away" msgid="6267905184545881094">"Abwesend"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Beschäftigt"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakte"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Sonstige"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Verzeichnis"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Verzeichnis geschäftlicher Kontakte"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Alle Kontakte"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Suche läuft…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Mehr als <xliff:g id="COUNT">%d</xliff:g> Kontakte gefunden"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Keine Kontakte"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> Kontakte gefunden</item>
+      <item quantity="one">1 Kontakt gefunden</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Schnellkontakt für <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Kein Name)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Häufig kontaktiert"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Kontakt anzeigen"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Alle Kontakte mit Telefonnummern"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Arbeitsprofilkontakte"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Updates ansehen"</string>
+    <string name="account_phone" msgid="325867897209266837">"Gerät"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Name"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Alias"</string>
+    <string name="full_name" msgid="885420216812981202">"Name"</string>
+    <string name="name_given" msgid="4153709115654909377">"Vorname"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nachname"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Namenspräfix"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Zweiter Vorname"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Namenssuffix"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Phonetischer Name"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Vorname (phonetisch)"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Zweiter Vorname (phonetisch)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Nachname (phonetisch)"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-Mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresse"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Unternehmen"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Art der Beziehung"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Besonderes Datum"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresse"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Unternehmen"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Position"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notizen"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Labels"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-Mail (privat)"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-Mail (mobil)"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-Mail (geschäftlich)"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-Mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-Mail an <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-Mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Straße"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postfach"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Stadtteil"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Stadt"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Bundesland"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postleitzahl"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Privatadresse ansehen"</string>
+    <string name="map_work" msgid="9015981646907637207">"Geschäftsadresse ansehen"</string>
+    <string name="map_other" msgid="55098598855607997">"Adresse ansehen"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g>-Adresse ansehen"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Über AIM chatten"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Über Windows Live chatten"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Über Yahoo! chatten"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Über Skype chatten"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Über QQ chatten"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Über Google Talk chatten"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Über ICQ chatten"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Über Jabber chatten"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatten"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"löschen"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Namensfelder minimieren oder maximieren"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Felder für phonetische Namen maximieren oder minimieren"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Alle Kontakte"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Markiert"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalisieren"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Alle weiteren Kontakte"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Alle Kontakte"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Synchronisierungsgruppe entfernen"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Synchronisierungsgruppe hinzufügen"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Weitere Gruppen…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Wenn \"<xliff:g id="GROUP">%s</xliff:g>\" aus der Synchronisierung entfernt wird, werden auch alle nicht gruppierten Kontakte aus der Synchronisierung entfernt."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Anzeigeoptionen werden gespeichert…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Fertig"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Abbrechen"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Benutzerdefinierte Ansicht"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Importierte Kontakte speichern unter:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Von SIM-Karte importieren"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Von SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g> importieren"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Von SIM <xliff:g id="SIM_NAME">%1$s</xliff:g> importieren"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Aus VCF-Datei importieren"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Import von <xliff:g id="FILENAME">%s</xliff:g> abbrechen?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Export von <xliff:g id="FILENAME">%s</xliff:g> abbrechen?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard-Import/-Export nicht abgebrochen"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Unbekannter Fehler"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" konnte nicht geöffnet werden. Grund: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Exportprogramm konnte nicht gestartet werden. Grund: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Es ist kein exportierbarer Kontakt vorhanden."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Du hast eine erforderliche Berechtigung deaktiviert."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Beim Export ist ein Fehler aufgetreten: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Erforderlicher Dateiname ist zu lang (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"E/A-Fehler"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nicht genügend Speicherplatz. Die Datei ist möglicherweise zu groß."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Die vCard konnte aus einem unerwarteten Grund nicht geparst werden."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Das Format wird nicht unterstützt."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Abrufen der Metadaten aus angegebenen vCards nicht möglich"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Eine oder mehrere Dateien können nicht importiert werden (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Export von <xliff:g id="FILENAME">%s</xliff:g> abgeschlossen"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontakte wurden exportiert"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Das Exportieren der Kontakte ist abgeschlossen. Klicke auf die Benachrichtigung, um die Kontakte freizugeben."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Zum Teilen der Kontakte tippen."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Export von <xliff:g id="FILENAME">%s</xliff:g> abgebrochen"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontaktdaten werden exportiert..."</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Die Kontaktdaten werden gerade exportiert."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Datenbankinformationen konnten nicht abgerufen werden."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Es sind keine exportierbaren Kontakte vorhanden. Falls sich Kontakte auf deinem Telefon befinden, ist das Exportieren der Kontakte eventuell durch den Datenanbieter gesperrt."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Das Programm zum Erstellen der vCard wurde nicht richtig gestartet."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Export nicht möglich"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Die Kontaktdaten wurden nicht exportiert.\nGrund: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> wird importiert..."</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Lesen der vCard-Daten nicht möglich"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lesen von vCard-Daten abgebrochen"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Import der vCard <xliff:g id="FILENAME">%s</xliff:g> abgeschlossen"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Import von <xliff:g id="FILENAME">%s</xliff:g> abgebrochen"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> wird in Kürze importiert."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Die Datei wird in Kürze importiert."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Die vCard-Importanfrage wurde abgelehnt. Bitte versuche es später erneut."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> wird in Kürze exportiert."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Die Datei wird in Kürze exportiert."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Die Kontakte werden in Kürze exportiert."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Die vCard-Exportanfrage wurde abgelehnt. Bitte versuche es später erneut."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"Kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Caching der vCard(s) in lokalen temporären Speicher wird durchgeführt. Der eigentliche Import beginnt gleich."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Importieren der vCard nicht möglich"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt per NFC erhalten"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Kontakte exportieren?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Caching läuft..."</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> werden importiert: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"In VCF-Datei exportieren"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortieren nach"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Vorname"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nachname"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Namensformat"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Vorname zuerst"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Nachname zuerst"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Konten"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Standardkonto für neue Kontakte"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Kontakt-Metadaten synchronisieren [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Kontakt-Metadaten synchronisieren"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Meine Daten"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Profil einrichten"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Über \"Kontakte\""</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Einstellungen"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Sichtbare Kontakte teilen"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Die sichtbaren Kontakte konnten nicht geteilt werden."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Lieblingskontakte teilen"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Alle Kontakte teilen"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kontakte konnten nicht geteilt werden."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kontakte importieren/exportieren"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Kontakte importieren"</string>
+    <string name="share_error" msgid="665756457151793108">"Dieser Kontakt kann nicht geteilt werden."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Keine Kontakte zum Teilen vorhanden."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Suchen"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Angezeigte Kontakte"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Angezeigte Kontakte"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Benutzerdefinierte Ansicht definieren"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Speichern"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Kontakte suchen"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoriten"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Keine Kontakte"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"\"Häufig kontaktiert\" löschen"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM-Karte auswählen"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Konten verwalten"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importieren/Exportieren"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blockierte Nummern"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"über <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> über <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"Suche beenden"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Suche zurücksetzen"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Anzeigeoptionen für Kontakte"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konto"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Diese SIM für alle Anrufe verwenden"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Anrufen mit"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Mit einer Notiz anrufen"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Notiz eingeben, die beim Anrufen gesendet wird..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"Senden &amp; anrufen"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ungelesene Elemente. </item>
+      <item quantity="one"><xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> ungelesenes Element. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Build-Version"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open-Source-Lizenzen"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Lizenzdetails für Open-Source-Software"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Datenschutzerklärung"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Nutzungsbedingungen"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open-Source-Lizenzen"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Die URL konnte nicht geöffnet werden."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ausgewählt"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> nicht ausgewählt"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Videoanruf starten"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Löschen"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Auslassungszeichen"</string>
+</resources>
diff --git a/res-common/values-el-sw600dp/strings.xml b/res-common/values-el-sw600dp/strings.xml
new file mode 100644
index 0000000..40deb48
--- /dev/null
+++ b/res-common/values-el-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Συσκευή"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Δεν υπάρχουν επαφές προς εξαγωγή. Αν υπάρχουν επαφές στο tablet, ορισμένοι πάροχοι δεδομένων ενδέχεται να μην επιτρέπουν την εξαγωγή επαφών από το tablet."</string>
+</resources>
diff --git a/res-common/values-el/strings.xml b/res-common/values-el/strings.xml
new file mode 100644
index 0000000..dc7d1ab
--- /dev/null
+++ b/res-common/values-el/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Το κείμενο αντιγράφηκε"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Αντιγραφή στο πρόχειρο"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Κλήση <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Κλήση οικίας"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Κλήση κινητής συσκευής"</string>
+    <string name="call_work" msgid="8299062439076337075">"Κλήση εργασίας"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Κλήση φαξ εργασίας"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Κλήση φαξ οικίας"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Κλήση βομβητή"</string>
+    <string name="call_other" msgid="4472141328347894937">"Κλήση"</string>
+    <string name="call_callback" msgid="687494744634190411">"Κλήση αριθμού επανάκλησης"</string>
+    <string name="call_car" msgid="9078083109758282133">"Κλήση τηλεφώνου αυτοκινήτου"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Κλήση κύριας εταιρικής γραμμής"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Κλήση ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Κλήση κύριου αριθμού"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Κλήση φαξ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Κλήση πομπού"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Κλήση σε τηλέτυπο"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Κλήση σε τηλέφωνο TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Κλήση κινητού τηλεφώνου εργασίας"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Κλήση βομβητή εργασίας"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Κλήση <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Κλήση MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Κλήση)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Αποστολή μηνύματος κειμένου προς <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Αποστολή μηνύματος κειμένου προς οικία"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Αποστολή μηνύματος κειμένου προς κινητή συσκευή"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Αποστολή μηνύματος κειμένου προς εργασία"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Αποστολή μηνύματος κειμένου προς φαξ εργασίας"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Αποστολή μηνύματος κειμένου προς φαξ οικίας"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Αποστολή μηνύματος κειμένου προς βομβητή"</string>
+    <string name="sms_other" msgid="910895193552957097">"Κείμενο"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Αποστολή μηνύματος κειμένου σε αριθμό επανάκλησης"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Αποστολή μηνύματος κειμένου προς τηλέφωνο αυτοκινήτου"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Αποστολή μηνύματος κειμένου προς κύρια εταιρική γραμμή"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Αποστολή κειμένου σε ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Αποστολή μηνύματος κειμένου προς κύριο αριθμό"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Αποστολή μηνύματος κειμένου σε φαξ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Αποστολή μηνύματος κειμένου προς πομπό"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Αποστολή μηνύματος κειμένου σε τηλέτυπο"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Αποστολή μηνύματος κειμένου προς τηλέφωνο TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Αποστολή μηνύματος κειμένου προς κινητό τηλέφωνο εργασίας"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Αποστολή μηνύματος κειμένου προς βομβητή εργασίας"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Αποστολή μηνύματος προς <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Αποστολή μηνύματος κειμένου ως MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Μήνυμα)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Πραγματοποίηση βιντεοκλήσης"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Διαγραφή ατόμων με συχνή επικοινωνία;"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Θα διαγράψετε τη λίστα συχνών επαφών στις εφαρμογές Επαφές και Τηλέφωνο και θα επιβάλλετε στις εφαρμογές ηλεκτρονικού ταχυδρομείου να μάθουν τις προτιμήσεις διευθύνσεών σας από την αρχή,"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Διαγρ. ατόμων με συχνή επικοινωνία…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Διαθέσιμος"</string>
+    <string name="status_away" msgid="6267905184545881094">"Μη διαθέσιμος"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Απασχολημένος"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Επαφές"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Άλλο"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Κατάλογος"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Κατάλογος εργασίας"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Όλες οι επαφές"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Αναζήτηση…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Βρέθηκαν περισσότερα από <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Δεν υπάρχουν επαφές"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">Βρέθηκαν <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Βρέθηκε 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Γρήγορη επαφή για <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Χωρίς όνομα)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Συχνή επικοινωνία"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Προβολή επαφής"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Όλες οι επαφές με αριθμούς τηλεφώνου"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Επαφές προφίλ εργασίας"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Προβολή ενημερώσεων"</string>
+    <string name="account_phone" msgid="325867897209266837">"Συσκευή"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Όνομα"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Ψευδώνυμο"</string>
+    <string name="full_name" msgid="885420216812981202">"Όνομα"</string>
+    <string name="name_given" msgid="4153709115654909377">"Όνομα"</string>
+    <string name="name_family" msgid="5317387657540738981">"Επώνυμο"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Πρόθεμα ονόματος"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Πατρώνυμο"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Επίθημα ονόματος"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Φωνητικό όνομα"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Φωνητικό όνομα"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Φωνητικό πατρώνυμου"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Φωνητικό επώνυμο"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Τηλέφωνο"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Ηλεκτρονικό ταχυδρομείο"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Διεύθυνση"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Οργανισμός"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Σχέση"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Ειδική ημερομηνία"</string>
+    <string name="sms" msgid="8086289395154598654">"Μήνυμα κειμένου"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Διεύθυνση"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Εταιρεία"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Τίτλος"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Σημειώσεις"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Ιστότοπος"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Ετικέτες"</string>
+    <string name="email_home" msgid="2230967805906450693">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς οικία"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς κινητό"</string>
+    <string name="email_work" msgid="7065971921227432400">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς εργασία"</string>
+    <string name="email_other" msgid="4601881243553289615">"Μήνυμα ηλεκτρονικού ταχυδρομείου"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Μήνυμα ηλεκτρονικού ταχυδρομείου"</string>
+    <string name="postal_street" msgid="881349814077356134">"Οδός"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Ταχυδρομική θυρίδα"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Γειτονιά"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Πόλη"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Πολιτεία"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Ταχυδρομικός κώδικας"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Χώρα"</string>
+    <string name="map_home" msgid="1221397355014741634">"Προβολή διεύθυνσης οικίας"</string>
+    <string name="map_work" msgid="9015981646907637207">"Προβολή διεύθυνσης εργασίας"</string>
+    <string name="map_other" msgid="55098598855607997">"Προβολή διεύθυνσης"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Προβολή διεύθυνσης <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Συζήτηση μέσω AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Συζήτηση μέσω Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Συζήτηση μέσω Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Συζήτηση μέσω Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Συζήτηση μέσω QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Συζήτηση μέσω Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Συζήτηση μέσω ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Συζήτηση μέσω Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Συζήτηση"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"διαγραφή"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Ανάπτυξη ή σύμπτυξη πεδίων ονομάτων"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Ανάπτυξη ή σύμπτυξη πεδίων φωνητικού ονόματος"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Όλες οι επαφές"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Με αστέρι"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Προσαρμογή"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Επαφή"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Όλες οι άλλες επαφές"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Όλες οι επαφές"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Κατάργηση ομάδας συγχρονισμού"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Προσθήκη ομάδας συγχρονισμού"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Περισσότερες ομάδες…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Η κατάργηση της ομάδας \"<xliff:g id="GROUP">%s</xliff:g>\" από το συγχρονισμό θα καταργήσει επίσης και τις επαφές χωρίς ομαδοποίηση από το συγχρονισμό."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Αποθήκευση επιλογών προβολής…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Τέλος"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Ακύρωση"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Προσαρμοσμένη προβολή"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Αποθήκευση επαφών που εισήχθησαν σε:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Εισαγωγή από κάρτα SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Εισαγωγή από κάρτα SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Εισαγωγή από κάρτα SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Εισαγωγή από αρχείο .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Ακύρωση της εισαγωγής του αρχείου <xliff:g id="FILENAME">%s</xliff:g>;"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Ακύρωση της εξαγωγής του αρχείου <xliff:g id="FILENAME">%s</xliff:g>;"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Αδύνατη ακύρωση εισαγωγής/εξαγωγής vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Άγνωστο σφάλμα."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Δεν ήταν δυνατό το άνοιγμα του αρχείου \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Δεν ήταν δυνατή η έναρξη του προγράμματος εξαγωγής: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Δεν υπάρχει επαφή με δυνατότητα εξαγωγής."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Απενεργοποιήσατε μια απαιτούμενη άδεια."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Προέκυψε κάποιο σφάλμα κατά την εξαγωγή: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Το απαιτούμενο όνομα αρχείου είναι πάρα πολύ μεγάλο (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Σφάλμα I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Δεν υπάρχει αρκετή μνήμη. Το αρχείο ενδέχεται να είναι πάρα πολύ μεγάλο."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Δεν ήταν δυνατή η ανάλυση της κάρτας vCard λόγω μη αναμενόμενης αιτίας."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Η μορφή δεν υποστηρίζεται."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Δεν ήταν δυνατή η συλλογή πληροφοριών μεταδεδομένων των καρτών vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Δεν ήταν δυνατή η εισαγωγή ενός ή περισσότερων αρχείων (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> ολοκληρώθηκε."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Ολοκλήρωση εξαγωγής επαφών."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Ολοκληρώθηκε η εξαγωγή των επαφών. Κάντε κλικ στην ειδοποίηση για να μοιραστείτε επαφές."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Πατήστε για να μοιραστείτε επαφές."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> ακυρώθηκε."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Εξαγωγή δεδομένων επαφών"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Γίνεται εξαγωγή των δεδομένων επαφών."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Δεν ήταν δυνατή η λήψη πληροφοριών βάσης δεδομένων."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Δεν υπάρχουν επαφές προς εξαγωγή. Αν υπάρχουν επαφές στο τηλέφωνό σας, ορισμένοι πάροχοι δεδομένων ενδέχεται να μην επιτρέπουν την εξαγωγή των επαφών από το τηλέφωνο."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Η έναρξη της vCard δεν ήταν σωστή."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Αδυναμία εξαγωγής"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Δεν έγινε εξαγωγή των δεδομένων επαφής.\nΑιτία: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Εισαγωγή <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Αδύνατη η ανάγνωση δεδομένων vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Ακύρωση ανάγνωσης δεδομένων vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Η εισαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> vCard έχει ολοκληρωθεί"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Η εισαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> έχει ακυρωθεί"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Η εισαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> θα γίνει σύντομα."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Η εισαγωγή του αρχείου θα γίνει σύντομα."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Το αίτημα εισαγωγής vCard απορρίφθηκε. Δοκιμάστε ξανά αργότερα."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> θα γίνει σύντομα."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Η εξαγωγή του αρχείου θα γίνει σύντομα."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Σε λίγο θα ξεκινήσει η εξαγωγή επαφών."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Το αίτημα εξαγωγής vCard απορρίφθηκε. Δοκιμάστε ξανά αργότερα."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"επαφή"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Αλλαγή vCard σε τοπικό χώρο προσωρινής αποθήκευσης. Η εισαγωγή θα ξεκινήσει σύντομα."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Δεν ήταν δυνατή η εισαγωγή κάρτας vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Λήψη επαφής μέσω ΕΚΠ"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Εξαγωγή επαφών;"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Προσωρινή αποθήκευση"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Εισαγωγή <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Εξαγωγή σε αρχείο .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ταξινόμηση κατά"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Όνομα"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Επώνυμο"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Μορφή ονόματος"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Πρώτα το όνομα"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Πρώτα το επώνυμο"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Λογαριασμοί"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Προεπιλεγμένος λογαριασμός για νέες επαφές"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Συγχρονισμός μεταδεδομένων επαφής [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Συγχρονισμός μεταδεδομένων επαφής"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Τα στοιχεία μου"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Ρυθμίστε το προφίλ σας"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Σχετικά με τις Επαφές"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Ρυθμίσεις"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Κοινοποίηση ορατών επαφών"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Η κοινοποίηση των ορατών επαφών απέτυχε."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Κοινοποίηση αγαπημένων επαφών"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Κοινή χρήση όλων των επαφών"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Αποτυχία κοινής χρήσης επαφών."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Εισαγωγή/Εξαγωγή επαφών"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Εισαγωγή επαφών"</string>
+    <string name="share_error" msgid="665756457151793108">"Δεν είναι δυνατή η κοινή χρήση αυτής της επαφής."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Δεν υπάρχουν επαφές για κοινοποίηση."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Αναζήτηση"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Επαφές για προβολή"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Επαφές για προβολή"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Ορισμός προσαρμοσμένης προβολής"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Αποθήκευση"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Αναζήτηση επαφών"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Αγαπημένα"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Δεν υπάρχουν επαφές."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Διαγραφή ατόμ. με συχνή επικ."</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Επιλογή κάρτας SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Διαχείριση λογαριασμών"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Εισαγωγή/Εξαγωγή"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Αποκλεισμένοι αριθμοί"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"μέσω <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> μέσω <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"τέλος αναζήτησης"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Εκκαθάριση αναζητήσεων"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Επιλογές εμφάνισης επαφών"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Λογαριασμός"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Χρήση πάντα για κλήσεις"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Κλήση με"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Κλήση με σημείωση"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Πληκτρολογήστε μια σημείωση για αποστολή με την κλήση…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ΑΠΟΣΤΟΛΗ ΚΑΙ ΚΛΗΣΗ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> μη αναγνωσμένα στοιχεία. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> μη αναγνωσμένο στοιχείο. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Έκδοση build"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Άδειες λογισμικού ανοικτού κώδικα"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Λεπτομέρειες άδειας λογισμικού ανοιχτού κώδικα"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Πολιτική απορρήτου"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Όροι Παροχής Υπηρεσιών"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Άδειες λογισμικού ανοικτού κώδικα"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Αποτυχία ανοίγματος url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ελέγχθηκε"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> δεν ελέγχθηκε"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Πραγματοποίηση βιντεοκλήσης"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Διαγραφή"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Αποσιωπητικά"</string>
+</resources>
diff --git a/res-common/values-en-rAU-sw600dp/strings.xml b/res-common/values-en-rAU-sw600dp/strings.xml
new file mode 100644
index 0000000..e93a6db
--- /dev/null
+++ b/res-common/values-en-rAU-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Device"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"There are no exportable contacts. If you do have contacts on your tablet, some data providers may not allow the contacts to be exported from the tablet."</string>
+</resources>
diff --git a/res-common/values-en-rAU/strings.xml b/res-common/values-en-rAU/strings.xml
new file mode 100644
index 0000000..974acbf
--- /dev/null
+++ b/res-common/values-en-rAU/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text copied"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copy to clipboard"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Call <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Call home"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Call mobile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Call work"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Call work fax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Call home fax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Call pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Call"</string>
+    <string name="call_callback" msgid="687494744634190411">"Call callback"</string>
+    <string name="call_car" msgid="9078083109758282133">"Call car"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Call company main"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Call ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Call main"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Call fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Call radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Call telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Call TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Call work mobile"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Call work pager"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Call <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Call MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Call)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Text <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Text home"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Text mobile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Text work"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Text work fax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Text home fax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Text pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Text"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Text callback"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Text car"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Text company main"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Text ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Text main"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Text fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Text radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Text telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Text TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Text work mobile"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Text work pager"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Text <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Text MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Message)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Make video call"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Clear frequently contacted?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Clearing frequently contacted…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Available"</string>
+    <string name="status_away" msgid="6267905184545881094">"Away"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Busy"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Other"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directory"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Work directory"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"All contacts"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Searching…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"More than <xliff:g id="COUNT">%d</xliff:g> found."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"No contacts"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> found</item>
+      <item quantity="one">1 found</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Quick contact for <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(No name)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Frequently contacted"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"View contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"All contacts with phone numbers"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Work profile contacts"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"View updates"</string>
+    <string name="account_phone" msgid="325867897209266837">"Device"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Name"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nickname"</string>
+    <string name="full_name" msgid="885420216812981202">"Name"</string>
+    <string name="name_given" msgid="4153709115654909377">"First name"</string>
+    <string name="name_family" msgid="5317387657540738981">"Surname"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Name prefix"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Middle name"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Name suffix"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Phonetic name"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Phonetic first name"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Phonetic middle name"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Phonetic surname"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Phone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Address"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisation"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relationship"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Special date"</string>
+    <string name="sms" msgid="8086289395154598654">"Text message"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Address"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Company"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Title"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Labels"</string>
+    <string name="email_home" msgid="2230967805906450693">"Email home"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Email mobile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Email work"</string>
+    <string name="email_other" msgid="4601881243553289615">"Email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Street"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Neighbourhood"</string>
+    <string name="postal_city" msgid="3173008531169519309">"City"</string>
+    <string name="postal_region" msgid="1695206048198921115">"County"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postcode"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Country"</string>
+    <string name="map_home" msgid="1221397355014741634">"View home address"</string>
+    <string name="map_work" msgid="9015981646907637207">"View work address"</string>
+    <string name="map_other" msgid="55098598855607997">"View address"</string>
+    <string name="map_custom" msgid="4943554530347163288">"View <xliff:g id="CUSTOM">%s</xliff:g> address"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chat using AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chat using Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chat using Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chat using Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chat using QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chat using Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chat using ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chat using Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"delete"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expand or collapse name fields"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expand or collapse phonetic name fields"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"All contacts"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Starred"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Customise"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"All other contacts"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"All contacts"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Remove sync group"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Add sync group"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"More groups…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Removing \"<xliff:g id="GROUP">%s</xliff:g>\" from sync will also remove any ungrouped contacts from sync."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Saving display options…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Done"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancel"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Customised view"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Save imported contacts to:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Import from SIM card"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Import from SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Import from SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Import from .vcf file"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancel import of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancel export of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Couldn\'t cancel vCard import/export"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Unknown error."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Couldn\'t open \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Couldn\'t start the exporter: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"There is no exportable contact."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"You have disabled a required permission."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"An error occurred during export: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Required filename is too long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O error"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Not enough memory. The file may be too large."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Couldn\'t parse vCard for an unexpected reason."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"The format isn\'t supported."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Couldn\'t collect meta information of given vCard file(s)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"One or more files couldn\'t be imported (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Finished exporting <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Finished exporting contacts."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Finished exporting contacts, click the notification to share contacts."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tap to share contacts."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exporting <xliff:g id="FILENAME">%s</xliff:g> cancelled."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exporting contact data"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Contact data is being exported."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Couldn\'t get database information."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"There are no exportable contacts. If you do have contacts on your phone, some data providers may not allow the contacts to be exported from the phone."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"The vCard composer didn\'t start properly."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Couldn\'t export"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"The contact data wasn\'t exported.\nReason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importing <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Couldn\'t read vCard data"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Reading vCard data cancelled"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Finished importing vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importing <xliff:g id="FILENAME">%s</xliff:g> cancelled"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> will be imported shortly."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"The file will be imported shortly."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard import request was rejected. Try again later."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> will be exported shortly."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"The file will be exported shortly."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Contacts will be exported shortly."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard export request was rejected. Try again later."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Caching vCard(s) to local temporary storage. The actual import will start soon."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Couldn\'t import vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contact received over NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Export contacts?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Caching"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importing <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Export to .vcf file"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sort by"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"First name"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Surname"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Name format"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"First name first"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Surname first"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Accounts"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Default account for new contacts"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sync contact metadata [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sync contact metadata"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"My info"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Set up your profile"</string>
+    <string name="setting_about" msgid="3926137653588942297">"About Contacts"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Settings"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Share visible contacts"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Failed to share visible contacts."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Share favourite contacts"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Share all contacts"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Failed to share contacts."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Import/Export contacts"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Import contacts"</string>
+    <string name="share_error" msgid="665756457151793108">"This contact cannot be shared."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"There are no contacts to share."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Search"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contacts to display"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contacts to display"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Define customised view"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Save"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Search contacts"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favourites"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"No contacts."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Clear frequents"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Select SIM card"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Manage accounts"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Import/export"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blocked numbers"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"stop searching"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Clear search"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Contact display options"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Account"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Always use this for calls"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Call with"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Call with a note"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Type a note to send with call ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SEND &amp; CALL"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> unread items. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> unread item. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Build version"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open-source licences"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licence details for open-source software"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privacy Policy"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Terms of Service"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open-source licences"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Failed to open the URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> checked"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> not checked"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Place video call"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Delete"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipsis"</string>
+</resources>
diff --git a/res-common/values-en-rGB-sw600dp/strings.xml b/res-common/values-en-rGB-sw600dp/strings.xml
new file mode 100644
index 0000000..e93a6db
--- /dev/null
+++ b/res-common/values-en-rGB-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Device"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"There are no exportable contacts. If you do have contacts on your tablet, some data providers may not allow the contacts to be exported from the tablet."</string>
+</resources>
diff --git a/res-common/values-en-rGB/strings.xml b/res-common/values-en-rGB/strings.xml
new file mode 100644
index 0000000..974acbf
--- /dev/null
+++ b/res-common/values-en-rGB/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text copied"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copy to clipboard"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Call <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Call home"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Call mobile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Call work"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Call work fax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Call home fax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Call pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Call"</string>
+    <string name="call_callback" msgid="687494744634190411">"Call callback"</string>
+    <string name="call_car" msgid="9078083109758282133">"Call car"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Call company main"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Call ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Call main"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Call fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Call radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Call telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Call TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Call work mobile"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Call work pager"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Call <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Call MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Call)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Text <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Text home"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Text mobile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Text work"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Text work fax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Text home fax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Text pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Text"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Text callback"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Text car"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Text company main"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Text ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Text main"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Text fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Text radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Text telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Text TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Text work mobile"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Text work pager"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Text <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Text MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Message)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Make video call"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Clear frequently contacted?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Clearing frequently contacted…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Available"</string>
+    <string name="status_away" msgid="6267905184545881094">"Away"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Busy"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Other"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directory"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Work directory"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"All contacts"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Searching…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"More than <xliff:g id="COUNT">%d</xliff:g> found."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"No contacts"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> found</item>
+      <item quantity="one">1 found</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Quick contact for <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(No name)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Frequently contacted"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"View contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"All contacts with phone numbers"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Work profile contacts"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"View updates"</string>
+    <string name="account_phone" msgid="325867897209266837">"Device"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Name"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nickname"</string>
+    <string name="full_name" msgid="885420216812981202">"Name"</string>
+    <string name="name_given" msgid="4153709115654909377">"First name"</string>
+    <string name="name_family" msgid="5317387657540738981">"Surname"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Name prefix"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Middle name"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Name suffix"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Phonetic name"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Phonetic first name"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Phonetic middle name"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Phonetic surname"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Phone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Address"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisation"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relationship"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Special date"</string>
+    <string name="sms" msgid="8086289395154598654">"Text message"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Address"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Company"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Title"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Labels"</string>
+    <string name="email_home" msgid="2230967805906450693">"Email home"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Email mobile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Email work"</string>
+    <string name="email_other" msgid="4601881243553289615">"Email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Street"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Neighbourhood"</string>
+    <string name="postal_city" msgid="3173008531169519309">"City"</string>
+    <string name="postal_region" msgid="1695206048198921115">"County"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postcode"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Country"</string>
+    <string name="map_home" msgid="1221397355014741634">"View home address"</string>
+    <string name="map_work" msgid="9015981646907637207">"View work address"</string>
+    <string name="map_other" msgid="55098598855607997">"View address"</string>
+    <string name="map_custom" msgid="4943554530347163288">"View <xliff:g id="CUSTOM">%s</xliff:g> address"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chat using AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chat using Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chat using Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chat using Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chat using QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chat using Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chat using ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chat using Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"delete"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expand or collapse name fields"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expand or collapse phonetic name fields"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"All contacts"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Starred"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Customise"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"All other contacts"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"All contacts"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Remove sync group"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Add sync group"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"More groups…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Removing \"<xliff:g id="GROUP">%s</xliff:g>\" from sync will also remove any ungrouped contacts from sync."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Saving display options…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Done"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancel"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Customised view"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Save imported contacts to:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Import from SIM card"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Import from SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Import from SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Import from .vcf file"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancel import of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancel export of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Couldn\'t cancel vCard import/export"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Unknown error."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Couldn\'t open \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Couldn\'t start the exporter: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"There is no exportable contact."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"You have disabled a required permission."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"An error occurred during export: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Required filename is too long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O error"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Not enough memory. The file may be too large."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Couldn\'t parse vCard for an unexpected reason."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"The format isn\'t supported."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Couldn\'t collect meta information of given vCard file(s)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"One or more files couldn\'t be imported (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Finished exporting <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Finished exporting contacts."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Finished exporting contacts, click the notification to share contacts."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tap to share contacts."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exporting <xliff:g id="FILENAME">%s</xliff:g> cancelled."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exporting contact data"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Contact data is being exported."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Couldn\'t get database information."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"There are no exportable contacts. If you do have contacts on your phone, some data providers may not allow the contacts to be exported from the phone."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"The vCard composer didn\'t start properly."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Couldn\'t export"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"The contact data wasn\'t exported.\nReason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importing <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Couldn\'t read vCard data"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Reading vCard data cancelled"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Finished importing vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importing <xliff:g id="FILENAME">%s</xliff:g> cancelled"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> will be imported shortly."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"The file will be imported shortly."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard import request was rejected. Try again later."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> will be exported shortly."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"The file will be exported shortly."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Contacts will be exported shortly."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard export request was rejected. Try again later."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Caching vCard(s) to local temporary storage. The actual import will start soon."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Couldn\'t import vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contact received over NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Export contacts?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Caching"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importing <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Export to .vcf file"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sort by"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"First name"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Surname"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Name format"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"First name first"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Surname first"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Accounts"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Default account for new contacts"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sync contact metadata [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sync contact metadata"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"My info"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Set up your profile"</string>
+    <string name="setting_about" msgid="3926137653588942297">"About Contacts"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Settings"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Share visible contacts"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Failed to share visible contacts."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Share favourite contacts"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Share all contacts"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Failed to share contacts."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Import/Export contacts"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Import contacts"</string>
+    <string name="share_error" msgid="665756457151793108">"This contact cannot be shared."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"There are no contacts to share."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Search"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contacts to display"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contacts to display"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Define customised view"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Save"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Search contacts"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favourites"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"No contacts."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Clear frequents"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Select SIM card"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Manage accounts"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Import/export"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blocked numbers"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"stop searching"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Clear search"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Contact display options"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Account"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Always use this for calls"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Call with"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Call with a note"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Type a note to send with call ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SEND &amp; CALL"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> unread items. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> unread item. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Build version"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open-source licences"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licence details for open-source software"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privacy Policy"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Terms of Service"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open-source licences"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Failed to open the URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> checked"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> not checked"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Place video call"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Delete"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipsis"</string>
+</resources>
diff --git a/res-common/values-en-rIN-sw600dp/strings.xml b/res-common/values-en-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..e93a6db
--- /dev/null
+++ b/res-common/values-en-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Device"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"There are no exportable contacts. If you do have contacts on your tablet, some data providers may not allow the contacts to be exported from the tablet."</string>
+</resources>
diff --git a/res-common/values-en-rIN/strings.xml b/res-common/values-en-rIN/strings.xml
new file mode 100644
index 0000000..974acbf
--- /dev/null
+++ b/res-common/values-en-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text copied"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copy to clipboard"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Call <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Call home"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Call mobile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Call work"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Call work fax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Call home fax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Call pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Call"</string>
+    <string name="call_callback" msgid="687494744634190411">"Call callback"</string>
+    <string name="call_car" msgid="9078083109758282133">"Call car"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Call company main"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Call ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Call main"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Call fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Call radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Call telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Call TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Call work mobile"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Call work pager"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Call <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Call MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Call)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Text <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Text home"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Text mobile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Text work"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Text work fax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Text home fax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Text pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Text"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Text callback"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Text car"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Text company main"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Text ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Text main"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Text fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Text radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Text telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Text TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Text work mobile"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Text work pager"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Text <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Text MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Message)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Make video call"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Clear frequently contacted?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Clearing frequently contacted…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Available"</string>
+    <string name="status_away" msgid="6267905184545881094">"Away"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Busy"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Other"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directory"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Work directory"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"All contacts"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Searching…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"More than <xliff:g id="COUNT">%d</xliff:g> found."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"No contacts"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> found</item>
+      <item quantity="one">1 found</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Quick contact for <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(No name)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Frequently contacted"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"View contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"All contacts with phone numbers"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Work profile contacts"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"View updates"</string>
+    <string name="account_phone" msgid="325867897209266837">"Device"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Name"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nickname"</string>
+    <string name="full_name" msgid="885420216812981202">"Name"</string>
+    <string name="name_given" msgid="4153709115654909377">"First name"</string>
+    <string name="name_family" msgid="5317387657540738981">"Surname"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Name prefix"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Middle name"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Name suffix"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Phonetic name"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Phonetic first name"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Phonetic middle name"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Phonetic surname"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Phone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Address"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisation"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relationship"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Special date"</string>
+    <string name="sms" msgid="8086289395154598654">"Text message"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Address"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Company"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Title"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Labels"</string>
+    <string name="email_home" msgid="2230967805906450693">"Email home"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Email mobile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Email work"</string>
+    <string name="email_other" msgid="4601881243553289615">"Email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Street"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Neighbourhood"</string>
+    <string name="postal_city" msgid="3173008531169519309">"City"</string>
+    <string name="postal_region" msgid="1695206048198921115">"County"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postcode"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Country"</string>
+    <string name="map_home" msgid="1221397355014741634">"View home address"</string>
+    <string name="map_work" msgid="9015981646907637207">"View work address"</string>
+    <string name="map_other" msgid="55098598855607997">"View address"</string>
+    <string name="map_custom" msgid="4943554530347163288">"View <xliff:g id="CUSTOM">%s</xliff:g> address"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chat using AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chat using Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chat using Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chat using Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chat using QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chat using Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chat using ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chat using Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"delete"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expand or collapse name fields"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expand or collapse phonetic name fields"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"All contacts"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Starred"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Customise"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"All other contacts"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"All contacts"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Remove sync group"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Add sync group"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"More groups…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Removing \"<xliff:g id="GROUP">%s</xliff:g>\" from sync will also remove any ungrouped contacts from sync."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Saving display options…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Done"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancel"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Customised view"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Save imported contacts to:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Import from SIM card"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Import from SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Import from SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Import from .vcf file"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancel import of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancel export of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Couldn\'t cancel vCard import/export"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Unknown error."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Couldn\'t open \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Couldn\'t start the exporter: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"There is no exportable contact."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"You have disabled a required permission."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"An error occurred during export: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Required filename is too long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O error"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Not enough memory. The file may be too large."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Couldn\'t parse vCard for an unexpected reason."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"The format isn\'t supported."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Couldn\'t collect meta information of given vCard file(s)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"One or more files couldn\'t be imported (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Finished exporting <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Finished exporting contacts."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Finished exporting contacts, click the notification to share contacts."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tap to share contacts."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exporting <xliff:g id="FILENAME">%s</xliff:g> cancelled."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exporting contact data"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Contact data is being exported."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Couldn\'t get database information."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"There are no exportable contacts. If you do have contacts on your phone, some data providers may not allow the contacts to be exported from the phone."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"The vCard composer didn\'t start properly."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Couldn\'t export"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"The contact data wasn\'t exported.\nReason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importing <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Couldn\'t read vCard data"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Reading vCard data cancelled"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Finished importing vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importing <xliff:g id="FILENAME">%s</xliff:g> cancelled"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> will be imported shortly."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"The file will be imported shortly."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard import request was rejected. Try again later."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> will be exported shortly."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"The file will be exported shortly."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Contacts will be exported shortly."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard export request was rejected. Try again later."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Caching vCard(s) to local temporary storage. The actual import will start soon."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Couldn\'t import vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contact received over NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Export contacts?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Caching"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importing <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Export to .vcf file"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sort by"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"First name"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Surname"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Name format"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"First name first"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Surname first"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Accounts"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Default account for new contacts"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sync contact metadata [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sync contact metadata"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"My info"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Set up your profile"</string>
+    <string name="setting_about" msgid="3926137653588942297">"About Contacts"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Settings"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Share visible contacts"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Failed to share visible contacts."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Share favourite contacts"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Share all contacts"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Failed to share contacts."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Import/Export contacts"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Import contacts"</string>
+    <string name="share_error" msgid="665756457151793108">"This contact cannot be shared."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"There are no contacts to share."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Search"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contacts to display"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contacts to display"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Define customised view"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Save"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Search contacts"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favourites"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"No contacts."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Clear frequents"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Select SIM card"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Manage accounts"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Import/export"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blocked numbers"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"stop searching"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Clear search"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Contact display options"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Account"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Always use this for calls"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Call with"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Call with a note"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Type a note to send with call ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SEND &amp; CALL"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> unread items. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> unread item. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Build version"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open-source licences"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licence details for open-source software"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privacy Policy"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Terms of Service"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open-source licences"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Failed to open the URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> checked"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> not checked"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Place video call"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Delete"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipsis"</string>
+</resources>
diff --git a/res-common/values-es-rUS-sw600dp/strings.xml b/res-common/values-es-rUS-sw600dp/strings.xml
new file mode 100644
index 0000000..596bd40
--- /dev/null
+++ b/res-common/values-es-rUS-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"No hay contactos exportables. Si tienes contactos en la tablet, es posible que algunos proveedores de datos no permitan la exportación de contactos desde la tablet."</string>
+</resources>
diff --git a/res-common/values-es-rUS/strings.xml b/res-common/values-es-rUS/strings.xml
new file mode 100644
index 0000000..c0304f6
--- /dev/null
+++ b/res-common/values-es-rUS/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Se copió el texto."</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiar en el portapapeles"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Llamar a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Llamar a casa"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Llamar al móvil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Llamar al trabajo"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Llamar al fax del trabajo"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Llamar al fax de casa"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Llamar a localizador"</string>
+    <string name="call_other" msgid="4472141328347894937">"Llamar"</string>
+    <string name="call_callback" msgid="687494744634190411">"Llamar a un número de devolución de llamada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Llamar al automóvil"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Llamar al teléfono principal de la empresa"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Llamar a ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Llamar al teléfono principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Llamar a fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Llamar a radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Llamar a télex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Llamar a TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Llamar al móvil del trabajo"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Llamar al localizador del trabajo"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Llamar a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Llamar a MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Llamar)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Enviar SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Enviar SMS a casa"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Enviar SMS al móvil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Enviar SMS al trabajo"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Enviar SMS al fax del trabajo"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Enviar SMS al fax de casa"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Enviar SMS a localizador"</string>
+    <string name="sms_other" msgid="910895193552957097">"Enviar SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Enviar SMS a un número de devolución de llamada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Enviar SMS al automóvil"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Enviar SMS al teléfono principal de la empresa"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Enviar SMS a ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Enviar SMS al teléfono principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Enviar SMS a fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Enviar SMS a radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Enviar SMS a télex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Enviar SMS a TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Enviar SMS al móvil del trabajo"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Enviar SMS al localizador del trabajo"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Enviar SMS a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Enviar SMS a MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Enviar mensaje)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Realizar videollamada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"¿Borrar contactos frecuentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Borrarás la lista de personas con las que te pones en contacto frecuentemente de las aplicaciones Contactos y Teléfono. Además, tus aplicaciones de correo deberán establecer tus preferencias nuevamente."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Borrando contactos frecuentes…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponible"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ausente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupado"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contactos"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Otro"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directorio"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directorio del trabajo"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Todos los contactos"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Buscando…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Más de <xliff:g id="COUNT">%d</xliff:g> encontrados"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"No hay contactos"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">Se encontraron <xliff:g id="COUNT">%d</xliff:g>.</item>
+      <item quantity="one">Se encontró 1.</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contacto rápido para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sin nombre)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contactados con frecuencia"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Ver contacto"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Todos los contactos con número de teléfono"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contactos del perfil de trabajo"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ver actualizaciones"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nombre"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Apodo"</string>
+    <string name="full_name" msgid="885420216812981202">"Nombre"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nombre"</string>
+    <string name="name_family" msgid="5317387657540738981">"Apellido"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Tratamiento"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Segundo nombre"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Título académico o profesional"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nombre fonético"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nombre fonético"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Segundo nombre fonético"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Apellido fonético"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Teléfono"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Correo electrónico"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Dirección"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"MI"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organización"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relación"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Fecha especial"</string>
+    <string name="sms" msgid="8086289395154598654">"Mensaje de texto"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Dirección"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Título"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Sitio web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiquetas"</string>
+    <string name="email_home" msgid="2230967805906450693">"Correo personal"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Correo móvil"</string>
+    <string name="email_work" msgid="7065971921227432400">"Correo laboral"</string>
+    <string name="email_other" msgid="4601881243553289615">"Enviar correo a"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Enviar correo a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Enviar correo"</string>
+    <string name="postal_street" msgid="881349814077356134">"Calle"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Apartado postal"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Barrio"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Ciudad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Código postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ver dirección personal"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ver dirección laboral"</string>
+    <string name="map_other" msgid="55098598855607997">"Ver dirección"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ver dirección <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chat mediante AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chat mediante Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chat mediante Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chat mediante Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chat mediante QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chat mediante Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chat mediante ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chat mediante Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatear"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"borrar"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expandir o contraer campos de nombre"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expandir o contraer campos de nombre fonético"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Todos los contactos"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Destacados"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizar"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contacto"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Todos los otros contactos"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Todos los contactos"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Eliminar grupo de sincronización"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Agregar grupo de sincronización"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Más grupos…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Si eliminas \"<xliff:g id="GROUP">%s</xliff:g>\" de la sincronización, también se eliminarán todos los contactos no agrupados."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Guardando opciones de visualización…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Listo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancelar"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Vista personalizada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Guardar los contactos que se importaron en:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importar desde tarjeta SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importar desde SIM <xliff:g id="SIM_NAME">^1</xliff:g> (<xliff:g id="SIM_NUMBER">^2</xliff:g>)"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importar desde SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importar desde archivo .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"¿Deseas cancelar la importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"¿Deseas cancelar la exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"No se canceló impor./expor. de vCard."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Error desconocido"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"No se pudo abrir el archivo \"<xliff:g id="FILE_NAME">%s</xliff:g>\" (<xliff:g id="EXACT_REASON">%s</xliff:g>)."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"No se pudo iniciar el exportador (\"<xliff:g id="EXACT_REASON">%s</xliff:g>\")."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"No hay contactos para exportar."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Inhabilitaste un permiso necesario."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Se produjo un error durante la exportación (\"<xliff:g id="EXACT_REASON">%s</xliff:g>\")."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"El nombre de archivo obligatorio es demasiado largo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Error de E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Memoria insuficiente (es probable que el archivo sea muy grande)."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"No se pudo analizar el archivo vCard debido a un error inesperado."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"El formato no se admite."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"No se pudieron recopilar los metadatos de los archivos vCard proporcionados."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"No se pudieron importar uno o más archivos (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportación de <xliff:g id="FILENAME">%s</xliff:g> finalizada"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Finalizó la exportación de contactos"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Se completó la exportación de los contactos, haz clic en la notificación para compartir contactos."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Toca para compartir contactos."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Se canceló la exportación de <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportando datos de contacto"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Se están exportando los datos de contacto."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"No se pudo obtener la información de la base de datos."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"No hay contactos exportables. Si tienes contactos en el dispositivo, es posible que algunos proveedores de datos no permitan la exportación de contactos desde el dispositivo."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"El compositor de la vCard no se inició correctamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"No se pudo exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"No se exportaron los datos del contacto.\nMotivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"No se pudieron leer los datos de vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Se canceló la lectura de datos de vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Finalizó la importación de vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Se canceló la importación de <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> se importará en breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"El archivo se importará en breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Se rechazó la solicitud de importación de vCard. Vuelve a intentarlo más tarde."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> se exportará en breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"El archivo se exportará en breve."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Los contactos se exportarán en breve."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Se rechazó la solicitud de exportación de vCard. Vuelve a intentarlo más tarde."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contactar"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Almacenando vCard(s) en caché local temporal. La importación comenzará pronto."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"No se pudo importar el archivo de vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Se recibió el contacto por NFC."</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"¿Exportar contactos?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Almacenando en caché"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportar a archivo .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordenar por"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nombre"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Apellido"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato del nombre"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Nombre primero"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Apellido primero"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Cuentas"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Cuenta predeterminada para los contactos nuevos"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizar metadatos de contactos [PRUEBA INTERNA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizar metadatos de contactos"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mi información"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configura tu perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Acerca de Contactos"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Configuración"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Compartir contactos visibles"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Se produjo un error al compartir los contactos visibles."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Compartir contactos favoritos"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Compartir todos los contactos"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"No se pudieron compartir los contactos."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importar/exportar contactos"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importar contactos"</string>
+    <string name="share_error" msgid="665756457151793108">"No es posible compartir este contacto."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"No hay contactos para compartir."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Buscar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contactos para mostrar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contactos para mostrar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definir vista personalizada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Guardar"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Buscar contactos"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritos"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"No hay contactos."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Borrar contactos frecuentes"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Seleccionar tarjeta SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Administrar tus cuentas"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importar/exportar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloqueados"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"a través de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> a través de <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"detener la búsqueda"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Eliminar búsqueda"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opciones de visualización de contactos"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Cuenta"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Usar siempre para llamadas"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Llamar con"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Llamada con una nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escribe una nota para enviar con la llamada…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIAR Y LLAMAR"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> elementos no leídos. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> elemento no leído. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versión de la compilación"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licencias de código abierto"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalles de la licencia de software de código abierto"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de privacidad"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Condiciones del servicio"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licencias de código abierto"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"No se pudo abrir la url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> está marcado"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> no está marcado"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Hacer una videollamada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Eliminar"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Elipsis"</string>
+</resources>
diff --git a/res-common/values-es-sw600dp/strings.xml b/res-common/values-es-sw600dp/strings.xml
new file mode 100644
index 0000000..4635a48
--- /dev/null
+++ b/res-common/values-es-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"No hay contactos que exportar. Si ya tienes contactos en el tablet, es posible que el proveedor de datos no permita que se exporten los contactos del dispositivo."</string>
+</resources>
diff --git a/res-common/values-es/strings.xml b/res-common/values-es/strings.xml
new file mode 100644
index 0000000..cb27798
--- /dev/null
+++ b/res-common/values-es/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texto copiado"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiar en el portapapeles"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Llamar a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Llamar a casa"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Llamar al móvil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Llamar al trabajo"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Llamar al fax del trabajo"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Llamar al fax de casa"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Llamar al busca"</string>
+    <string name="call_other" msgid="4472141328347894937">"Llamar"</string>
+    <string name="call_callback" msgid="687494744634190411">"Llamar a un número de devolución de llamada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Llamar al coche"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Llamar al teléfono principal de la empresa"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Llamar a RDSI"</string>
+    <string name="call_main" msgid="4640261071249938558">"Llamar al teléfono principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Llamar al fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Llamar a la radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Llamar al télex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Llamar a TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Llamar al móvil del trabajo"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Llamar al busca del trabajo"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Llamar al <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Llamar a MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Llamar)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Enviar SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Enviar SMS a casa"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Enviar SMS al móvil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Enviar SMS al trabajo"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Enviar SMS al fax del trabajo"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Enviar SMS al fax de casa"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Enviar SMS al busca"</string>
+    <string name="sms_other" msgid="910895193552957097">"Enviar SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Enviar SMS a un número de devolución de llamada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Enviar SMS al coche"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Enviar SMS al teléfono principal de la empresa"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Enviar SMS a RDSI"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Enviar SMS al número de teléfono principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Enviar SMS al fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Enviar SMS a la radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Enviar SMS al télex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Enviar SMS a TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Enviar SMS al móvil del trabajo"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Enviar SMS al busca del trabajo"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Enviar SMS al <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Enviar SMS a MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Enviar SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Hacer videollamada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"¿Borrar contactos frecuentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Vas a borrar la lista de contactos frecuentes de las aplicaciones Contactos y Teléfono y obligarás a las aplicaciones de correo electrónico a que memoricen tus preferencias de nuevo."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Borrando contactos frecuentes…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponible"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ausente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupado"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contactos"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Otros"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directorio"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directorio de trabajo"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Todos los contactos"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Buscando..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Se han encontrado más de <xliff:g id="COUNT">%d</xliff:g> contactos."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ningún contacto"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactos encontrados</item>
+      <item quantity="one">1 contacto encontrado</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contacto rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sin nombre)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contactos frecuentes"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Ver contacto"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Todos los contactos con número"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contactos del perfil de trabajo"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ver actualizaciones"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nombre"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Apodo"</string>
+    <string name="full_name" msgid="885420216812981202">"Nombre"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nombre"</string>
+    <string name="name_family" msgid="5317387657540738981">"Apellido"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefijo del nombre"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Segundo nombre"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufijo del nombre"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nombre fonético"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nombre fonético"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Segundo nombre fonético"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Apellido fonético"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Teléfono"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Correo electrónico"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Dirección"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organización"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relación"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Fecha especial"</string>
+    <string name="sms" msgid="8086289395154598654">"Mensaje de texto"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Dirección"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Cargo"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Sitio web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiquetas"</string>
+    <string name="email_home" msgid="2230967805906450693">"Enviar correo a casa"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Enviar correo al móvil"</string>
+    <string name="email_work" msgid="7065971921227432400">"Enviar correo al trabajo"</string>
+    <string name="email_other" msgid="4601881243553289615">"Enviar correo"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Enviar correo a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Correo electrónico"</string>
+    <string name="postal_street" msgid="881349814077356134">"Calle"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Apartado postal"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Vecindario"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Ciudad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Código postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ver dirección de casa"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ver dirección del trabajo"</string>
+    <string name="map_other" msgid="55098598855607997">"Ver dirección"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ver dirección de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatear con AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatear con Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatear con Yahoo!"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatear con Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatear con QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatear con Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatear con ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatear con Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"eliminar"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Ampliar o contraer campos de nombre"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Mostrar u ocultar campos de nombre fonéticos"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Todos los contactos"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Destacados"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizar"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contacto"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Todos los demás contactos"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Todos los contactos"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Eliminar grupo de sincronización"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Añadir grupo de sincronización"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Más grupos…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Si quitas \"<xliff:g id="GROUP">%s</xliff:g>\" de las sincronización, también se quitarán todos los contactos no agrupados."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Guardando opciones de visualización…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Listo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancelar"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Vista personalizada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Guardar contactos importados en:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importar contactos de la tarjeta SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importar de SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importar de SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importar de archivo .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"¿Quieres cancelar la importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"¿Quieres cancelar la exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Error al cancelar la importación/exportación de vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Error desconocido"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"No se ha podido abrir el archivo \"<xliff:g id="FILE_NAME">%s</xliff:g>\" (<xliff:g id="EXACT_REASON">%s</xliff:g>)."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"No se ha podido iniciar el exportador (\"<xliff:g id="EXACT_REASON">%s</xliff:g>\")."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"No hay contactos que exportar."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Has inhabilitado un permiso necesario."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Se ha producido un error durante la exportación (\"<xliff:g id="EXACT_REASON">%s</xliff:g>\")."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"El nombre de archivo obligatorio es demasiado largo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Error de E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"No hay suficiente espacio de memoria (el archivo puede ser demasiado grande)."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"No se ha podido analizar el archivo vCard debido a un error inesperado."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formato no admitido"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"No se han podido recuperar los metadatos de los archivos vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"No se ha podido importar uno o más archivos (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportación de <xliff:g id="FILENAME">%s</xliff:g> finalizada"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Los contactos se han exportado."</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Se ha cancelado la exportación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportando datos de contacto..."</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"No se ha podido obtener información de la base de datos."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"No hay contactos que exportar. Si ya tienes contactos en el teléfono, es posible que el proveedor de datos no permita que se exporten los contactos del teléfono."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"El redactor de vCard no se ha iniciado correctamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Error al exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"No se han exportado los datos de contacto(\nmotivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importando <xliff:g id="NAME">%s</xliff:g>..."</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Error al leer los datos de vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lectura de datos de vCard cancelada"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importación de <xliff:g id="FILENAME">%s</xliff:g> de vCard finalizada"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Se ha cancelado la importación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> se importará en breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"El archivo se importará en breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Se ha rechazado la solicitud de importación de vCard. Inténtalo de nuevo más tarde."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> se exportará en breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"El archivo se exportará en breve."</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Se ha rechazado la solicitud de exportación de vCard. Inténtalo de nuevo más tarde."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contacto"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Se están almacenando los archivos vCard en la caché. La importación empezará pronto."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Error al importar el archivo vCard"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contacto recibido por NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"¿Exportar contactos?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Almacenando en caché..."</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportar a archivo .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordenar por"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nombre"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Apellido"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato de nombre"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Nombre primero"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Apellido primero"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Cuentas"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Cuenta predeterminada para nuevos contactos"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizar metadatos de contactos [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizar metadatos de contactos"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mi información"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurar el perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Información sobre Contactos"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Ajustes"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Compartir contactos visibles"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"No ha sido posible compartir los contactos visibles."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Compartir contactos favoritos"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Compartir todos los contactos"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Error al compartir contactos"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importar/exportar contactos"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importar contactos"</string>
+    <string name="share_error" msgid="665756457151793108">"Este contacto no se puede compartir."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"No hay contactos que compartir."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Buscar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contactos que mostrar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contactos que mostrar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definir la vista personalizada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Guardar"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Buscar contactos"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritos"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"No hay ningún contacto."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Borrar frecuentes"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Seleccionar tarjeta SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Administrar cuentas"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importar/exportar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloqueados"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"a través de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> a través de <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"dejar de buscar"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Borrar la búsqueda"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opciones para mostrar contactos"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Cuenta"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Usar siempre esta para llamadas"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Llamar con"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Llamada con una nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escribe una nota para enviarla con la llamada..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIAR Y LLAMAR"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> elementos no leídos. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> elemento no leído. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versión de la compilación"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licencias de software libre"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalles de las licencias de software libre"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de Privacidad"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Condiciones de Servicio"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licencias de software libre"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"No se ha podido abrir la URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Se ha seleccionado <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"No se ha seleccionado <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Hacer videollamada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Eliminar"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Puntos suspensivos"</string>
+</resources>
diff --git a/res-common/values-et-rEE-sw600dp/strings.xml b/res-common/values-et-rEE-sw600dp/strings.xml
new file mode 100644
index 0000000..86fbdf7
--- /dev/null
+++ b/res-common/values-et-rEE-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Seade"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Eksporditavaid kontakte pole. Kui teil siiski on tahvelarvutis kontakte, ei pruugi mõned andmesidepakkujad kontaktide eksportimist tahvelarvutist lubada."</string>
+</resources>
diff --git a/res-common/values-et-rEE/strings.xml b/res-common/values-et-rEE/strings.xml
new file mode 100644
index 0000000..9bcde24
--- /dev/null
+++ b/res-common/values-et-rEE/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekst on kopeeritud"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopeeri lõikelauale"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Helista numbrile <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Helista kodutelefoninumbrile"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Helista mobiilinumbrile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Helista töönumbrile"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Helista tööfaksinumbrile"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Helista kodufaksinumbrile"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Helista piiparinumbrile"</string>
+    <string name="call_other" msgid="4472141328347894937">"Helista"</string>
+    <string name="call_callback" msgid="687494744634190411">"Helista tagasihelistusnumbrile"</string>
+    <string name="call_car" msgid="9078083109758282133">"Helista autotelefoninumbrile"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Helista ettevõtte põhinumbrile"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Helista ISDN-telefoninumbrile"</string>
+    <string name="call_main" msgid="4640261071249938558">"Helista põhinumbrile"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Helista faksinumbrile"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Helista raadiotelefoninumbrile"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Helista teleksinumbrile"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Helista TTY-/TDD-numbrile"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Helista töömobiilinumbrile"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Helista tööpiiparinumbrile"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Helista numbrile <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Helista MMS-i numbrile"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (helistamine)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Saada sõnum numbrile <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Saada sõnum kodutelefoninumbrile"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Saada sõnum mobiilinumbrile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Saada sõnum töönumbrile"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Saada sõnum tööfaksinumbrile"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Saada sõnum kodufaksinumbrile"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Saada sõnum piiparinumbrile"</string>
+    <string name="sms_other" msgid="910895193552957097">"Saada sõnum"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Saada sõnum tagasihelistusnumbrile"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Saada sõnum autotelefoninumbrile"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Saada sõnum ettevõtte põhitelefoninumbrile"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Saada sõnum ISDN-telefoninumbrile"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Saada sõnum põhinumbrile"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Saada sõnum faksinumbrile"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Saada sõnum raadiotelefoninumbrile"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Saada sõnum teleksinumbrile"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Saada sõnum TTY-/TDD-numbrile"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Saada sõnum töömobiilinumbrile"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Saada sõnum tööpiiparinumbrile"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Saada sõnum numbrile <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Saada sõnum MMS-i numbrile"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (sõnum)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Videokõne tegemine"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Kas kustutada sagedased kontaktid?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Kustutate rakendustes Kontaktid ja Telefon sagedaste kontaktide loendi, mistõttu meilirakendused peavad teie adresseerimiseelistused uuesti omandama."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Saged. kontaktide kustutamine ..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Saadaval"</string>
+    <string name="status_away" msgid="6267905184545881094">"Eemal"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Hõivatud"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktid"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Muu"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Kataloog"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Töökontaktide kataloog"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Kõik kontaktid"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Otsimine ..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Leitud rohkem kui <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Kontaktid puuduvad"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">Leiti <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Leiti 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Kiirkontakt: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nimi puudub)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Sageli valitud kontaktisikud"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Vaadake kontakti"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Kõik telefoninumbritega kontaktid"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Tööprofiili kontaktid"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Kuva värskendused"</string>
+    <string name="account_phone" msgid="325867897209266837">"Seade"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nimi"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Hüüdnimi"</string>
+    <string name="full_name" msgid="885420216812981202">"Nimi"</string>
+    <string name="name_given" msgid="4153709115654909377">"Eesnimi"</string>
+    <string name="name_family" msgid="5317387657540738981">"Perekonnanimi"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Nime eesliide"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Teine nimi"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Nime järelliide"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Foneetiline nimi"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Foneetiline eesnimi"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Foneetiline keskmine nimi"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Foneetiline perekonnanimi"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-post"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Aadress"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Kiirsuhtlus"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisatsioon"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Suhe"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Erikuupäev"</string>
+    <string name="sms" msgid="8086289395154598654">"Tekstisõnum"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Aadress"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Ettevõte"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Nimetus"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Märkmed"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Veebisait"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Sildid"</string>
+    <string name="email_home" msgid="2230967805906450693">"Saada meilisõnum kodusele aadressile"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Saada meilisõnum mobiilile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Saada meiliaadress tööaadressile"</string>
+    <string name="email_other" msgid="4601881243553289615">"Meilimine"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Saada meilisõnum aadressile <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Meilimine"</string>
+    <string name="postal_street" msgid="881349814077356134">"Tänav"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postkast"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Naabruskond"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Linn"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Osariik"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Sihtnumber"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Riik"</string>
+    <string name="map_home" msgid="1221397355014741634">"Kuva kodune aadress"</string>
+    <string name="map_work" msgid="9015981646907637207">"Kuva tööaadress"</string>
+    <string name="map_other" msgid="55098598855607997">"Kuva aadress"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Kuva aadress (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Vestlus AIM-i kasutades"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Vestlus Windows Live\'i kasutades"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Vestlus Yahood kasutades"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Vestlus Skype\'i kasutades"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Vestlus QQ kasutades"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Vestlus Google Talki kasutades"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Vestlus ICQ-d kasutades"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Vestlus Jabberit kasutades"</string>
+    <string name="chat" msgid="6297650784873558837">"Vestlus"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"kustutamine"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Nimeväljade laiendamine või ahendamine"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Foneetiliste nimede väljade laiendamine või ahendamine"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Kõik kontaktid"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Tärniga tähistatud"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Kohanda"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Kõik teised kontaktid"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Kõik kontaktid"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Eemalda sünkroonimisrühm"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Lisa sünkroonimisrühm"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Rohkem rühmi ..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Rühma „<xliff:g id="GROUP">%s</xliff:g>” eemaldamisel sünkroonimisest eemaldatakse sünkroonimisest ka kõik rühmitamata kontaktid."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Kuvavalikute salvestamine ..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Valmis"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Tühista"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Kohandatud vaade"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Salvestage imporditud kontaktid kontole:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Impordi SIM-kaardilt"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importimine SIM-kaardilt <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importimine SIM-kaardilt <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importimine VCF-failist"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Kas tühistada faili <xliff:g id="FILENAME">%s</xliff:g> importimine?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Kas tühistada faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCardi impordi/ekspordi tühist. ebaõnn."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Tundmatu viga."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Faili „<xliff:g id="FILE_NAME">%s</xliff:g>” ei saa avada: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Eksportijat ei saa käivitada: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Eksporditavad kontaktid puuduvad."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Olete nõutud loa keelanud."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Viga eksportimisel: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Kohustuslik failinimi on liiga pikk („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O viga"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Pole piisavalt mälu. Fail võib olla liiga suur."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Ootamatul põhjusel vCardi sõelumine ebaõnnestus."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Vormingut ei toetata."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"vCardi faili(de) metaandmete kogumine ebaõnnestus."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Vähemalt ühe faili importimine ebaõnnestus (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine on lõpetatud."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontaktide eksportimine on lõpetatud."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktide eksportimine lõpetati. Kontaktide jagamiseks klõpsake märguandel."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Puudutage kontaktide jagamiseks."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine tühistati."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontaktandmete eksportimine"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktide andmed eksporditakse."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Andmebaasiteabe hankimine ebaõnnestus."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Eksporditavaid kontakte pole. Kui teil siiski on telefonis kontakte, ei pruugi mõned andmesidepakkujad kontaktide eksportimist telefonist lubada."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCardi helilooja ei käivitunud korralikult."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Eksport ebaõnnestus"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontaktandmeid ei eksporditud.\nPõhjus: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importimine: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCardi andmete lugemine ebaõnnestus"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCardi andmete lugemine tühistati"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCardi faili <xliff:g id="FILENAME">%s</xliff:g> importimine lõpetatud"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Faili <xliff:g id="FILENAME">%s</xliff:g> importimine tühistati"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Fail <xliff:g id="FILENAME">%s</xliff:g> imporditakse peagi."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fail imporditakse peagi."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCardi importimistaotlus lükati tagasi. Proovige hiljem uuesti."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Fail <xliff:g id="FILENAME">%s</xliff:g> eksporditakse peagi."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fail eksporditakse peagi."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktid eksporditakse peagi."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCardi eksportimistaotlus lükati tagasi. Proovige hiljem uuesti."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCardi(de) vahemälustamine kohalikku ajutisse mäluruumi. Tegelik importimine algab peagi."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCardi importimine ebaõnnestus."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt saadud NFC kaudu"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Eksportida kontakt?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Vahemällu salvestamine"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importimine: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> – <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksportimine VCF-faili"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortimisalus"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Eesnimi"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Perekonnanimi"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Nimevorming"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Eesnimi enne"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Perekonnanimi enne"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Kontod"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Vaikekonto uute kontaktide jaoks"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sünkrooni kontakti metaandmed [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sünkrooni kontakti metaandmed"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Minu teave"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Profiili seadistamine"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Teave rakenduse Kontaktid kohta"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Seaded"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Jaga nähtavaid kontakte"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nähtavate kontaktide jagamine ebaõnnestus."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Jaga lemmikkontakte"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Jaga kõiki kontakte"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kontaktide jagamine ebaõnnestus."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kontaktide import/eksport"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Impordi kontaktid"</string>
+    <string name="share_error" msgid="665756457151793108">"Seda kontakti ei saa jagada."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Jagamiseks ei ole ühtki kontakti."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Otsing"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kuvatavad kontaktisikud"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kuvatavad kontaktisikud"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Kohandatud vaate määramine"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Salvesta"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Otsige kontakte"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Lemmikud"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Kontaktid puuduvad."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Sagedaste kustutamine"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM-kaardi valimine"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Kontode haldamine"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Impordi/ekspordi"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokeeritud numbrid"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"allika <xliff:g id="SOURCE">%1$s</xliff:g> kaudu"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> allika <xliff:g id="SOURCE">%2$s</xliff:g> kaudu"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"otsimise peatamine"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Otsingu kustutamine"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kontaktide kuvavalikud"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konto"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Kasuta helistamiseks alati seda"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Helistamine kontoga"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Kõne koos märkusega"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Sisestage märkus, mis koos kõnega saata ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SAADA JA HELISTA"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> lugemata üksust. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> lugemata üksus. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Järguversioon"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Avatud lähtekoodiga litsentsid"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Avatud lähtekoodiga tarkvara litsentsi üksikasjad"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privaatsuseeskirjad"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Teenusetingimused"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Avatud lähtekoodi litsentsid"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"URL-i avamine ebaõnnestus."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Üksus <xliff:g id="ACCOUNT_INFO">%s</xliff:g> on märgitud"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Üksus <xliff:g id="ACCOUNT_INFO">%s</xliff:g> pole märgitud"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Videokõne tegemine"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Kustuta"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Mõttepunktid"</string>
+</resources>
diff --git a/res-common/values-eu-rES-sw600dp/strings.xml b/res-common/values-eu-rES-sw600dp/strings.xml
new file mode 100644
index 0000000..b9d4490
--- /dev/null
+++ b/res-common/values-eu-rES-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Gailua"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Ez dago esporta daitekeen kontakturik. Tabletan kontaktuak badituzu, baliteke datu-hornitzaileek kontaktuak telefonotik esportatzen ez uztea."</string>
+</resources>
diff --git a/res-common/values-eu-rES/strings.xml b/res-common/values-eu-rES/strings.xml
new file mode 100644
index 0000000..fa84958
--- /dev/null
+++ b/res-common/values-eu-rES/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Testua kopiatu da"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiatu arbelean"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Deitu <xliff:g id="CUSTOM">%s</xliff:g> zenbakira"</string>
+    <string name="call_home" msgid="1479549630992276827">"Deitu etxera"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Deitu mugikorrera"</string>
+    <string name="call_work" msgid="8299062439076337075">"Deitu lanera"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Deitu laneko faxera"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Deitu etxeko faxera"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Deitu bilagailura"</string>
+    <string name="call_other" msgid="4472141328347894937">"Deitu"</string>
+    <string name="call_callback" msgid="687494744634190411">"Dei bidezko erantzuna"</string>
+    <string name="call_car" msgid="9078083109758282133">"Deitu autoko telefonora"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Deitu enpresaren zenbaki nagusira"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Deitu ISDN zenbakira"</string>
+    <string name="call_main" msgid="4640261071249938558">"Deitu zenbaki nagusira"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Deitu faxera"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Deitu irratira"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Deitu telexera"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Deitu TTY/TDD zenbakira"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Deitu laneko mugikorrera"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Deitu laneko bilagailura"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Deitu <xliff:g id="ASSISTANT">%s</xliff:g> zenbakira"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Deitu MMS zenbakira"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (deitu)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Bidali testu-mezua honi: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Bidali testu-mezua etxera"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Bidali testu-mezua mugikorrera"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Bidali testu-mezua lanera"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Bidali testu-mezua laneko faxera"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Bidali testu-mezua etxeko faxera"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Bidali testu-mezua bilagailura"</string>
+    <string name="sms_other" msgid="910895193552957097">"Bidali testu-mezua"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Testu bidezko erantzuna"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Bidali testu-mezua autora"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Bidali testu-mezua enpresako zenbaki nagusira"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Bidali testu-mezua ISDN zenbakira"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Bidali testu-mezua zenbaki nagusira"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Bidali testu-mezua faxera"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Bidali testu-mezua irratira"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Bidali testu-mezua telexera"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Bidali testu-mezua TTY/TDD zenbakira"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Bidali testu-mezua laneko mugikorrera"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Bidali testu-mezua laneko bilagailura"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Bidali testu-mezua honi: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Bidali testu-mezua MMS zenbakira"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (bidali SMS mezua)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Egin bideo-deia"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Sarri erabilitako kontaktuak garbitu?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Kontaktuak eta Telefonoa aplikazioetako sarri erabilitako kontaktuen zerrenda garbituko duzu; beraz, posta elektronikoaren aplikazioek helbideen hobespenak hutsetik ikasi beharko dituzte."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Sarri erabilitako kontaktuak garbitzen…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Libre"</string>
+    <string name="status_away" msgid="6267905184545881094">"Kanpoan"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Okupatuta"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktuak"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Beste bat"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktorioa"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Laneko kontaktuak"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Kontaktu guztiak"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Bilatzen…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> baino gehiago aurkitu dira."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ez dago kontakturik."</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> aurkitu dira</item>
+      <item quantity="one">Bat aurkitu da</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Honen kontaktu bizkorra: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Izenik ez)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Sarri kontaktatutakoak"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Ikusi kontaktua"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Telefono-zenbakiak dituzten kontaktu guztiak"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Laneko profileko kontaktuak"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ikusi berritasunak"</string>
+    <string name="account_phone" msgid="325867897209266837">"Gailua"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Izena"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Goitizena"</string>
+    <string name="full_name" msgid="885420216812981202">"Izena"</string>
+    <string name="name_given" msgid="4153709115654909377">"Izena"</string>
+    <string name="name_family" msgid="5317387657540738981">"Abizena"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Izenaren aurrizkia"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Bigarren izena"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Izenaren atzizkia"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Izen fonetikoa"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Izen fonetikoa"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Bigarren izen fonetikoa"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Abizen fonetikoa"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefonoa"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Helbide elektronikoa"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Helbidea"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Erakundea"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Harremana"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data berezia"</string>
+    <string name="sms" msgid="8086289395154598654">"Testu-mezua"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Helbidea"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Enpresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Lanpostua"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Oharrak"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Webgunea"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketak"</string>
+    <string name="email_home" msgid="2230967805906450693">"Bidali mezu elektronikoa etxera"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Bidali mezu elektronikoa mugikorrera"</string>
+    <string name="email_work" msgid="7065971921227432400">"Bidali mezu elektronikoa lanera"</string>
+    <string name="email_other" msgid="4601881243553289615">"Bidali mezu elektronikoa"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Bidali mezu elektronikoa <xliff:g id="CUSTOM">%s</xliff:g> helbidera"</string>
+    <string name="email" msgid="5624424151176351591">"Bidali mezu elektronikoa"</string>
+    <string name="postal_street" msgid="881349814077356134">"Kalea"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Posta-kutxa"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Auzoa"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Hiria"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estatua"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Posta-kodea"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Herrialdea"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ikusi etxeko helbidea"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ikusi laneko helbidea"</string>
+    <string name="map_other" msgid="55098598855607997">"Ikusi helbidea"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ikusi <xliff:g id="CUSTOM">%s</xliff:g> helbidea"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Txateatu AIM bidez"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Txateatu Windows Live bidez"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Txateatu Yahoo bidez"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Txateatu Skype bidez"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Txateatu QQ bidez"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Txateatu Google Talk bidez"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Txateatu ICQ bidez"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Txateatu Jabber bidez"</string>
+    <string name="chat" msgid="6297650784873558837">"Txateatu"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ezabatu"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Zabaldu edo tolestu izenen eremuak"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Zabaldu edo tolestu izen fonetikoen eremuak"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Kontaktu guztiak"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Izardunak"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Pertsonalizatu"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontaktua"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Beste kontaktu guztiak"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Kontaktu guztiak"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Kendu sinkronizazio-taldea"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Gehitu sinkronizazio-taldea"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Talde gehiago…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" sinkronizaziotik kentzen baduzu, talderik gabeko kontaktu guztiak ere ezabatuko dira."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Bistaratze-aukerak gordetzen…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Eginda"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Utzi"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Ikuspegi pertsonalizatua"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Gorde inportatutako kontaktuak hemen:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Inportatu SIM txarteletik"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Inportatu SIM honetatik: <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Inportatu SIM honetatik: <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Inportatu .vcf fitxategitik"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> fitxategiaren inportazioa utzi?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> fitxategiaren esportazioa utzi?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Ezin da vCard inportazioa/esportazioa utzi"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Errore ezezaguna."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Ezin izan da \"<xliff:g id="FILE_NAME">%s</xliff:g>\" ireki. Arrazoia: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Ezin izan da esportatzailea hasi. Arrazoia: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Ez dago esporta daitekeen kontakturik."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Desgaitu egin duzu beharrezko baimena."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Errore bat gertatu da esportatu bitartean. Arrazoia: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Beharrezko fitxategi-izena luzeegia (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Sarrera- edo irteera-errorea"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Ez dago nahikoa memoria. Baliteke fitxategia handiegia izatea."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Ezin izan da vCard analizatu ustekabeko arrazoiren batengatik."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formatua ez da bateragarria."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Ezin izan da emandako vCard txartelaren fitxategien meta-informazioa bildu."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Ezin izan da fitxategi bat edo gehiago inportatu (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Amaitu <xliff:g id="FILENAME">%s</xliff:g> esportatzen."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Esportatu dira kontaktuak."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Esportatu dira kontaktuak. Haiek partekatzeko, sakatu jakinarazpena."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Sakatu kontaktuak partekatzeko."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> fitxategia esportatzeari utzi zaio."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontaktatzeko datuak esportatzen"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktuen datuak esportatzen ari gara."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Ezin izan da datu-baseko informazioa lortu."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Ez dago esporta daitekeen kontakturik. Telefonoan kontaktuak badituzu, baliteke datu-hornitzaileek kontaktuak telefonotik esportatzen ez uztea."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard txartelen idazlea ez da behar bezala hasi."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Ezin da esportatu"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Ez dira kontaktuaren datuak esportatu.\nArrazoia: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> inportatzen"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Ezin izan dira vCard datuak irakurri"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard datuen irakurketa utzi da"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> vCard fitxategia inportatzen bukatu da"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> fitxategiaren inportazioa utzi da"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> fitxategia laster inportatuko da."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fitxategia laster inportatuko da."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard fitxategia inportatzeko eskaera ukatu da. Saiatu geroago."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> fitxategia laster esportatuko da."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Laster esportatuko da fitxategia."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Laster esportatuko dira kontaktuak."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard fitxategia esportatzeko eskaera ukatu da. Saiatu berriro geroago."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontaktua"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard-ak aldi baterako biltegi lokalaren cachean gordetzen ari dira. Inportazioa bera laster hasiko da."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Ezin izan da vCard fitxategia inportatu."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC bidez jasotako kontaktua"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Kontaktuak esportatu?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Cachean gordetzen"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> inportatzen: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Esportatu .vcf fitxategira"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordenatzeko irizpidea"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Izena"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Abizena"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Izenaren formatua"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Izena lehenengo"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Abizena lehenengo"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Kontuak"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Kontaktu berriak gordetzeko kontu lehenetsia"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinkronizatu kontaktuen metadatuak [PROBAKO BERTSIOA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinkronizatu kontaktuen metadatuak"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Nire informazioa"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Konfiguratu profila"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Kontaktuak zerbitzuari buruz"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Ezarpenak"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Partekatu ikusgai dauden kontaktuak"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Ezin izan dira partekatu ikusgai dauden kontaktuak."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Partekatu gogoko kontaktuak"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Partekatu kontaktu guztiak"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Ezin izan dira partekatu kontaktuak."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Inportatu/Esportatu kontaktuak"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Inportatu kontaktuak"</string>
+    <string name="share_error" msgid="665756457151793108">"Ezin da kontaktua partekatu."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Ez dago parteka daitekeen kontakturik."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Bilatu"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Bistaratzeko kontaktuak"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Bistaratzeko kontaktuak"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Zehaztu ikuspegi pertsonalizatua"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Gorde"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Bilatu kontaktuetan"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Gogokoak"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ez dago kontakturik."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Garbitu sarri erabilitakoak"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Hautatu SIM txartela"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Kudeatu kontuak"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Inportatu/Esportatu"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokeatutako zenbakiak"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> bidez"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="SOURCE">%2$s</xliff:g> bidez"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"gelditu bilaketa"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Garbitu bilaketa"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kontaktuak bistaratzeko aukerak"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Kontua"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Erabili beti hau deietarako"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Deitu kontu honekin:"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Egin deia oharrarekin"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Idatzi deiarekin batera bidali beharreko oharra…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"BIDALI ETA DEITU"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. Irakurri gabeko <xliff:g id="COUNT_3">%2$d</xliff:g> elementu. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. Irakurri gabeko <xliff:g id="COUNT_1">%2$d</xliff:g> elementu. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Konpilazioaren bertsioa"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Kode irekiko lizentziak"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Kode irekiko softwarerako lizentziaren xehetasunak"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Pribatutasun-gidalerroak"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Zerbitzu-baldintzak"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Kode irekiko lizentziak"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Ezin izan da ireki URLa."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> hautatuta"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> hautatu gabe"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Egin bideo-deia"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Ezabatu"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Elipsia"</string>
+</resources>
diff --git a/res-common/values-fa-sw600dp/strings.xml b/res-common/values-fa-sw600dp/strings.xml
new file mode 100644
index 0000000..0590cd1
--- /dev/null
+++ b/res-common/values-fa-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"دستگاه"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"مخاطب قابل صادر کردن وجود ندارد. اگر روی رایانه لوحی خود مخاطبینی دارید، بعضی از ارائه‌دهندگان داده ممکن است اجازه ندهند مخاطبین از رایانه لوحی صادر شوند."</string>
+</resources>
diff --git a/res-common/values-fa/strings.xml b/res-common/values-fa/strings.xml
new file mode 100644
index 0000000..3fc2fb4
--- /dev/null
+++ b/res-common/values-fa/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"نوشتار کپی شد"</string>
+    <string name="copy_text" msgid="3424081789297978355">"کپی در بریده‌دان"</string>
+    <string name="call_custom" msgid="2786306789889210756">"تماس با <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"تماس با منزل"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"تماس با تلفن همراه"</string>
+    <string name="call_work" msgid="8299062439076337075">"تماس با محل کار"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"تماس با نمابر محل کار"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"تماس با نمابر منزل"</string>
+    <string name="call_pager" msgid="3038080882899955112">"تماس با پی‌جو"</string>
+    <string name="call_other" msgid="4472141328347894937">"تماس"</string>
+    <string name="call_callback" msgid="687494744634190411">"تماس با شماره بازگرداندن تماس"</string>
+    <string name="call_car" msgid="9078083109758282133">"تماس با تلفن خودرو"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"تماس با خط اصلی شرکت"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"‏تماس با ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"تماس با خط اصلی"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"تماس با نمابر"</string>
+    <string name="call_radio" msgid="9055749313292712021">"تماس با تلفن رادیویی"</string>
+    <string name="call_telex" msgid="2909886619224843563">"تماس با تلکس"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"‏تماس با TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"تماس با تلفن همراه محل کار"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"تماس با پی‌جوی محل کار"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"تماس با <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"تماس با فراپیام"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (تماس)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"ارسال پیامک به <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ارسال پیامک به تلفن منزل"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ارسال پیامک به تلفن همراه"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ارسال پیامک به محل کار"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ارسال پیامک به نمابر محل کار"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ارسال پیامک به نمابر منزل"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ارسال پیامک به پی‌جو"</string>
+    <string name="sms_other" msgid="910895193552957097">"ارسال پیامک"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ارسال پیامک به شماره برگرداندن تماس"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ارسال پیامک به تلفن خودرو"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ارسال پیامک به خط اصلی شرکت"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"‏ارسال پیامک به ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ارسال پیامک به شماره اصلی"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ارسال پیامک به نمابر"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ارسال پیامک به تلفن رادیویی"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ارسال پیامک به تلکس"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"‏ارسال پیامک به TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ارسال پیامک به تلفن همراه محل کار"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ارسال پیامک به پی‌جوی محل کار"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"ارسال پیامک به <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"ارسال پیامک به خدمات پیام چندرسانه‌ای"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (پیام)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"برقراری تماس ویدیویی"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"مکرراً تماس‌گرفته‌ها پاک شود؟"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"فهرست افرادی را که مکرر با آن‌ها تماس گرفته‌اید در برنامه‌های «مخاطبین» و «تلفن» پاک خواهید کرد و برنامه‌های رایانامه مجبور می‌شوند که تنظیمات برگزیده آدرس‌دهی شما را از اول یاد بگیرند."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"درحال پاک کردن مکرراً تماس‌گرفته…"</string>
+    <string name="status_available" msgid="4832569677396634846">"در دسترس"</string>
+    <string name="status_away" msgid="6267905184545881094">"غایب"</string>
+    <string name="status_busy" msgid="7111912905211403545">"مشغول"</string>
+    <string name="contactsList" msgid="7140022347217602605">"مخاطبین"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"موارد دیگر"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"فهرست"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"فهرست کار"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"همه مخاطبین"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"درحال جستجو..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"بیش از <xliff:g id="COUNT">%d</xliff:g> مورد یافت شد."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"مخاطبی موجود نیست"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> مورد پیدا شد</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> مورد پیدا شد</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"تماس سریع برای <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(بدون نام)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"مکرراً تماس‌گرفته"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"مشاهده مخاطب"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"همه مخاطبین دارای شماره تلفن"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"مخاطبین نمایه کاری"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"مشاهده به‌روزرسانی‌ها"</string>
+    <string name="account_phone" msgid="325867897209266837">"دستگاه"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"نام"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"نام مستعار"</string>
+    <string name="full_name" msgid="885420216812981202">"نام"</string>
+    <string name="name_given" msgid="4153709115654909377">"نام"</string>
+    <string name="name_family" msgid="5317387657540738981">"نام خانوادگی"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"پیشوند نام"</string>
+    <string name="name_middle" msgid="3951610314424632183">"نام میانی"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"پسوند نام"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"تلفظ نام"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"تلفظ نام"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"تلفظ نام میانی"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"تلفظ نام خانوادگی"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"تلفن"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"رایانامه"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"آدرس"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"پیام فوری"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"سازمان"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"نسبت"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"تاریخ ویژه"</string>
+    <string name="sms" msgid="8086289395154598654">"پیامک"</string>
+    <string name="postal_address" msgid="7692926530081579786">"آدرس"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"شرکت"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"عنوان"</string>
+    <string name="label_notes" msgid="3997277594846722699">"یادداشت‌ها"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"وب سایت"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"برچسب‌ها"</string>
+    <string name="email_home" msgid="2230967805906450693">"رایانامه به منزل"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"رایانامه به تلفن همراه"</string>
+    <string name="email_work" msgid="7065971921227432400">"رایانامه به محل کار"</string>
+    <string name="email_other" msgid="4601881243553289615">"رایانامه"</string>
+    <string name="email_custom" msgid="5777583741581538870">"رایانامه به <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"رایانامه"</string>
+    <string name="postal_street" msgid="881349814077356134">"خیابان"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"صندوق پستی"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"محله"</string>
+    <string name="postal_city" msgid="3173008531169519309">"شهر"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ایالت"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"کد پستی"</string>
+    <string name="postal_country" msgid="3988452247038791892">"کشور"</string>
+    <string name="map_home" msgid="1221397355014741634">"مشاهده آدرس منزل"</string>
+    <string name="map_work" msgid="9015981646907637207">"مشاهده آدرس محل کار"</string>
+    <string name="map_other" msgid="55098598855607997">"مشاهده آدرس"</string>
+    <string name="map_custom" msgid="4943554530347163288">"مشاهده آدرس <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"‏گپ با استفاده از AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"‏گپ با استفاده از Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"‏گپ با استفاده از Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"‏گپ با استفاده از Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"‏گپ با استفاده از QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"‏گپ با استفاده از Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"‏گپ با استفاده از ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"‏گپ با استفاده از Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"گپ"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"حذف"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"بزرگ یا کوچک کردن قسمت‌های نام"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"بزرگ یا کوچک کردن فیلدهای نام آوایی"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"همه مخاطبین"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ستاره دار"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"سفارشی کردن"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"مخاطب"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"همهٔ مخاطبین دیگر"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"همه مخاطبین"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"حذف گروه همگام‌سازی"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"افزودن گروه همگام‌سازی"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"گروه‌های بیشتر..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"حذف «<xliff:g id="GROUP">%s</xliff:g>» از همگام‌سازی نیز هر گونه مخاطب گروه‌بندی نشده‌ای را از همگام‌سازی حذف می‌کند."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"در حال ذخیره گزینه‌های نمایش..."</string>
+    <string name="menu_done" msgid="32470053723443112">"تمام"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"لغو"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"نمای سفارشی‌شده"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"ذخیره مخاطب‌های وارد شده در:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"وارد کردن از سیم کارت"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"وارد کردن از سیم‌کارت <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"وارد کردن از سیم کارت <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"‏وارد کردن از فایل ‎.vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"وارد کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"صادر کردن به <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"وارد/صادرکردن کارت ویزیت لغو نمی‌شود"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"خطای ناشناس."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" باز نشد: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"صادر کننده راه‌اندازی نشد: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"هیچ مخاطب قابل صدوری موجود نیست."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"یک مجوز الزامی را غیرفعال کرده‌اید."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"خطایی در هنگام صادر کردن روی داد: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"نام فایل خیلی طولانی است (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"خطای ورودی/خروجی"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"حافظه کافی نیست. ممکن است فایل بسیار بزرگ باشد."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"تفسیر کارت ویزیت به دلیل پیش‌بینی نشده‌ای ممکن نیست."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"قالب پشتیبانی نمی‌شود."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"نمی‌توان اطلاعات متای فایل(های) کارت ویزیت داده شده را جمع‌آوری کرد."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"‏نمی‌توان یک یا چند فایل را وارد کرد (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> پایان یافت."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"صادرکردن مخاطبین تمام شد."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"صادر کردن مخاطبین تمام شد؛ برای به اشتراک گذاشتن مخاطبین، روی اعلان کلیک کنید."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"برای به اشتراک گذاشتن مخاطبین ضربه بزنید."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شد."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"صدور اطلاعات مخاطب"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"داده‌های مخاطب در حال صادر شدن است."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"نمی‌توان اطلاعات پایگاه داده را دریافت کرد."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"هیچ مخاطب قابل صدوری وجود ندارد. اگر در گوشی خود مخاطبینی دارید، بعضی از ارائه‌دهندگان داده ممکن است اجازه ندهند تا مخاطبین از گوشی صادر شوند."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"سازنده فایل کارت ویزیت به درستی اجرا نشد."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"صادر نمی‌شود"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"‏داده‎های مخاطب صادر نشد.\nعلت: «<xliff:g id="FAIL_REASON">%s</xliff:g>»"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"وارد کردن <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"خواندن داده‌های کارت ویزیت ممکن نیست"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"خواندن داده کارت ویزیت لغو شد"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"وارد کردن کارت ویزیت <xliff:g id="FILENAME">%s</xliff:g> پایان یافت"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"واردکردن <xliff:g id="FILENAME">%s</xliff:g> لغو شد"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> به زودی وارد می‌شود."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"فایل پس از مدت کوتاهی وارد می‌شود."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"درخواست وارد کردن کارت ویزیت رد شد. لطفاً بعداً امتحان کنید."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> به زودی صادر می‌شود."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"فایل به‌زودی منقضی می‌شود."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"مخاطبین به‌زودی صادر می‌شوند."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"درخواست صدور کارت ویزیت رد شد. لطفاً بعداً امتحان کنید."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"مخاطب"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"در حال ذخیره کارت‌(های) ویزیت در حافظه موقت محلی است. وارد کردن واقعی به زودی آغاز خواهد شد."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"وارد کردن کارت ویزیت انجام نشد."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"‏دریافت مخاطب باNFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"مخاطبین صادر شوند؟"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"در حال ذخیره در حافظهٔ پنهان"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"وارد کردن <xliff:g id="CURRENT_NUMBER">%s</xliff:g><xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"‏صادر کردن به فایل ‎.vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"مرتب‌سازی براساس"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"نام"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"نام خانوادگی"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"قالب نام"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ابتدا نام"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"ابتدا نام خانوادگی"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"حساب‌ها"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"حساب پیش‌فرض برای مخاطبین جدید"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"همگام‌سازی فراداده مخاطب [آزمایشی]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"همگام‌سازی فراداده مخاطب"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"اطلاعات من"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"تنظیم نمایه"</string>
+    <string name="setting_about" msgid="3926137653588942297">"درباره مخاطبین"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"تنظیمات"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"اشتراک‌گذاری مخاطبین قابل مشاهده"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"مخاطبین قابل مشاهده به اشتراک گذاشته نشدند."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"اشتراک‌گذاری مخاطبین موردعلاقه"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"اشتراک‌گذاری همه مخاطبین"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"مخاطبین به اشتراک گذاشته نشدند."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"وارد کردن/صادر کردن مخاطبین"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"وارد کردن مخاطبین"</string>
+    <string name="share_error" msgid="665756457151793108">"این مخاطب قابل اشتراک‌گذاری نیست."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"مخاطبی برای اشتراک‌گذاری وجود ندارد."</string>
+    <string name="menu_search" msgid="7464453023659824700">"جستجو"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"مخاطبین جهت نمایش"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"مخاطبین جهت نمایش"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"تعریف نمای سفارشی‌شده"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"ذخیره"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"جستجوی مخاطبین"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"موارد دلخواه"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"مخاطبی موجود نیست."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"پاک کردن مکرراً تماس‌گرفته"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"انتخاب سیم‌کارت"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"مدیریت حساب‌ها"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"وارد کردن/صادر کردن"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"شماره‌های مسدود‌ شده"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"از طریق <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> از طریق <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"توقف جستجو"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"پاک کردن جستجو"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"گزینه‌های نمایش تماس"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"حساب"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"همیشه این سیم برای تماس‌ استفاده شود"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"تماس با"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"تماس به همراه یادداشت"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"یادداشتی بنویسید که همراه تماس ارسال شود…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ارسال و تماس"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / ‏<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> مورد نخوانده. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> مورد نخوانده. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"نسخه ساخت"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"مجوزهای منبع آزاد"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"جزئیات مجوز برای نرم‌افزار منبع آزاد"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"خط‌مشی رازداری"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"شرایط خدمات"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"مجوزهای منبع آزاد"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"نشانی وب باز نشد."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> علامت‌گذاری شد"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> بدون علامت شد"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"برقراری تماس ویدیویی"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"حذف"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"سه نقطه"</string>
+</resources>
diff --git a/res-common/values-fi-sw600dp/strings.xml b/res-common/values-fi-sw600dp/strings.xml
new file mode 100644
index 0000000..0d73d46
--- /dev/null
+++ b/res-common/values-fi-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Laite"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Vietäviä yhteystietoja ei ole. Jos tabletissasi on yhteystietoja, tietojen tarjoaja on saattanut estää niiden viemisen tabletin ulkopuolelle."</string>
+</resources>
diff --git a/res-common/values-fi/strings.xml b/res-common/values-fi/strings.xml
new file mode 100644
index 0000000..7bfff3f
--- /dev/null
+++ b/res-common/values-fi/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teksti kopioitu"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopioi leikepöydälle"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Soita: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Soita kotinumeroon"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Soita matkapuhelimeen"</string>
+    <string name="call_work" msgid="8299062439076337075">"Soita työnumeroon"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Soita faksinumeroon (työ)"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Soita faksinumeroon (koti)"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Soita hakulaitteeseen"</string>
+    <string name="call_other" msgid="4472141328347894937">"Soita"</string>
+    <string name="call_callback" msgid="687494744634190411">"Soita takaisinsoittonumeroon"</string>
+    <string name="call_car" msgid="9078083109758282133">"Soita autopuhelimeen"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Soita yrityksen ensisijaiseen numeroon"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Soita ISDN-numeroon"</string>
+    <string name="call_main" msgid="4640261071249938558">"Soita ensisijaiseen numeroon"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Soita faksinumeroon"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Soita radiopuhelimeen"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Soita teleksinumeroon"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Soita tekstipuhelimeen"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Soita matkapuhelimeen (työ)"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Soita hakulaitteeseen (työ)"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Soita: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Soita MMS-numeroon"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (soita)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Lähetä tekstiviesti: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Lähetä tekstiviesti kotinumeroon"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Lähetä tekstiviesti matkapuhelimeen"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Lähetä tekstiviesti työnumeroon"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Lähetä tekstiviesti faksinumeroon (työ)"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Lähetä tekstiviesti faksinumeroon (koti)"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Lähetä tekstiviesti hakulaitteeseen"</string>
+    <string name="sms_other" msgid="910895193552957097">"Teksti"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Lähetä tekstiviesti takaisinsoittonumeroon"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Lähetä tekstiviesti autopuhelimeen"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Lähetä tekstiviesti yrityksen ensisijaiseen numeroon"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Lähetä tekstiviesti ISDN-numeroon"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Lähetä tekstiviesti ensisijaiseen numeroon"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Lähetä tekstiviesti faksinumeroon"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Lähetä tekstiviesti radiopuhelimeen"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Lähetä tekstiviesti teleksinumeroon"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Lähetä tekstiviesti tekstipuhelimeen"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Lähetä tekstiviesti matkapuhelimeen (työ)"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Lähetä tekstiviesti hakulaitteeseen (työ)"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Lähetä tekstiviesti: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Lähetä tekstiviesti MMS-numeroon"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (lähetä viesti)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Soita videopuhelu"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Tyhjennetäänkö usein käytetyt?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Toiminto tyhjentää Yhteystiedot- ja Puhelin-sovellusten usein käytettyjen kontaktien luettelon. Lisäksi sähköpostisovellukset pakotetaan opettelemaan osoiteasetuksesi uudestaan."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Tyhjennetään usein käytetyt..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Saatavilla"</string>
+    <string name="status_away" msgid="6267905184545881094">"Poissa"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Varattu"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Yhteystiedot"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Muu"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Osoitekirja"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Työhakemisto"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Kaikki yhteystiedot"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Haetaan..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Löytyi yli <xliff:g id="COUNT">%d</xliff:g> yhteystietoa."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ei yhteystietoja"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> löytyi</item>
+      <item quantity="one">1 löytyi</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Pikayhteys henkilöön <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Ei nimeä)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Usein käytetyt"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Näytä kontakti"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Kaikki kontaktit, joilla on puhelinnumero"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Työprofiilin yhteystiedot"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Näytä päivitykset"</string>
+    <string name="account_phone" msgid="325867897209266837">"Laite"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nimi"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Lempinimi"</string>
+    <string name="full_name" msgid="885420216812981202">"Nimi"</string>
+    <string name="name_given" msgid="4153709115654909377">"Etunimi"</string>
+    <string name="name_family" msgid="5317387657540738981">"Sukunimi"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Nimen etuliite"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Toinen nimi"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Nimen jälkiliite"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nimen ääntämistapa"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Etunimen ääntämistapa"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Toisen nimen ääntämistapa"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Sukunimen ääntämistapa"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Puhelin"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Sähköposti"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Osoite"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisaatio"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Suhde"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Erityispäivämäärä"</string>
+    <string name="sms" msgid="8086289395154598654">"Tekstiviesti"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Osoite"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Yritys"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Nimi"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Muistiinpanot"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Sivusto"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Tunnisteet"</string>
+    <string name="email_home" msgid="2230967805906450693">"Lähetä sähköpostia kotiosoitteeseen"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Lähetä sähköpostia mobiiliosoitteeseen"</string>
+    <string name="email_work" msgid="7065971921227432400">"Lähetä sähköpostia työosoitteeseen"</string>
+    <string name="email_other" msgid="4601881243553289615">"Lähetä sähköpostia"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Lähetä sähköpostia osoitteeseen <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Lähetä sähköpostia"</string>
+    <string name="postal_street" msgid="881349814077356134">"Katu"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postilokero"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Kaupunginosa"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Kaupunki"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Osavaltio/alue"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postinumero"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Maa"</string>
+    <string name="map_home" msgid="1221397355014741634">"Näytä kotiosoite"</string>
+    <string name="map_work" msgid="9015981646907637207">"Näytä työosoite"</string>
+    <string name="map_other" msgid="55098598855607997">"Näytä osoite"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Näytä osoite <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Keskustele AIM:n avulla"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Keskustele Windows Liven avulla"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Keskustele Yahoon avulla"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Keskustele Skypen avulla"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Keskustele QQ:n avulla"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Keskustele Google Talkin avulla"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Keskustele ICQ:n avulla"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Keskustele Jabberin avulla"</string>
+    <string name="chat" msgid="6297650784873558837">"Keskustelu"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"poista"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Laajenna tai tiivistä nimikentät"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Laajenna tai tiivistä foneettiset nimikentät"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Kaikki yhteystiedot"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Tähdelliset"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Muokkaa"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Yhteystieto"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Kaikki muut yhteystiedot"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Kaikki yhteystiedot"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Poista synkronointiryhmä"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Lisää synkronointiryhmä"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Lisää ryhmiä…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Ryhmän <xliff:g id="GROUP">%s</xliff:g> poistaminen synkronoinnista lopettaa myös ryhmittelemättömien yhteystietojen synkronoinnin."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Tallennetaan näyttövalintoja…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Valmis"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Peruuta"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Muokattu näkymä"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Tallenna tuodut yhteystiedot kohteeseen"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Tuo SIM-kortilta"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Tuo SIM-kortilta <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Tuo SIM-kortilta <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Tuo .vcf-tiedostosta"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Peruutetaanko kohteen <xliff:g id="FILENAME">%s</xliff:g> tuonti?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Peruutetaanko kohteen <xliff:g id="FILENAME">%s</xliff:g> vienti?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCardin tuonnin/viennin peruutus epäonn."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Tuntematon virhe."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Tiedostoa <xliff:g id="FILE_NAME">%s</xliff:g> ei voi avata: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Vientiohjelman käynnistys epäonnistui: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Ei vietäviä yhteystietoja."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Olet poistanut käytöstä tarvittavan käyttöoikeuden."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Virhe viennin aikana: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Tarvittava tiedostonimi on liian pitkä (<xliff:g id="FILENAME">%s</xliff:g>)"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O-virhe"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Muisti ei riitä. Tiedosto voi olla liian suuri."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"vCardia ei voi jäsentää odottamattomasta syystä."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Muotoa ei tueta."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Annettujen vCard-tiedostojen sisällönkuvaustietojen noutaminen epäonnistui."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Ainakin yhden tiedoston tuominen epäonnistui (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Kohde <xliff:g id="FILENAME">%s</xliff:g> on viety."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Yhteystiedot on viety."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Yhteystiedot vietiin. Jaa yhteystiedot klikkaamalla ilmoitusta."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Jaa yhteystiedot koskettamalla."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Kohteen <xliff:g id="FILENAME">%s</xliff:g> vienti peruutettiin."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Viedään yhteystietoja"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Yhteystietoja viedään."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Tietokannan tietojen hakeminen epäonnistui."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Vietäviä yhteystietoja ei ole. Jos puhelimessasi on yhteystietoja, tietojen tarjoaja on saattanut estää niiden viemisen puhelimen ulkopuolelle."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard-luonti ei käynnistynyt oikein."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Vieminen epäonnistui"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Yhteystietoja ei viety.\nSyy: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Tuodaan kohdetta <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard-tietojen lukeminen epäonnistui"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard-tietojen lukeminen peruutettiin"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> on tuotu"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Kohteen <xliff:g id="FILENAME">%s</xliff:g> tuonti peruutettiin"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> tuodaan pian."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Tiedosto tuodaan pian."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard-tuontipyyntö hylättiin. Yritä myöhemmin uudelleen."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> viedään pian."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Tiedosto viedään pian."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Yhteystiedot viedään hetken kuluttua."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard-vientipyyntö hylättiin. Yritä myöhemmin uudelleen."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"yhteystieto"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Lisätään vCard-tietojen välimuistiversiot paikalliseen väliaikaistallennustilaan. Tuonti alkaa pian."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard-tietojen tuominen epäonnistui."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Yht. saatu (NFC)"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Viedäänkö yhteystietoja?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Vie välimuistiin"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Tuodaan <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Vie .vcf-tiedostoon"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Lajitteluperuste"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Etunimi"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Sukunimi"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Nimen muoto"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Etunimi ensin"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Sukunimi ensin"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Tilit"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Uusien yhteystietojen oletustili"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synkronoi yhteystietojen kuvaustiedot [TESTIVERSIO]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synkronoi yhteystietojen kuvaustiedot"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Omat tiedot"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Luo profiili"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Tietoja Yhteystiedoista"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Asetukset"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Jaa näkyvät yhteystiedot"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Näkyvien yhteystietojen jakaminen epäonnistui."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Jaa suosikkiyhteystiedot"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Jaa kaikki yhteystiedot"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Yhteystietojen jakaminen epäonnistui."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Tuo/vie yhteystietoja"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Tuo yhteystietoja"</string>
+    <string name="share_error" msgid="665756457151793108">"Yhteystieto ei jaettavissa"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Jaettavia yhteystietoja ei ole."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Haku"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Näytettävät yhteystiedot"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Näytettävät yhteystiedot"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Tarkenna muokattua näkymää"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Tallenna"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Hae yhteystiedoista"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Suosikit"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ei yhteystietoja."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Tyhjennä usein käytetyt"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Valitse SIM-kortti"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Hallinnoi tilejä"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Tuo/vie"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Estetyt numerot"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"lähteestä <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> lähteestä <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"lopeta hakeminen"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Tyhjennä haku"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Yhteystietojen näyttöasetukset"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Tili"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Käytä kaikille puheluille"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Valitse puhelinoperaattori:"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Soita ja lähetä muistiinpano"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Kirjoita muistiinpano lähetettäväksi puhelun kanssa…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"LÄHETÄ ja SOITA"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> lukematonta kohdetta. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> lukematon kohde. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Koontiversio"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Avoimen lähdekoodin käyttöluvat"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Avoimen lähdekoodin ohjelmiston käyttöluvan tiedot"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Tietosuojakäytäntö"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Käyttöehdot"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Avoimen lähdekoodin käyttöluvat"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"URL-osoitteen avaus epäonnistui."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> valittu"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ei valittu"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Soita videopuhelu"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Poista"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipsi"</string>
+</resources>
diff --git a/res-common/values-fr-rCA-sw600dp/strings.xml b/res-common/values-fr-rCA-sw600dp/strings.xml
new file mode 100644
index 0000000..49945c3
--- /dev/null
+++ b/res-common/values-fr-rCA-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Appareil"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Aucun contact ne peut être exporté. Si des contacts sont enregistrés sur votre tablette, il est possible qu\'un fournisseur de données n\'autorise pas l\'exportation de contacts vers un autre appareil."</string>
+</resources>
diff --git a/res-common/values-fr-rCA/strings.xml b/res-common/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..7238f3e
--- /dev/null
+++ b/res-common/values-fr-rCA/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texte copié."</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copier dans le presse-papiers"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Appeler le <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Appeler le numéro de téléphone du domicile"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Appeler le numéro de téléphone mobile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Appeler le numéro de téléphone professionnel"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Appeler le numéro de télécopie professionnel"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Appeler le numéro de télécopie du domicile"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Appeler le téléavertisseur"</string>
+    <string name="call_other" msgid="4472141328347894937">"Appeler"</string>
+    <string name="call_callback" msgid="687494744634190411">"Appeler le numéro de rappel"</string>
+    <string name="call_car" msgid="9078083109758282133">"Appeler le numéro de télphone de la voiture"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Appeler le numéro de téléphone principal de l\'entreprise"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Appeler le numéro de téléphone RNIS"</string>
+    <string name="call_main" msgid="4640261071249938558">"Appeler le numéro de téléphone principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Appeler le numéro de télécopie"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Appeler par signal radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Appeler par télex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Appeler le numéro TTY/TDD (malentendants)"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Appeler le numéro de téléphone mobile professionnel"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Appeler le téléavertisseur professionnel"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Appeler le <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Appeler le numéro de téléphone MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Appel)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Envoyer un SMS au <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Envoyer un SMS au numéro de téléphone du domicile"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Envoyer un SMS au numéro de téléphone mobile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Envoyer un SMS au numéro de téléphone professionnel"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Envoyer un SMS au numéro de télécopie professionnel"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Envoyer un SMS au numéro de télécopie du domicile"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Envoyer un SMS au téléavertisseur"</string>
+    <string name="sms_other" msgid="910895193552957097">"Envoyer un SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Envoyer un SMS au numéro de rappel"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Envoyer un SMS au numéro de téléphone de la voiture"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Envoyer un SMS au numéro de téléphone principal de l\'entreprise"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Envoyer un SMS au numéro de téléphone RNIS"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Envoyer un SMS au numéro de téléphone principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Envoyer un SMS au numéro de télécopie"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Envoyer un SMS par signal radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Envoyer un SMS par télex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Envoyer un SMS au numéro TTY/TDD (malentendants)"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Envoyer un SMS au numéro de téléphone mobile professionnel"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Envoyer un SMS au téléavertisseur professionnel"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Envoyer un SMS au <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Envoyer un SMS au numéro de téléph MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Message)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Faire un appel vidéo"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Effacer les contacts fréquents?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Cette opération efface la liste des personnes avec qui vous communiquez le plus souvent dans les applications Contacts et Téléphone, et forcera les applications de courriel à mémoriser de nouveau les adresses que vous utilisez le plus."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Suppression des contacts fréquents…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponible"</string>
+    <string name="status_away" msgid="6267905184545881094">"Absent"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Occupé(e)"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Autre"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Répertoire"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Annuaire professionnel"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Tous les contacts"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Recherche en cours..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Plus de <xliff:g id="COUNT">%d</xliff:g> contacts ont été trouvés."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Aucun contact"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> résultat</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> résultats</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Lien rapide vers <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sans nom)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contacts fréquents"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Afficher le contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Tous les contacts disposant d\'un numéro de téléphone"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contacts du profil professionnel"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Afficher les mises à jour"</string>
+    <string name="account_phone" msgid="325867897209266837">"Appareil"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nom"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Pseudo"</string>
+    <string name="full_name" msgid="885420216812981202">"Nom"</string>
+    <string name="name_given" msgid="4153709115654909377">"Prénom"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nom de famille"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Préfixe du nom"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Deuxième prénom"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Suffixe du nom"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nom phonétique"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Prononciation du prénom"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Deuxième prénom phonétique"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Prononciation du nom de famille"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Numéro de téléphone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Adresse de courriel"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresse"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"MI"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Entreprise"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relation"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Date spéciale"</string>
+    <string name="sms" msgid="8086289395154598654">"Message texte"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresse"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Entreprise"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titre"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Site Web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Étiquettes"</string>
+    <string name="email_home" msgid="2230967805906450693">"Envoyer un courriel au domicile"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Envoyer un courriel sur le mobile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Envoyer un courriel au bureau"</string>
+    <string name="email_other" msgid="4601881243553289615">"Envoyer un courriel"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Envoyer un courriel à <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Envoyer un courriel"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rue"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Case postale"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Quartier"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Ville"</string>
+    <string name="postal_region" msgid="1695206048198921115">"État/province"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Code postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Pays"</string>
+    <string name="map_home" msgid="1221397355014741634">"Afficher l\'adresse personnelle"</string>
+    <string name="map_work" msgid="9015981646907637207">"Afficher l\'adresse professionnelle"</string>
+    <string name="map_other" msgid="55098598855607997">"Afficher l\'adresse"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Afficher l\'adresse <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Clavarder via AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Clavarder via Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Clavarder via Yahoo!"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Clavarder via Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Clavarder via QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Clavarder via Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Clavarder via ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Clavarder via Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Clavarder"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"supprimer"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Développer ou réduire les champs de nom"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Développer ou réduire les champs de noms phonétiques"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Tous les contacts"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Favoris"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personnaliser"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Tous les autres contacts"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Tous les contacts"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Supprimer le groupe de synchronisation"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Ajouter groupe de synchronisation"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Autres groupes…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Le retrait du groupe \"<xliff:g id="GROUP">%s</xliff:g>\" de la synchronisation entraîne également le retrait des contacts n\'appartenant à aucun groupe."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Enregistrement des options d\'affichage en cours…"</string>
+    <string name="menu_done" msgid="32470053723443112">"OK"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Annuler"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Affichage personnalisé"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Enregistrer les contacts importés ici :"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importer depuis la carte SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importer de la carte SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importer de la carte SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importer d\'un fichier .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Annuler l\'importation du fichier <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Annuler l\'exportation du fichier <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Impossible annuler import./export. vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Erreur inconnue."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Impossible d\'ouvrir le fichier <xliff:g id="FILE_NAME">%s</xliff:g> pour la raison suivante : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Impossible de démarrer le programme d\'exportation pour la raison suivante : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Aucun contact ne peut être exporté."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Vous avez désactivé une autorisation obligatoire."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Une erreur s\'est produite lors de l\'exportation : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Le nom de fichier requis est trop long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Erreur d\'E/S."</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Mémoire insuffisante. Le fichier est peut-être trop volumineux."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Impossible d\'analyser le fichier vCard pour une raison inattendue."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Le format n\'est pas compatible."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Impossible de collecter des métadonnées contenues dans le ou les fichiers vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Impossible d\'importer un ou plusieurs fichiers (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportation du fichier <xliff:g id="FILENAME">%s</xliff:g> terminée"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Les contacts ont été exportés"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Les contacts ont été exportés. Cliquez sur la notification pour les partager."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Touchez ici pour partager des contacts."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exportation du fichier <xliff:g id="FILENAME">%s</xliff:g> annulée"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportation des données des contacts en cours"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Les données de contact sont en cours d\'exportation."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Impossible d\'obtenir les informations concernant la base de données."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Aucun contact ne peut être exporté. Si des contacts sont enregistrés sur votre téléphone, il est possible qu\'un fournisseur de données n\'autorise pas l\'exportation de contacts vers un autre appareil."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Le système de composition vCard n\'a pas démarré correctement."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Échec exportation"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Les données du contact n\'ont pas été exportées.\nMotif : <xliff:g id="FAIL_REASON">%s</xliff:g>."</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importation (<xliff:g id="NAME">%s</xliff:g>)"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Impossible de lire les données vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lecture des données vCard annulée"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Le fichier vCard <xliff:g id="FILENAME">%s</xliff:g> a bien été importé"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importation du fichier <xliff:g id="FILENAME">%s</xliff:g> annulée"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Le fichier <xliff:g id="FILENAME">%s</xliff:g> va bientôt être importé."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Le fichier va bientôt être importé."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"La demande d\'importation du fichier vCard a été rejetée. Veuillez réessayer plus tard."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Le fichier <xliff:g id="FILENAME">%s</xliff:g> va bientôt être exporté."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Le fichier sera bientôt exporté."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Les contacts seront exportés sous peu."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"La demande d\'exportation du fichier vCard a été rejetée. Veuillez réessayer plus tard."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Mise en cache des fichiers vCard dans l\'espace de stockage temporaire local. L\'importation va bientôt démarrer."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Impossible d\'importer le fichier vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contact reçu via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exporter les contacts?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Mise en cache…"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importation <xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> (<xliff:g id="NAME">%s</xliff:g>)"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exporter en format .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Trier par"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Prénom"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nom de famille"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format de nom"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Prénom en premier"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Nom de famille en premier"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Comptes"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Compte par défaut pour les nouveaux contacts"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synchroniser les métadonnées des contacts [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synchroniser les métadonnées des contacts"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mon profil"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurer votre profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"À propos de Contacts"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Paramètres"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Partager les contacts visibles"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Échec du partage des contacts visibles."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Partager les contacts favoris"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Partager tous les contacts"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Impossible de partager les contacts."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importer/exporter des contacts"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importer des contacts"</string>
+    <string name="share_error" msgid="665756457151793108">"Impossible de partager ce contact."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Il n\'y a aucun contact à partager."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Rechercher"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contacts à afficher"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contacts à afficher"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Définir l\'affichage personnalisé"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Enregistrer"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Rechercher dans les contacts"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoris"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Aucun contact"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Effacer les contacts fréquents"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Sélectionner une carte SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gérer les comptes"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importer/exporter"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Numéros bloqués"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"par <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> par <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"arrêter la recherche"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Effacer les termes de recherche"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Options d\'affichage des contacts"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Compte"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Toujours l\'utiliser pour les appels"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Appeler avec"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Appeler avec une note"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Tapez une note à envoyer avec l\'appel..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVOYER ET APPELER"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> élément non lu. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> éléments non lus. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Version"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licences de logiciels libres"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Renseignements sur la licence de logiciels libres"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Politique de confidentialité"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Modalités"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licences de logiciels libres"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Échec de l\'ouverture de l\'URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Élément « <xliff:g id="ACCOUNT_INFO">%s</xliff:g> » coché"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Élément « <xliff:g id="ACCOUNT_INFO">%s</xliff:g> » non coché"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Faire un appel vidéo"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Supprimer"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipse"</string>
+</resources>
diff --git a/res-common/values-fr-sw600dp/strings.xml b/res-common/values-fr-sw600dp/strings.xml
new file mode 100644
index 0000000..49945c3
--- /dev/null
+++ b/res-common/values-fr-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Appareil"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Aucun contact ne peut être exporté. Si des contacts sont enregistrés sur votre tablette, il est possible qu\'un fournisseur de données n\'autorise pas l\'exportation de contacts vers un autre appareil."</string>
+</resources>
diff --git a/res-common/values-fr/strings.xml b/res-common/values-fr/strings.xml
new file mode 100644
index 0000000..4a43bd8
--- /dev/null
+++ b/res-common/values-fr/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texte copié."</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copier dans le Presse-papiers"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Appeler le <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Appeler le numéro de téléphone du domicile"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Appeler le numéro de téléphone mobile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Appeler le numéro de téléphone professionnel"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Appeler le numéro de télécopie professionnel"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Appeler le numéro de télécopie du domicile"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Appeler le téléavertisseur"</string>
+    <string name="call_other" msgid="4472141328347894937">"Appeler"</string>
+    <string name="call_callback" msgid="687494744634190411">"Appeler le numéro de rappel"</string>
+    <string name="call_car" msgid="9078083109758282133">"Appeler le numéro de téléphone de la voiture"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Appeler le numéro de téléphone principal de l\'entreprise"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Appeler le numéro de téléphone RNIS"</string>
+    <string name="call_main" msgid="4640261071249938558">"Appeler le numéro de téléphone principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Appeler le numéro de télécopie"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Appeler par signal radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Appeler par télex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Appeler le numéro TTY/TDD (malentendants)"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Appeler le numéro de téléphone mobile professionnel"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Appeler le téléavertisseur professionnel"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Appeler le <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Appeler le numéro de téléphone MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (appeler)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Envoyer un SMS au <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Envoyer un SMS au numéro de téléphone du domicile"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Envoyer un SMS au numéro de téléphone mobile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Envoyer un SMS au numéro de téléphone professionnel"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Envoyer un SMS au numéro de télécopie professionnel"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Envoyer un SMS au numéro de télécopie du domicile"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Envoyer un SMS au téléavertisseur"</string>
+    <string name="sms_other" msgid="910895193552957097">"Envoyer un SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Envoyer un SMS au numéro de rappel"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Envoyer un SMS au numéro de téléphone de la voiture"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Envoyer un SMS au numéro de téléphone principal de l\'entreprise"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Envoyer un SMS au numéro de téléphone RNIS"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Envoyer un SMS au numéro de téléphone principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Envoyer un SMS au numéro de télécopie"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Envoyer un SMS par signal radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Envoyer un SMS par télex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Envoyer un SMS au numéro TTY/TDD (malentendants)"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Envoyer un SMS au numéro de téléphone mobile professionnel"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Envoyer un SMS au téléavertisseur professionnel"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Envoyer un SMS au <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Envoyer un SMS au numéro de téléphone MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (envoyer un SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Passer un appel vidéo"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Effacer les contacts fréquents ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Cette opération efface la liste des personnes que vous contactez le plus souvent dans les applications Contacts et Téléphone, et entraîne une réinitialisation des adresses mémorisées comme celles que vous utilisez le plus fréquemment dans vos applications de messagerie électronique."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Suppression des contacts fréquents…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponible"</string>
+    <string name="status_away" msgid="6267905184545881094">"Absent"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Occupé"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Autre"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Répertoire"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Contacts professionnels"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Tous les contacts"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Recherche en cours…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Plus de <xliff:g id="COUNT">%d</xliff:g> contacts ont été trouvés."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Aucun contact"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> contact trouvé.</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts trouvés.</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Lien rapide vers <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sans nom)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contacts fréquents"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Afficher le contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Tous les contacts disposant d\'un numéro de téléphone"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contacts du profil professionnel"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Afficher les mises à jour"</string>
+    <string name="account_phone" msgid="325867897209266837">"Appareil"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nom"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Pseudo"</string>
+    <string name="full_name" msgid="885420216812981202">"Nom"</string>
+    <string name="name_given" msgid="4153709115654909377">"Prénom"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nom"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Préfixe du nom"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Deuxième prénom"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Suffixe du nom"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nom phonétique"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Prénom phonétique"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"2e prénom phonétique"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Nom phonétique"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Numéro de téléphone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Adresse e-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresse"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Entreprise"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Type de relation"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Occasion spéciale"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresse"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Entreprise"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titre"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"Adresse SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Site Web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Libellés"</string>
+    <string name="email_home" msgid="2230967805906450693">"Envoyer un e-mail au domicile"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Envoyer un e-mail sur le mobile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Envoyer un e-mail au bureau"</string>
+    <string name="email_other" msgid="4601881243553289615">"Envoyer un e-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Envoyer un e-mail à <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Envoyer un e-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rue"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Boîte postale"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Quartier"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Ville"</string>
+    <string name="postal_region" msgid="1695206048198921115">"État"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Code postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Pays"</string>
+    <string name="map_home" msgid="1221397355014741634">"Afficher l\'adresse personnelle"</string>
+    <string name="map_work" msgid="9015981646907637207">"Afficher l\'adresse professionnelle"</string>
+    <string name="map_other" msgid="55098598855607997">"Afficher l\'adresse"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Afficher l\'adresse <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatter via AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatter via Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatter via Yahoo!"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatter via Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatter via QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatter via Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatter via ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatter via Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatter"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"supprimer"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Développer ou réduire les champs de nom"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Développer ou réduire les champs de nom phonétique"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Tous les contacts"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Favoris"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personnaliser"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Tous les autres contacts"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Tous les contacts"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Supprimer le groupe de synchronisation"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Ajouter un groupe de synchronisation"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Autres groupes…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Le retrait du groupe \"<xliff:g id="GROUP">%s</xliff:g>\" de la synchronisation entraîne également le retrait des contacts n\'appartenant à aucun groupe."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Enregistrement des options d\'affichage en cours…"</string>
+    <string name="menu_done" msgid="32470053723443112">"OK"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Annuler"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Vue personnalisée"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Enregistrer les contacts importés sur :"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importer depuis la carte SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importer depuis la carte SIM <xliff:g id="SIM_NAME">^1</xliff:g> (<xliff:g id="SIM_NUMBER">^2</xliff:g>)"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importer depuis la carte SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importer depuis fichier .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Annuler l\'importation du fichier <xliff:g id="FILENAME">%s</xliff:g> ?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Annuler l\'exportation du fichier <xliff:g id="FILENAME">%s</xliff:g> ?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Impossible annuler import./export. vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Erreur inconnue."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Impossible d\'ouvrir le fichier <xliff:g id="FILE_NAME">%s</xliff:g> pour la raison suivante : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Impossible de démarrer le programme d\'exportation pour la raison suivante : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Aucun contact ne peut être exporté."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Vous avez désactivé une autorisation nécessaire."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Une erreur s\'est produite lors de l\'exportation : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Le nom de fichier requis est trop long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Erreur d\'E/S."</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Mémoire insuffisante. Le fichier est peut-être trop volumineux."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Impossible d\'analyser le fichier vCard pour une raison inattendue."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Le format n\'est pas compatible."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Impossible de collecter des métadonnées contenues dans le ou les fichiers vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Impossible d\'importer un ou plusieurs fichiers (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportation du fichier <xliff:g id="FILENAME">%s</xliff:g> terminée"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Les contacts ont bien été exportés"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Les contacts ont bien été exportés. Cliquez sur la notification pour les partager."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Appuyez pour partager les contacts."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exportation du fichier <xliff:g id="FILENAME">%s</xliff:g> annulée"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportation des données des contacts"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Les données de contact sont en cours d\'exportation."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Impossible d\'obtenir les informations concernant la base de données."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Aucun contact ne peut être exporté. Si des contacts sont enregistrés sur votre téléphone, il est possible qu\'un fournisseur de données n\'autorise pas l\'exportation de contacts vers un autre appareil."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Le système de composition vCard n\'a pas démarré correctement."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Échec exportation"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Les données du contact n\'ont pas été exportées.\nMotif : <xliff:g id="FAIL_REASON">%s</xliff:g>."</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importation (<xliff:g id="NAME">%s</xliff:g>)"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Impossible de lire les données vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lecture des données vCard annulée"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Le fichier vCard <xliff:g id="FILENAME">%s</xliff:g> a bien été importé"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importation du fichier <xliff:g id="FILENAME">%s</xliff:g> annulée"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Le fichier <xliff:g id="FILENAME">%s</xliff:g> va bientôt être importé."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Le fichier va bientôt être importé."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"La demande d\'importation du fichier vCard a été rejetée. Veuillez réessayer ultérieurement."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Le fichier <xliff:g id="FILENAME">%s</xliff:g> va bientôt être exporté."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Le fichier va bientôt être exporté."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Les contacts seront bientôt exportés."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"La demande d\'exportation du fichier vCard a été rejetée. Veuillez réessayer ultérieurement."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Mise en cache des fichiers vCard dans l\'espace de stockage temporaire local. L\'importation va bientôt démarrer."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Impossible d\'importer le fichier vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contact reçu via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exporter les contacts ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Mise en cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importation <xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> (<xliff:g id="NAME">%s</xliff:g>)"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exporter vers fichier VCF"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Trier par"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Prénom"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nom"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format du nom"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Prénom en premier"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Nom en premier"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Comptes"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Compte par défaut pour les nouveaux contacts"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synchroniser les métadonnées des contacts [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synchroniser les métadonnées des contacts"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mes infos"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurer le profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"À propos de Contacts"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Paramètres"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Partager les contacts visibles"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Échec du partage des contacts visibles."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Partager les contacts favoris"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Partager tous les contacts"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Échec du partage des contacts."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importer/Exporter des contacts"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importer des contacts"</string>
+    <string name="share_error" msgid="665756457151793108">"Impossible de partager ce contact."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Aucun contact à partager"</string>
+    <string name="menu_search" msgid="7464453023659824700">"Rechercher"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contacts à afficher"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contacts à afficher"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Définir la vue personnalisée"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Enregistrer"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Rechercher des contacts"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoris"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Aucun contact"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Effacer les contacts fréquents"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Sélectionner une carte SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gérer les comptes"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importer/Exporter"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Numéros bloqués"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"arrêter la recherche"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Effacer la recherche"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Options d\'affichage des contacts"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Compte"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Toujours l\'utiliser pour les appels"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Appeler avec"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Appeler avec une note"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Saisissez une note pour accompagner l\'appel..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVOYER L\'OBJET ET APPELER"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> élément non lu. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> éléments non lus. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Version de build"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licences Open Source"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Informations sur la licence des logiciels Open Source"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Règles de confidentialité"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Conditions d\'utilisation"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licences Open Source"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Impossible d\'ouvrir l\'URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Élément \"<xliff:g id="ACCOUNT_INFO">%s</xliff:g>\" coché"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Élément \"<xliff:g id="ACCOUNT_INFO">%s</xliff:g>\" non coché"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Passer un appel vidéo"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Supprimer"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipse"</string>
+</resources>
diff --git a/res-common/values-gl-rES-sw600dp/strings.xml b/res-common/values-gl-rES-sw600dp/strings.xml
new file mode 100644
index 0000000..d61c33b
--- /dev/null
+++ b/res-common/values-gl-rES-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Non hai ningún contacto exportable. Se tes contactos na tableta, é posible que algúns provedores de datos non permitan a exportación dos contactos desde a tableta."</string>
+</resources>
diff --git a/res-common/values-gl-rES/strings.xml b/res-common/values-gl-rES/strings.xml
new file mode 100644
index 0000000..71229b0
--- /dev/null
+++ b/res-common/values-gl-rES/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texto copiado"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiar no portapapeis"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Chamar ao <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Chama á casa"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Chamar ao móbil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Chamar ao traballo"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Chamar ao número de fax do traballo"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Chamar ao número de fax da casa"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Chamar ao busca"</string>
+    <string name="call_other" msgid="4472141328347894937">"Chamar"</string>
+    <string name="call_callback" msgid="687494744634190411">"Chamar ao número de devolución de chamada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Chamar ao coche"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Chamar ao número principal da empresa"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Chamar ao número de RDSI"</string>
+    <string name="call_main" msgid="4640261071249938558">"Chamar ao número principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Chamar ao fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Chamar á radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Chamar ao télex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Chamar ao número de TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Chamar ao móbil do traballo"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Chamar ao busca do traballo"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Chamar a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Chamar ao número de teléfono de MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (chamar)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Enviar unha mensaxe a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Enviar unha mensaxe á casa"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Enviar unha mensaxe ao teléfono móbil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Enviar unha mensaxe ao traballo"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Enviar unha mensaxe ao fax do traballo"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Enviar unha mensaxe ao fax de casa"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Enviar unha mensaxe ao busca"</string>
+    <string name="sms_other" msgid="910895193552957097">"Enviar unha mensaxe"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Enviar unha mensaxe ao número de devolución da chamada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Enviar unha mensaxe ao coche"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Enviar unha mensaxe ao teléfono principal da empresa"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Enviar unha mensaxe ao teléfono de RDSI"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Enviar unha mensaxe ao teléfono principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Enviar unha mensaxe ao fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Enviar unha mensaxe á radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Enviar unha mensaxe ao télex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Enviar unha mensaxe ao TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Enviar unha mensaxe ao móbil do traballo"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Enviar unha mensaxe ao busca do traballo"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Enviar unha mensaxe a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Enviar unha mensaxe ao teléfono da MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (enviar mensaxe)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Realiza unha videochamada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Borrar contactados con frecuencia?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Borra a lista de persoas coas que contactaches frecuentemente das aplicacións Contactos e Teléfono, e obriga ás aplicacións de correo electrónico a que memoricen as túas preferencias de enderezos desde cero."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Borrando contactados frecuencia..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Dispoñible"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ausente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupado"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contactos"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Outro"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directorio"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directorio de traballo"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Todos os contactos"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Buscando..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Encontráronse máis de <xliff:g id="COUNT">%d</xliff:g> contactos."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ningún contacto"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactos encontrados</item>
+      <item quantity="one">Un contacto encontrado</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contacto rápido para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sen nome)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contactos frecuentes"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Ver contacto"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Todos os contactos con números de teléfono"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contactos do perfil de traballo"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ver actualizacións"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nome"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Alcume"</string>
+    <string name="full_name" msgid="885420216812981202">"Nome"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nome"</string>
+    <string name="name_family" msgid="5317387657540738981">"Apelidos"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Tratamento do nome"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Segundo nome"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Información profesional do nome"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nome fonético"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nome fonético"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Segundo nome fonético"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Apelido fonético"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Teléfono"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Correo electrónico"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Enderezo"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"MI"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organización"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relación"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data especial"</string>
+    <string name="sms" msgid="8086289395154598654">"Mensaxe de texto"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Enderezo"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Título"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Sitio web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiquetas"</string>
+    <string name="email_home" msgid="2230967805906450693">"Enviar correo electrónico á casa"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Enviar correo electrónico ao móbil"</string>
+    <string name="email_work" msgid="7065971921227432400">"Enviar correo electrónico ao traballo"</string>
+    <string name="email_other" msgid="4601881243553289615">"Enviar correo electrónico"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Enviar correo electrónico a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Correo electrónico"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rúa"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Apartado de correos"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Barrio"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Cidade"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Código postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ver enderezo da casa"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ver enderezo do traballo"</string>
+    <string name="map_other" msgid="55098598855607997">"Ver enderezo"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ver enderezo <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatear con AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatear con Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatear con Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatear con Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatear con QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatear con Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatear con ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatear con Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatear"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"eliminar"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Amplía ou contrae os campos do nome"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Amplía ou reduce campos de nome fonético"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Todos os contactos"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Marcados con asterisco"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizar"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contacto"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Todos os demais contactos"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Todos os contactos"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Eliminar grupo de sincronización"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Engadir grupo de sincronización"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Máis grupos..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Se eliminas \"<xliff:g id="GROUP">%s</xliff:g>\" da sincronización, tamén eliminarás os contactos non agrupados da sincronización."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Gardando opcións de visualización..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Feito"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancelar"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Vista personalizada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Gardar contactos importados en:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importar da tarxeta SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importar da SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importar da SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importar de ficheiro .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancelar importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancelar exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Imposible cancelar import./export. vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Erro descoñecido"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Non se puido abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Non se puido iniciar o exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Non hai ningún contacto exportable."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Desactivaches un permiso necesario."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Produciuse un erro durante a exportación: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"O nome do ficheiro necesario é demasiado longo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Erro de E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Non hai memoria suficiente. É posible que o ficheiro sexa demasiado grande."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Non se puido analizar o vCard debido a un motivo inesperado."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"O formato non é compatible."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Non se puido recoller a información meta de determinados ficheiros vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Non se puideron importar un ou máis ficheiros (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Finalizouse a exportación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Finalizou a exportación dos contactos."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Finalizou a exportación dos contactos. Fai clic na notificación para compartilos."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Toca para compartir os contactos."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Cancelouse a exportación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportando datos de contacto"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Estanse exportando os datos dos contactos."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Non se puido obter información da base de datos."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Non hai ningún contacto exportable. Se tes contactos no teu teléfono, é posible que algúns provedores de datos non permitan a exportación dos contactos desde o teléfono."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"O redactor de vCard non se iniciou correctamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Imposible exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Non se exportaron os datos dos contactos.\n Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Non se puideron ler os datos de vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lectura dos datos de vCard cancelada"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Acabouse de importar o vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importación de <xliff:g id="FILENAME">%s</xliff:g> cancelada"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> importarase en breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"O ficheiro importarase en breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Rexeitouse a solicitude de importación de vCard. Téntao de novo máis tarde."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> exportarase en breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"O ficheiro exportarase en breve."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Exportaranse os contactos en breve."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Rexeitouse a solicitude de exportación do vCard. Téntao de novo máis tarde."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contacto"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Almacenando vCard na memoria caché do almacenamento temporal local. A importación real iniciarase en breve."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Non se puido importar o vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contacto por NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportar contactos?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Almacenando na caché"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportar a ficheiro .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordenar por"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nome"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Apelidos"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato do nome"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Primeiro o nome"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Primeiro os apelidos"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Contas"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Conta predeterminada para novos contactos"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizar metadatos de contacto [VERSIÓN DE PROBA INTERNA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizar metadatos de contacto"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"A miña información"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configura o teu perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Información sobre Contactos"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Configuración"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Compartir contactos visibles"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Produciuse un erro ao compartir os contactos visibles."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Compartir contactos favoritos"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Compartir todos os contactos"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Erro ao compartir os contactos."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importar/exportar contactos"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importar contactos"</string>
+    <string name="share_error" msgid="665756457151793108">"Non se pode compartir este contacto."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Non hai contactos para compartir."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Buscar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contactos para mostrar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contactos para mostrar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definir vista personalizada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Gardar"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Busca nos contactos"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritos"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ningún contacto"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Borrar frecuentes"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Seleccionar tarxeta SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Xestionar contas"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importar/exportar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloqueados"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"a través de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> a través de <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"detén a busca"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Borrar busca"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opcións de visualización de contactos"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Conta"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Usar sempre para as chamadas"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Chamar con"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Chamar cunha nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escribe unha nota para enviala coa chamada…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIAR e CHAMAR"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> elementos non lidos. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> elemento non lido. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versión de compilación"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licenzas de código aberto"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalles da licenza para software de código aberto"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de privacidade"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Condicións de servizo"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licenzas de código aberto"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Produciuse un erro ao abrir o URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Marcouse <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Non se marcou <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Facer videochamada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Eliminar"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Puntos suspensivos"</string>
+</resources>
diff --git a/res-common/values-gu-rIN-sw600dp/strings.xml b/res-common/values-gu-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..3f28436
--- /dev/null
+++ b/res-common/values-gu-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ઉપકરણ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"કોઈ નિકાસયોગ્ય સંપર્કો નથી. જો તમારી પાસે તમારા ટેબ્લેટ પર કોઈ સંપર્કો નથી, તો કેટલાક ડેટા પ્રદાતા ટેબ્લેટ પરથી સંપર્કોને નિકાસ કરવાની મંજૂરી આપી શકશે નહીં."</string>
+</resources>
diff --git a/res-common/values-gu-rIN/strings.xml b/res-common/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..f155fc7
--- /dev/null
+++ b/res-common/values-gu-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"ટેક્સ્ટ કૉપિ કર્યો"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ક્લિપબોર્ડ પર કૉપિ કરો"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="call_home" msgid="1479549630992276827">"ઘરે કૉલ કરો"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"મોબાઇલ પર કૉલ કરો"</string>
+    <string name="call_work" msgid="8299062439076337075">"કાર્યાલય પર કૉલ કરો"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"કાર્યાલયના ફૅક્સ પર કૉલ કરો"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ઘરના ફૅક્સ પર કૉલ કરો"</string>
+    <string name="call_pager" msgid="3038080882899955112">"પેજર પર કૉલ કરો"</string>
+    <string name="call_other" msgid="4472141328347894937">"કૉલ કરો"</string>
+    <string name="call_callback" msgid="687494744634190411">"કૉલબેક પર કૉલ કરો"</string>
+    <string name="call_car" msgid="9078083109758282133">"કાર પર કૉલ કરો"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"કંપની મુખ્ય પર કૉલ કરો"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN પર કૉલ કરો"</string>
+    <string name="call_main" msgid="4640261071249938558">"મુખ્ય પર કૉલ કરો"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ફૅક્સ પર કૉલ કરો"</string>
+    <string name="call_radio" msgid="9055749313292712021">"રેડિઓ પર કૉલ કરો"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ટેલેક્સ પર કૉલ કરો"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD પર કૉલ કરો"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"કાર્યાલયના મોબાઇલ પર કૉલ કરો"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"કાર્યાલયના પેજર પર કૉલ કરો"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS પર કૉલ કરો"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (કૉલ કરો)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> ને ટેક્સ્ટ કરો"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ઘરે ટેક્સ્ટ કરો"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"મોબાઇલ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_work" msgid="3910570578912367742">"કાર્યાલય પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"કાર્યાલયના ફૅક્સ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ઘરના ફૅક્સ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"પેજર પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_other" msgid="910895193552957097">"ટેક્સ્ટ કરો"</string>
+    <string name="sms_callback" msgid="728414485478941361">"કૉલબેક પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_car" msgid="8543669230270954512">"કાર પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"કંપની મુખ્ય પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_main" msgid="6815987840926184815">"મુખ્ય પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ફૅક્સ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"રેડિઓ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ટેલેક્સ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"કાર્યાલયના મોબાઇલ પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"કાર્યાલયના પેજર પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> ને ટેક્સ્ટ કરો"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS પર ટેક્સ્ટ કરો"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (સંદેશ મોકલો)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"વિડિઓ કૉલ કરો"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"વારંવાર સંપર્ક કરેલા સાફ કરીએ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"તમે સંપર્કો અને ફોન એપ્લિકેશન્સમાં વારંવાર સંપર્ક કરેલ સૂચિને સાફ કરશો અને ઇમેઇલ એપ્લિકેશન્સને તમારી સંબોધન પસંદગીઓને શરૂઆતથી જાણવા માટે ફરજ પાડશો."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"વારંવાર સંપર્ક કરેલા સાફ કરે છે…"</string>
+    <string name="status_available" msgid="4832569677396634846">"ઉપલબ્ધ"</string>
+    <string name="status_away" msgid="6267905184545881094">"દૂર"</string>
+    <string name="status_busy" msgid="7111912905211403545">"વ્યસ્ત"</string>
+    <string name="contactsList" msgid="7140022347217602605">"સંપર્કો"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"અન્ય"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"નિર્દેશિકા"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"કાર્ય નિર્દેશિકા"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"તમામ સંપર્કો"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"શોધી રહ્યું છે..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> કરતાં વધુ મળ્યાં."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"સંપર્કો નથી"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> મળ્યાં</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> મળ્યાં</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> માટે ઝડપી સંપર્ક"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(નામ નથી)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"વારંવાર સંપર્ક કરેલા"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"સંપર્ક જુઓ"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ફોન નંબર્સ સાથેના તમામ સંપર્કો"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"કાર્ય પ્રોફાઇલના સંપર્કો"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"અપડેટ્સ જુઓ"</string>
+    <string name="account_phone" msgid="325867897209266837">"ઉપકરણ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"નામ"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ઉપનામ"</string>
+    <string name="full_name" msgid="885420216812981202">"નામ"</string>
+    <string name="name_given" msgid="4153709115654909377">"પ્રથમ નામ"</string>
+    <string name="name_family" msgid="5317387657540738981">"છેલ્લું નામ"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"નામ ઉપસર્ગ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"મધ્ય નામ"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"નામ પ્રત્યય"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ધ્વન્યાત્મક નામ"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ધ્વન્યાત્મક પ્રથમ નામ"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ધ્વન્યાત્મક મધ્ય નામ"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ધ્વન્યાત્મક છેલ્લું નામ"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ફોન"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ઇમેઇલ"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"સરનામું"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"સંગઠન"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"સંબંધ"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"વિશિષ્ટ તારીખ"</string>
+    <string name="sms" msgid="8086289395154598654">"ટેક્સ્ટ સંદેશ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"સરનામું"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"કંપની"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"શીર્ષક"</string>
+    <string name="label_notes" msgid="3997277594846722699">"નોંધો"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"વેબસાઇટ"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"લેબલ્સ"</string>
+    <string name="email_home" msgid="2230967805906450693">"ઘરે ઇમેઇલ કરો"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"મોબાઇલ પર ઇમેઇલ કરો"</string>
+    <string name="email_work" msgid="7065971921227432400">"કાર્યાલય પર ઇમેઇલ કરો"</string>
+    <string name="email_other" msgid="4601881243553289615">"ઇમેઇલ"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> ને ઇમેઇલ કરો"</string>
+    <string name="email" msgid="5624424151176351591">"ઇમેઇલ"</string>
+    <string name="postal_street" msgid="881349814077356134">"શેરી"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"પોસ્ટ બોક્સ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"પડોશ"</string>
+    <string name="postal_city" msgid="3173008531169519309">"શહેર"</string>
+    <string name="postal_region" msgid="1695206048198921115">"રાજ્ય"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"પિન કોડ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"દેશ"</string>
+    <string name="map_home" msgid="1221397355014741634">"ઘરનું સરનામું જુઓ"</string>
+    <string name="map_work" msgid="9015981646907637207">"કાર્યાલયનું સરનામું જુઓ"</string>
+    <string name="map_other" msgid="55098598855607997">"સરનામું જુઓ"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> સરનામું જુઓ"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber નો ઉપયોગ કરીને ચેટ કરો"</string>
+    <string name="chat" msgid="6297650784873558837">"ચેટ"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"કાઢી નાખો"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"નામ ફીલ્ડ્સ વિસ્તૃત કરો અથવા સંકુચિત કરો"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ધ્વન્યાત્મક નામ ફીલ્ડ્સ વિસ્તૃત કરો અથવા સંકુચિત કરો"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"તમામ સંપર્કો"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"તારાંકિત"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"કસ્ટમાઇઝ કરો"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"સંપર્ક"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"તમામ અન્ય સંપર્કો"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"તમામ સંપર્કો"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"સમન્વયન જૂથ દૂર કરો"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"સમન્વયન જૂથ ઉમેરો"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"વધુ જૂથો…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"સમન્વયનમાંથી \"<xliff:g id="GROUP">%s</xliff:g>\" ને દૂર કરવું, સમન્વયનમાંથી કોઈપણ વણજૂથબદ્ધ સંપર્કોને પણ દૂર કરશે."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"પ્રદર્શન વિકલ્પો સાચવી રહ્યું છે…"</string>
+    <string name="menu_done" msgid="32470053723443112">"થઈ ગયું"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"રદ કરો"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"કસ્ટમાઇઝ કરેલ દૃશ્ય"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"આયાત કરેલ સંપર્કોને આની પર સાચવો:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM કાર્ડમાંથી આયાત કરો"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> માંથી આયાત કરો"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g> માંથી આયાત કરો"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ફાઇલમાંથી આયાત કરો"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> ના આયાતને રદ કરીએ?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> ના નિકાસને રદ કરીએ?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard આયાત/નિકાસને રદ કરી શક્યાં નહીં"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"અજાણી ભૂલ."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ખોલી શકાઈ નથી: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"નિકાસકર્તા શરૂ કરી શક્યાં નહીં: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"કોઈ નિકાસયોગ્ય સંપર્ક નથી."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"તમે આવશ્યક પરવાનગી અક્ષમ કરી છે."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"નિકાસ દરમિયાન ભૂલ આવી: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"જરૂરી ફાઇલનું નામ ખૂબ લાંબું છે (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O ભૂલ"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"પર્યાપ્ત મેમરી નથી. આ ફાઇલ ખૂબ મોટી હોઈ શકે છે."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"અનપેક્ષિત કારણસર vCard નું વિશ્લેષણ કરી શકાયું નથી."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ફોર્મેટ સમર્થિત નથી."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"આપેલ vCard ફાઇલ(લો)ની મેટા માહિતી ભેગી કરી શકાઈ નથી."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"એક અથવા વધુ ફાઇલો આયાત કરી શકાઈ નથી (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> ને નિકાસ કરવું સમાપ્ત થયું."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"સંપર્કોને નિકાસ કરવાનું સમાપ્ત થયું."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"નિકાસ કરવાનું સમાપ્ત થયું, સંપર્કો શેર કરવા માટે સૂચના ક્લિક કરો."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"સંપર્કો શેર કરવા માટે ટૅપ કરો."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> ને નિકાસ કરવું રદ કર્યું."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"સંપર્ક ડેટા નિકાસ કરી રહ્યાં છે"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"સંપર્ક ડેટાનો નિકાસ કરવામાં આવી રહ્યો છે."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ડેટાબેસ જાણકારી મેળવી શકાઈ નથી."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"કોઈ નિકાસયોગ્ય સંપર્કો નથી. જો તમારી પાસે તમારા ફોન પર કોઈ સંપર્કો નથી, તો કેટલાક ડેટા પ્રદાતા ફોન પરથી સંપર્કોને નિકાસ કરવાની મંજૂરી આપી શકશે નહીં."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard કમ્પોઝર ઠીકથી પ્રારંભ થયું નથી."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"નિકાસ કરી શક્યાં નથી"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"સંપર્ક ડેટા નિકાસ કર્યો નહોતો.\nકારણ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> ને આયાત કરી રહ્યાં છે"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard ડેટા વાંચી શકાયો નથી"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard ડેટા વાંચવું રદ કર્યું"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> ને આયાત કરવું સમાપ્ત થયું"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> ને આયાત કરવું રદ કર્યું"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ને ટૂંક સમયમાં આયાત કરવામાં આવશે."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ફાઇલ ટૂંક સમયમાં આયાત કરવામાં આવશે."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard આયાતની વિનંતી નકારી હતી. પછીથી ફરી પ્રયાસ કરો."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ને ટૂંક સમયમાં નિકાસ કરવામાં આવશે."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ફાઇલને ટૂંક સમયમાં નિકાસ કરવામાં આવશે."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"સંપર્કોનો ટૂંક સમયમાં નિકાસ કરવામાં આવશે."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard નિકાસની વિનંતી નકારી હતી. પછીથી ફરી પ્રયાસ કરો."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"સંપર્ક"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"સ્થાનિક અસ્થાયી સ્ટોરેજ પર vCard કેશ કરી રહ્યાં છે. વાસ્તવિક આયાત જલ્દી જ શરૂ થશે."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard આયાત કરી શકાયો નથી."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC પર સંપર્ક પ્રાપ્ત"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"સંપર્કો નિકાસ કરીએ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"કેશ કરી રહ્યાં છે"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> આયાત કરે છે: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ફાઇલ પર નિકાસ કરો"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"આ પ્રમાણે સૉર્ટ કરો"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"પ્રથમ નામ"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"છેલ્લું નામ"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"નામ ફોર્મેટ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"પ્રથમ નામ પહેલા"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"છેલ્લું નામ પહેલા"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"એકાઉન્ટ્સ"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"નવા સંપર્કો માટે ડિફોલ્ટ એકાઉન્ટ"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"સંપર્ક મેટાડેટાને સમન્વયિત કરો [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"સંપર્ક મેટાડેટાને સમન્વયિત કરો"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"મારી માહિતી"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"તમારી પ્રોફાઇલ સેટ કરો"</string>
+    <string name="setting_about" msgid="3926137653588942297">"સંપર્કો વિશે"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"સેટિંગ્સ"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"દૃશ્યક્ષમ સંપર્કોને શેર કરો"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"દૃશ્યક્ષમ સંપર્કો શેર કરવામાં નિષ્ફળ થયાં."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"મનપસંદ સંપર્કોને શેર કરો"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"તમામ સંપર્કોને શેર કરો"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"સંપર્કોને શેર કરવામાં નિષ્ફળ થયાં."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"સંપર્કો આયાત/નિકાસ કરો"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"સંપર્કો આયાત કરો"</string>
+    <string name="share_error" msgid="665756457151793108">"આ સંપર્ક શેર કરી શકાતો નથી."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"શેર કરવા માટે કોઇ સંપર્કો નથી"</string>
+    <string name="menu_search" msgid="7464453023659824700">"શોધો"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"પ્રદર્શિત કરવાના સંપર્કો"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"પ્રદર્શિત કરવાના સંપર્કો"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"કસ્ટમાઇઝ કરેલ દૃશ્ય નિર્ધારિત કરો"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"સાચવો"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"સંપર્કો શોધો"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"મનપસંદ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"કોઈ સંપર્કો નથી."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"વારંવારના સાફ કરો"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM કાર્ડ પસંદ કરો"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"એકાઉન્ટ્સ સંચાલિત કરો"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"આયાત/નિકાસ કરો"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"અવરોધિત નંબરો"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> મારફતે"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> મારફતે <xliff:g id="DATE">%1$s</xliff:g> ના રોજ"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"શોધવાનું રોકો"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"શોધ સાફ કરો"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"સંપર્ક પ્રદર્શન વિકલ્પો"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"એકાઉન્ટ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"કૉલ્સ માટે આનો ઉપયોગ હંમેશાં કરો"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"આની સાથે કૉલ કરો"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"નોંધ સાથે કૉલ કરો"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"કૉલ સાથે મોકલવા માટે એક નોંધ લખો ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"મોકલો અને કૉલ કરો"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> વાંચ્યા વગરની આઇટમ. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> વાંચ્યા વગરની આઇટમ. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"બિલ્ડ સંસ્કરણ"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ઓપન સોર્સ લાઇસેંસેસ"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ઓપન સોર્સ સૉફ્ટવેર માટે લાઇસન્સ વિગતો"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"ગોપનીયતા નીતિ"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"સેવાની શરતો"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ખુલ્લા સ્ત્રોત લાઇસેંસેસ"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url ખોલવામાં નિષ્ફળ થયાં."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ચેક કર્યું"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ચેક કરેલ નથી"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"વિડિઓ કૉલ કરો"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"કાઢી નાખો"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"અધ્યાહાર"</string>
+</resources>
diff --git a/res-common/values-hi-sw600dp/strings.xml b/res-common/values-hi-sw600dp/strings.xml
new file mode 100644
index 0000000..e06a53c
--- /dev/null
+++ b/res-common/values-hi-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"डिवाइस"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"कोई भी निर्यात योग्य संपर्क नहीं है. यदि आपके पास अपने टैबलेट पर संपर्क हों, तो हो सकता है कि कुछ डेटा प्रदाता संपर्कों को टैबलेट से निर्यात ना करने दें."</string>
+</resources>
diff --git a/res-common/values-hi/strings.xml b/res-common/values-hi/strings.xml
new file mode 100644
index 0000000..04106a3
--- /dev/null
+++ b/res-common/values-hi/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"लेख की प्रतिलिपि बनाई गई"</string>
+    <string name="copy_text" msgid="3424081789297978355">"क्‍लिपबोर्ड पर कॉपी बनाएं"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> पर कॉल करें"</string>
+    <string name="call_home" msgid="1479549630992276827">"घर के फ़ोन नंबर पर कॉल करें"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"मोबाइल पर कॉल करें"</string>
+    <string name="call_work" msgid="8299062439076337075">"कार्यालय के फ़ोन नंबर पर कॉल करें"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"कार्यालय के फ़ैक्स पर कॉल करें"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"घर के फ़ैक्स पर कॉल करें"</string>
+    <string name="call_pager" msgid="3038080882899955112">"पेजर पर कॉल करें"</string>
+    <string name="call_other" msgid="4472141328347894937">"कॉल करें"</string>
+    <string name="call_callback" msgid="687494744634190411">"कॉलबैक नंबर पर कॉल करें"</string>
+    <string name="call_car" msgid="9078083109758282133">"कार फ़ोन पर कॉल करें"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"कंपनी के मुख्य नंबर पर कॉल करें"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN पर कॉल करें"</string>
+    <string name="call_main" msgid="4640261071249938558">"मुख्य फ़ोन नंबर पर कॉल करें"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"फ़ैक्स पर कॉल करें"</string>
+    <string name="call_radio" msgid="9055749313292712021">"रेडियो फ़ोन नंबर पर कॉल करें"</string>
+    <string name="call_telex" msgid="2909886619224843563">"टेलेक्स पर कॉल करें"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD पर कॉल करें"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"कार्यालय के मोबाइल पर कॉल करें"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"कार्यालय के पेजर पर कॉल करें"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> पर कॉल करें"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS पर कॉल करें"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (कॉल करें)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> पर लेख संदेश भेजें"</string>
+    <string name="sms_home" msgid="7765831490534280540">"घर के फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"मोबाइल पर लेख संदेश भेजें"</string>
+    <string name="sms_work" msgid="3910570578912367742">"कार्यालय के फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"कार्यालय के फ़ैक्स पर लेख संदेश भेजें"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"घर के फ़ैक्स पर लेख संदेश भेजें"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"पेजर पर लेख संदेश भेजें"</string>
+    <string name="sms_other" msgid="910895193552957097">"लेख संदेश भेजें"</string>
+    <string name="sms_callback" msgid="728414485478941361">"कॉलबैक फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_car" msgid="8543669230270954512">"कार फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"कंपनी के मुख्य फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN पर लेख संदेश भेजें"</string>
+    <string name="sms_main" msgid="6815987840926184815">"मुख्य फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"फ़ैक्स पर लेख संदेश भेजें"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"रेडियो फ़ोन नंबर पर लेख संदेश भेजें"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"टेलेक्स पर लेख संदेश भेजें"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD पर लेख संदेश भेजें"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"कार्यालय के मोबाइल पर लेख संदेश भेजें"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"कार्यालय के पेजर पर लेख संदेश भेजें"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> पर लेख संदेश भेजें"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS पर लेख संदेश भेजें"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (संदेश भेजें)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"वीडियो कॉल करें"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"अक्‍सर किए जाने वाले संपर्क साफ करें?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"आपको संपर्क और फ़ोन ऐप्स से अक्सर संपर्क किए जाने वाली सूची साफ़ करनी होगी, और अपने ईमेल ऐप्स को आपकी पता प्राथमिकताओं को प्रारंभ से जानने के लिए बाध्य करना होगा."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"अक्सर किए जाने वाले संपर्क साफ कर रहा है…"</string>
+    <string name="status_available" msgid="4832569677396634846">"उपलब्ध"</string>
+    <string name="status_away" msgid="6267905184545881094">"दूर"</string>
+    <string name="status_busy" msgid="7111912905211403545">"व्यस्त"</string>
+    <string name="contactsList" msgid="7140022347217602605">"संपर्क"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"अन्य"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"निर्देशिका"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"कार्य निर्देशिका"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"सभी संपर्क"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"खोज रहा है…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> से अधिक मिले."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"कोई संपर्क नहीं"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> मिले</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> मिले</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> के लिए त्वरित संपर्क"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(कोई नाम नहीं)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"बार-बार संपर्क किए गए"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"संपर्क देखें"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"फ़ोन नंबरों वाले सभी संपर्क"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"कार्य प्रोफ़ाइल के संपर्क"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"नई जानकारी देखें"</string>
+    <string name="account_phone" msgid="325867897209266837">"डिवाइस"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"नाम"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"प्रचलित नाम"</string>
+    <string name="full_name" msgid="885420216812981202">"नाम"</string>
+    <string name="name_given" msgid="4153709115654909377">"नाम"</string>
+    <string name="name_family" msgid="5317387657540738981">"उपनाम"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"नाम का प्रारंभिक भाग"</string>
+    <string name="name_middle" msgid="3951610314424632183">"मध्य नाम"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"नाम का अंतिम भाग"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"फ़ोनेटिक नाम"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"फ़ोनेटिक नाम"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"फ़ोनेटिक मध्य नाम"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"फ़ोनेटिक उपनाम"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"फ़ोन"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ईमेल"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"पता"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"संगठन"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"संबंध"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"विशेष दिनांक"</string>
+    <string name="sms" msgid="8086289395154598654">"लेख संदेश"</string>
+    <string name="postal_address" msgid="7692926530081579786">"पता"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"कंपनी"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"शीर्षक"</string>
+    <string name="label_notes" msgid="3997277594846722699">"नोट"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"वेबसाइट"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"लेबल"</string>
+    <string name="email_home" msgid="2230967805906450693">"घर के ईमेल पते पर ईमेल करें"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"मोबाइल ईमेल पते पर ईमेल करें"</string>
+    <string name="email_work" msgid="7065971921227432400">"कार्यालय के ईमेल पते पर ईमेल करें"</string>
+    <string name="email_other" msgid="4601881243553289615">"ईमेल करें"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> पर ईमेल करें"</string>
+    <string name="email" msgid="5624424151176351591">"ईमेल करें"</string>
+    <string name="postal_street" msgid="881349814077356134">"मार्ग का नाम"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"पीओ बॉक्स"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"पड़ोस"</string>
+    <string name="postal_city" msgid="3173008531169519309">"शहर"</string>
+    <string name="postal_region" msgid="1695206048198921115">"राज्य"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"पिन कोड"</string>
+    <string name="postal_country" msgid="3988452247038791892">"देश"</string>
+    <string name="map_home" msgid="1221397355014741634">"घर का पता देखें"</string>
+    <string name="map_work" msgid="9015981646907637207">"कार्यालय का पता देखें"</string>
+    <string name="map_other" msgid="55098598855607997">"पता देखें"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> पता देखें"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM का उपयोग करके बातचीत करें"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live का उपयोग करके बातचीत करें"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo का उपयोग करके बातचीत करें"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype का उपयोग करके बातचीत करें"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ का उपयोग करके बातचीत करें"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google टॉक का उपयोग करके बातचीत करें"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ का उपयोग करके बातचीत करें"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber का उपयोग करके बातचीत करें"</string>
+    <string name="chat" msgid="6297650784873558837">"बातचीत करें"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"हटाएं"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"नाम फ़ील्ड विस्तृत या संक्षिप्त करें"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"फ़ोनेटिक नाम फ़ील्ड विस्‍तृत या संक्षिप्त करें"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"सभी संपर्क"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"तारांकित"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"कस्‍टमाइज़ करें"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"संपर्क"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"अन्य सभी संपर्क"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"सभी संपर्क"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"समन्वयन समूह निकालें"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"समन्वयन समूह जोड़ें"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"अधिक समूह…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" को समन्‍वयन से निकालने पर समन्‍वयन से सभी असमूहीकृत संपर्क भी निकल जाएंगे."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"प्रदर्शन विकल्प सहेज रहा है…"</string>
+    <string name="menu_done" msgid="32470053723443112">"पूर्ण"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"अभी नहीं"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"कस्टमाइज़ किया गया दृश्य"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"आयातित संपर्कों को इसमें सहेजें:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"सिम कार्ड से आयात करें"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> सिम से आयात करें"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> सिम से आयात करें"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf फ़ाइल से आयात करें"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> का आयात रहने दें?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> का निर्यात रहने दें?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard आयात/निर्यात रद्द नहीं हो सका"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"अज्ञात त्रुटि‍."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" नहीं खोली जा सकी: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"निर्यातकर्ता प्रारंभ नहीं किया जा सका: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"कोई भी निर्यात-योग्‍य संपर्क नहीं है."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"आपने एक आवश्यक अनुमति को अक्षम कर दिया है."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"निर्यात करते समय कोई त्रुटि हुई: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"आवश्‍यक फ़ाइल नाम बहुत बड़ा है (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O त्रुटि"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"स्‍मृति पर्याप्त नहीं है. हो सकता है फ़ाइल बहुत बड़ी हो."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"किसी अप्रत्‍याशित कारण से vCard पार्स नहीं किया जा सका."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"प्रारूप समर्थित नहीं है."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"दी गई vCard फ़ाइल (फ़ाइलों) की मेटा जानकारी एकत्र नहीं की जा सकी."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"एक या अधिक फ़ाइलें आयात नहीं की जा सकीं (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> का निर्यात पूरा हो गया."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"संपर्कों का निर्यात किया जाना समाप्त हो गया."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"संपर्कों का निर्यात पूरा हो गया है, संपर्क साझा करने के लिए नोटिफिकेशन क्लिक करें."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"संपर्क साझा करने के लिए टैप करें."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> को निर्यात करना रद्द कर दिया गया."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"संपर्क डेटा निर्यात हो रहा है"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"संपर्क डेटा निर्यात किया जा रहा है."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"डेटाबेस जानकारी नहीं मिल सकी."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"कोई भी निर्यात-योग्‍य संपर्क नहीं है. यदि आपके पास अपने फ़ोन पर संपर्क  हों, तो हो सकता है कि कुछ डेटा प्रदाता संपर्कों को फ़ोन से निर्यात न करने दें."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard कंपोज़र ठीक से प्रारंभ नहीं हुआ."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"निर्यात नहीं कर सका"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"संपर्क डेटा निर्या‍त नहीं किया गया था.\nकारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> आयात कर रहा है"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard डेटा नहीं पढ़ा जा सका"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard डेटा को पढ़ना रद्द कर दिया गया"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> आयात करना पूर्ण"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> को आयात करना रद्द कर दिया गया"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> को जल्‍दी ही आयात किया जाएगा."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"फ़ाइल शीघ्र ही आयात की जाएगी."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard आयात अनुरोध अस्‍वीकार हो गया था. बाद में पुन: प्रयास करें."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> को जल्‍दी ही निर्यात किया जाएगा."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"फ़ाइल शीघ्र ही निर्यात की जाएगी."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"संपर्कों को शीघ्र ही निर्यात किया जाएगा."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard निर्यात अनुरोध अस्‍वीकार हो गया था. बाद में पुन: प्रयास करें."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"संपर्क"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard को स्‍थानीय अस्‍थायी मेमोरी में संचित कर रहा है. वास्‍तविक आयात जल्‍दी ही प्रारंभ होगा."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard आयात नहीं कर सका."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC पर प्राप्त संपर्क"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"संपर्कों को निर्यात करें?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"संचय कर रहा है"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> आयात कर रहा है: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf फाइल में निर्यात करें"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"इससे क्रमित करें"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"नाम"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"उपनाम"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"नाम प्रारूप"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"नाम पहले"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"उपनाम पहले"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"खाते"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"नए संपर्कों के लिए डिफ़ॉल्ट खाता"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"संपर्क मेटाडेटा समन्वयित करें [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"संपर्क मेटाडेटा समन्वयनित करें"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"मेरी जानकारी"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"अपनी प्रोफ़ाइल सेट करें"</string>
+    <string name="setting_about" msgid="3926137653588942297">"संपर्क के बारे में"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"सेटिंग"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"दिखाई देने वाले संपर्क साझा करें"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"दृश्‍यमान संपर्क साझा करने में विफल रहा."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"पसंदीदा संपर्कों को साझा करें"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"सभी संपर्कों को साझा करें"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"संपर्कों को साझा करना विफल रहा."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"संपर्कों को आयात/निर्यात करें"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"संपर्कों को आयात करें"</string>
+    <string name="share_error" msgid="665756457151793108">"यह संपर्क साझा नहीं किया जा सकता."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"साझा करने के लिए कोई भी संपर्क नहीं है."</string>
+    <string name="menu_search" msgid="7464453023659824700">"खोजें"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"दिखाने के लिए संपर्क"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"दिखाने के लिए संपर्क"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"कस्टमाइज़ किए गए दृश्य को परिभाषित करें"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"सहेजें"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"संपर्क खोजें"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"पसंदीदा"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"कोई संपर्क नहीं."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"अक्सर किए जाने वाले साफ़ करें"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"सिम कार्ड चुनें"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"खाते प्रबंधित करें"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"आयात करें/निर्यात करें"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"अवरुद्ध नंबर"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> द्वारा"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> द्वारा <xliff:g id="DATE">%1$s</xliff:g> को"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"खोजना बंद करें"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"खोज साफ़ करें"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"संपर्क प्रदर्शन विकल्प"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"खाता"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"कॉल के लिए हमेशा इसका उपयोग करें"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"इस सिम से कॉल करें"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"नोट के साथ कॉल करें"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"कॉल के साथ भेजने के लिए नोट लिखें ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"भेजें और कॉल करें"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> नहीं पढ़े गए आइटम. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> नहीं पढ़े गए आइटम. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"बिल्ड वर्शन"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ओपन सोर्स लाइसेंस"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ओपन सोर्स सॉफ़्टवेयर के लि‍ए लाइसेंस वि‍वरण"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"निजता नीति"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"सेवा की शर्तें"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ओपन सोर्स लाइसेंस"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url खोलने में विफल रहा."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> चेक किया गया"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> चेक नहीं किया गया"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"वीडियो कॉल करें"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"हटाएं"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"पदलोप चिह्न"</string>
+</resources>
diff --git a/res-common/values-hr-sw600dp/strings.xml b/res-common/values-hr-sw600dp/strings.xml
new file mode 100644
index 0000000..dbab45a
--- /dev/null
+++ b/res-common/values-hr-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Uređaj"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nema kontakata koji se mogu izvoziti. Ako na tabletu imate kontakte, neki davatelji podataka možda ne dopuštaju izvoz kontakata s tableta."</string>
+</resources>
diff --git a/res-common/values-hr/strings.xml b/res-common/values-hr/strings.xml
new file mode 100644
index 0000000..97bd5f1
--- /dev/null
+++ b/res-common/values-hr/strings.xml
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekst kopiran"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiraj u međuspremnik"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Nazovi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Nazovi kućni broj"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Nazovi mobitel"</string>
+    <string name="call_work" msgid="8299062439076337075">"Nazovi ured"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Nazovi uredski faks"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Nazovi kućni faks"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Nazovi dojavljivač"</string>
+    <string name="call_other" msgid="4472141328347894937">"Nazovi"</string>
+    <string name="call_callback" msgid="687494744634190411">"Uzvrati poziv"</string>
+    <string name="call_car" msgid="9078083109758282133">"Nazovi automobilski"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Nazovi glavni broj tvrtke"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Nazovi ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Nazovi glavni broj"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Nazovi faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Nazovi radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Nazovi teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Nazovi TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Nazovi poslovni mobitel"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Nazovi poslovni dojavljivač"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Nazovi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Nazovi MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (poziv)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Pošalji SMS na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Pošalji SMS na kućni"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Pošalji SMS na mobitel"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Pošalji SMS na uredski"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Pošalji SMS na uredski faks"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Pošalji SMS na kućni faks"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Pošalji SMS na dojavljivač"</string>
+    <string name="sms_other" msgid="910895193552957097">"Pošalji SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Pošalji SMS na povratni"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Pošalji SMS na automobilski"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Pošalji SMS na glavni u tvrtki"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Pošalji SMS na ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Pošalji SMS na glavni"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Pošalji SMS na faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Pošalji SMS na radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Pošalji SMS na teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Pošalji SMS na TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Pošalji SMS na poslovni mobitel"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Pošalji SMS na poslovni dojavljivač"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Pošalji SMS na <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Pošalji SMS na MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (poruka)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Uputite videopoziv"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Brisati podatke o čestim kontaktima?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Izbrisat ćete popis osoba s kojima često kontaktirate u aplikacijama Kontakti i Osobe, pa će aplikacije e-pošte morati ispočetka učiti vaše postavke adresiranja."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Brisanje često kontaktiranih..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Dostupan"</string>
+    <string name="status_away" msgid="6267905184545881094">"Odsutan"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Zauzet"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakti"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Ostalo"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktorij"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Poslovni direktorij"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Svi kontakti"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Pretraživanje…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Pronađeno je više od <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nema kontakata"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> pronađeni</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> pronađena</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> pronađenih</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Brzi kontakt za korisnika <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Bez imena)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Često kontaktirani"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Prikaži kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Svi kontakti s telefonskim brojevima"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Poslovni kontakti"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Prikaži ažuriranja"</string>
+    <string name="account_phone" msgid="325867897209266837">"Uređaj"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ime"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nadimak"</string>
+    <string name="full_name" msgid="885420216812981202">"Ime"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ime"</string>
+    <string name="name_family" msgid="5317387657540738981">"Prezime"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefiks imena"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Srednje ime"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufiks imena"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Ime fonetski"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetski zapis imena"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetski zapis srednjeg imena"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetski zapis prezimena"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-pošta"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizacija"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Odnos"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Poseban datum"</string>
+    <string name="sms" msgid="8086289395154598654">"Tekstna poruka"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresa"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Tvrtka"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Naslov"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Bilješke"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Web-lokacija"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Oznake"</string>
+    <string name="email_home" msgid="2230967805906450693">"Pošalji e-poruku na kućnu e-adresu"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Pošalji e-poruku na mobilnu e-adresu"</string>
+    <string name="email_work" msgid="7065971921227432400">"Pošalji e-poruku na poslovnu e-adresu"</string>
+    <string name="email_other" msgid="4601881243553289615">"Pošalji e-poruku"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Pošalji e-poruku kontaktu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Pošalji e-poruku"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulica"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Poštanski pretinac"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Četvrt"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Grad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Država"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poštanski broj"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Zemlja"</string>
+    <string name="map_home" msgid="1221397355014741634">"Prikaz kućne adrese"</string>
+    <string name="map_work" msgid="9015981646907637207">"Prikaz adrese na poslu"</string>
+    <string name="map_other" msgid="55098598855607997">"Prikaz adrese"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Prikaz <xliff:g id="CUSTOM">%s</xliff:g> adrese"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatajte pomoću AIM-a"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatajte uz Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatajte uz Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatajte uz Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatajte uz QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatajte uslugom Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatajte pomoću ICQ-a"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatajte uz Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"izbriši"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Proširi ili sažmi nazive polja"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Proširivanje ili sažimanje polja fonetskih imena"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Svi kontakti"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Sa zvjezdicom"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Prilagodi"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Svi ostali kontakti"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Svi kontakti"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Ukloni grupu sinkronizacije"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Dodaj grupu sinkroniziranja"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Više grupa..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Uklanjanje grupe \"<xliff:g id="GROUP">%s</xliff:g>\" iz sinkronizacije također će ukloniti sve negrupirane kontakte iz sinkronizacije."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Spremanje opcija prikaza..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Gotovo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Odustani"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Prilagođeni prikaz"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Spremite uvezene kontakte na račun:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Uvoz sa SIM kartice"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Uvoz sa SIM-a <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Uvoz sa SIM-a <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Uvezi iz .vcf datoteke"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Otkazati uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Otkazati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Uvoz/izvoz kartice vCard nije otkazan"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Nepoznata pogreška."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nije bilo moguće otvoriti datoteku \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Alat za izvoz ne može se pokrenuti: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nema kontakata koji se mogu izvoziti."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Onemogućili ste obavezno dopuštenje."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Tijekom izvoza došlo je do pogreške: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Obavezan naziv datoteke predug je (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O pogreška"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nema dovoljno memorije. Datoteka je možda prevelika."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Iz neočekivanog razloga nije moguće analizirati vCard datoteku."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format nije podržan."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Neuspješno prikupljanje metainformacija danih datoteka kartice vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Uvoz jedne ili više datoteka nije uspio (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Završetak izvoza datoteke <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Dovršen je izvoz kontakata."</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> otkazan je."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Izvoz podataka o kontaktu"</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Dohvaćanje podataka iz baze podataka nije uspjelo."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nema kontakata koji se mogu izvoziti. Ako na svojem telefonu imate kontakte, neki davatelji podataka možda ne dopuštaju izvoz kontakata s tog telefona."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Sastavljač za vCard nije se ispravno pokrenuo."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Izvoz nije uspio"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Podaci o kontaktu nisu izvezeni.\nRazlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Uvozi se <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Čitanje podataka vCarda nije uspjelo"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Čitanje podataka kartice vCard otkazano"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Završetak uvoza datoteke <xliff:g id="FILENAME">%s</xliff:g> kartice vCard"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> otkazan je"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> uskoro će biti uvezena."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Datoteka će uskoro biti uvezena."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Zahtjev za uvoz formata vCard odbijen je. Pokušajte ponovo kasnije."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> uskoro će biti izvezena."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Datoteka će se uskoro izvesti."</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Zahtjev za izvoz formata vCard odbijen je. Pokušajte ponovo kasnije."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Spremanje vCard datoteka u lokalnu privremenu pohranu. Stvarni uvoz počet će uskoro."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Uvoz vCard datoteke nije uspio."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt NFC-om"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Izvesti kontakte?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Spremanje u predmemoriju"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Uvoz <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Izvezi u .vcf datoteku"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Poredaj po"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ime"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Prezime"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Oblik imena"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Najprije ime"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Najprije prezime"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Računi"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Zadani račun za nove kontakte"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinkronizacija metapodataka kontakta [INTERNA PROBNA VERZIJA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinkronizacija metapodataka kontakta"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Moje informacije"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Postavljanje profila"</string>
+    <string name="setting_about" msgid="3926137653588942297">"O kontaktima"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Postavke"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Dijeli vidljive kontakte"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nije uspjelo dijeljenje vidljivih kontakata"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Podijeli omiljene kontakte"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Podijeli sve kontakte"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Dijeljenje kontakata nije uspjelo."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Uvoz/izvoz kontakata"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Uvoz kontakata"</string>
+    <string name="share_error" msgid="665756457151793108">"Ovaj kontakt nije moguće dijeliti."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nema kontakata za dijeljenje."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Pretraži"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakti za prikaz"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakti za prikaz"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definiranje prilagođenog prikaza"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Spremi"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Pretraživanje kontakata"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoriti"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nema kontakata."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Briši često kontaktirane"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Odaberi SIM karticu"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Upravljaj računima"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Uvoz/izvoz"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokirani brojevi"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"putem izvora <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> putem izvora <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"zaustavi pretraživanje"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Brisanje pretraživanja"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opcije prikaza kontakata"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Račun"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Uvijek upotrebljavaj za pozive"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Poziv putem usluge"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Poziv uz bilješku"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Napišite bilješku koju ćete poslati uz poziv..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"POŠALJI I NAZOVI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitana stavka. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitane stavke. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitanih stavki. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Međuverzija"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licence otvorenog izvornog koda"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Pojedinosti o licenci za softver otvorenog koda"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Pravila o privatnosti"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Uvjeti pružanja usluge"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licence otvorenog izvornog koda"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Otvaranje URL-a nije uspjelo."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> potvrđen"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> nije potvrđen"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Upućivanje videopoziva"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Brisanje"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Tri točke"</string>
+</resources>
diff --git a/res-common/values-hu-sw600dp/strings.xml b/res-common/values-hu-sw600dp/strings.xml
new file mode 100644
index 0000000..75652d7
--- /dev/null
+++ b/res-common/values-hu-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Eszköz"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nincsenek exportálható névjegyek. Ha vannak névjegyek a táblagépén, akkor elképzelhető, hogy az adatszolgáltatója nem teszi lehetővé a névjegyek exportálását a táblagépről."</string>
+</resources>
diff --git a/res-common/values-hu/strings.xml b/res-common/values-hu/strings.xml
new file mode 100644
index 0000000..3565371
--- /dev/null
+++ b/res-common/values-hu/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Másolt szöveg"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Másolás vágólapra"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> hívása"</string>
+    <string name="call_home" msgid="1479549630992276827">"Otthoni szám hívása"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Mobil hívása"</string>
+    <string name="call_work" msgid="8299062439076337075">"Munkahelyi telefon hívása"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Munkahelyi fax hívása"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Otthoni fax hívása"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Csipogó hívása"</string>
+    <string name="call_other" msgid="4472141328347894937">"Hívás"</string>
+    <string name="call_callback" msgid="687494744634190411">"Visszahívási szám hívása"</string>
+    <string name="call_car" msgid="9078083109758282133">"Gépkocsi hívása"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Céges fővonal hívása"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN-telefon hívása"</string>
+    <string name="call_main" msgid="4640261071249938558">"Fő telefonszám hívása"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Fax hívása"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Rádiótelefon hívása"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Telex hívása"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD-szám hívása"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Munkahelyi mobil hívása"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Munkahelyi csipogó hívása"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> hívása"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS-ben szereplő telefonszám hívása"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (hívás)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS küldése haza"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS küldése mobiltelefonra"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS küldése munkahelyi telefonra"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS küldése munkahelyi faxszámra"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS küldése otthoni faxszámra"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS küldése csipogóra"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS küldése"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS küldése visszahívandó számra"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS küldése gépkocsinak"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS küldése a céges fővonalra"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS küldése ISDN-telefonra"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS küldése fő telefonszámra"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS küldése faxszámra"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS küldése rádiótelefonra"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS küldése telexre"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS küldése szöveges telefonra (TTY/TDD)"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS küldése munkahelyi mobilra"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS küldése munkahelyi csipogóra"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS küldése ide: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS küldése MMS-ben szereplő számra"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (üzenet)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Videohívás kezdeményezése"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Törli a gyakran keresetteket?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Törölni fogja a gyakran keresett személyek listáját a Névjegyek és a Telefon alkalmazásban, és arra kényszeríti az e-mail alkalmazásokat, hogy elölről kezdjék az Ön címzési szokásainak megtanulását."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Gyakran keresettek törlése..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Elérhető"</string>
+    <string name="status_away" msgid="6267905184545881094">"Nincs a gépnél"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Elfoglalt"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Névjegyek"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Egyéb"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Címtár"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Munkahelyi névjegyek címtára"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Összes névjegy"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Keresés…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Több mint <xliff:g id="COUNT">%d</xliff:g> találat."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nincsenek névjegyek"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> találat</item>
+      <item quantity="one">1 találat</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> gyors elérése"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nincs név)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Gyakran keresettek"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Névjegy megtekintése"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Minden névjegy telefonszámokkal"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Munkaprofilhoz tartozó névjegyek"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Frissítések megtekintése"</string>
+    <string name="account_phone" msgid="325867897209266837">"Eszköz"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Név"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Becenév"</string>
+    <string name="full_name" msgid="885420216812981202">"Név"</string>
+    <string name="name_given" msgid="4153709115654909377">"Utónév"</string>
+    <string name="name_family" msgid="5317387657540738981">"Vezetéknév"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Név előtagja"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Második utónév"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Név utótagja"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Név fonetikusan"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Utónév fonetikusan"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Második utónév fonetikusan"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Vezetéknév fonetikusan"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefonszám"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Cím"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Szervezet"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Kapcsolat"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Különleges dátum"</string>
+    <string name="sms" msgid="8086289395154598654">"Szöveges üzenet"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Cím"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Cég"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Beosztás"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Megjegyzések"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Webhely"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Címkék"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-mail küldése haza"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-mail küldése mobiltelefonra"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-mail küldése munkahelyi címre"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-mail küldése"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-mail küldése a(z) <xliff:g id="CUSTOM">%s</xliff:g> címre"</string>
+    <string name="email" msgid="5624424151176351591">"E-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Utca, házszám"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postafiók"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Környék"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Település"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Állam"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Irányítószám"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Ország"</string>
+    <string name="map_home" msgid="1221397355014741634">"Otthoni cím megtekintése"</string>
+    <string name="map_work" msgid="9015981646907637207">"Munkahelyi cím megtekintése"</string>
+    <string name="map_other" msgid="55098598855607997">"Cím megtekintése"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> cím megtekintése"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Csevegés AIM-on"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Csevegés a Windows Live-on"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Csevegés a Yahoon"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Csevegés Skype használatával"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Csevegés a QQ-n"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Csevegés a Google Csevegő használatával"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Csevegés az ICQ-n"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Csevegés Jabberen"</string>
+    <string name="chat" msgid="6297650784873558837">"Csevegés"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"törlés"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Névmezők részletes vagy listanézete"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Fonetikus névmezők kinyitása és összecsukása"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Összes névjegy"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Csillaggal megjelölt"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Személyre szabás"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Névjegy"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Az összes többi névjegy"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Összes névjegy"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Szinkronizálási csoport eltávolítása"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Szinkronizálási csoport hozzáadása"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"További csoportok..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Ha leállítja a(z) „<xliff:g id="GROUP">%s</xliff:g>” csoport szinkronizálását, ugyanez történik a nem csoportosított névjegyekkel is."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Megjelenítési beállítások mentése..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Kész"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Mégse"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Személyre szabott nézet"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Importált névjegyek mentési helye:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importálás SIM kártyáról"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importálás a következő SIM kártyáról: <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importálás a következő SIM kártyáról: <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importálás .vcf fájlból"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Megszakítja <xliff:g id="FILENAME">%s</xliff:g> importálását?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Megszakítja <xliff:g id="FILENAME">%s</xliff:g> exportálását?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard imp./exp. megszakítása sikertelen"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Ismeretlen hiba."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"A(z) „<xliff:g id="FILE_NAME">%s</xliff:g>” fájl nem nyitható meg: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nem sikerült elindítani az exportálót: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nincs exportálható névjegy."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Letiltott egy szükséges engedélyt."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Hiba történt az exportálás során: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"A fájlnév túl hosszú („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O hiba"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nincs elég memória. Lehet, hogy túl nagy a fájl."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Váratlan ok miatt nem sikerült a vCard szintaktikai elemzése."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"A formátum nem támogatott."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nem sikerült begyűjteni a vCard-fájl(ok) metaadatait."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Egy vagy több fájl nem importálható (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"A(z) <xliff:g id="FILENAME">%s</xliff:g> exportálása befejeződött."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"A névjegyek exportálása befejeződött."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Az exportálás befejeződött. A névjegyek megosztásához kattintson az értesítésre."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Koppintson rá a névjegyek megosztásához."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"A(z) <xliff:g id="FILENAME">%s</xliff:g> exportálása megszakítva."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Névjegyadatok exportálása"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"A névjegyadatok exportálása folyamatban van."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nem sikerült lekérni az adatbázis-információkat."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nincsenek exportálható névjegyek. Ha vannak névjegyek a telefonján, akkor előfordulhat, hogy az adatszolgáltató nem teszi lehetővé a névjegyek exportálását a telefonról."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"A vCard-készítő nem megfelelően indult el."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Sikertelen export"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Nem sikerült a névjegyadatok exportálása.\nOk: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importálás – <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nem sikerült beolvasni a vCard adatait."</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"A vCard-adatok beolvasása megszakítva"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"A(z) <xliff:g id="FILENAME">%s</xliff:g> vCard importálása befejeződött"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"A(z) <xliff:g id="FILENAME">%s</xliff:g> importálása megszakítva"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"A(z) <xliff:g id="FILENAME">%s</xliff:g> hamarosan importálva lesz."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"A fájl importálása nemsokára megtörténik."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"A vCard-importálási kérelem elutasítva. Próbálja újra később."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"A(z) <xliff:g id="FILENAME">%s</xliff:g> hamarosan exportálva lesz."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"A fájl exportálása hamarosan megtörténik."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"A névjegyek exportálása hamarosan megtörténik."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"A vCard-exportálási kérelem elutasítva. Próbálja újra később."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"névjegy"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(ok) mentése az ideiglenes helyi tárolóba. A tényleges importálás hamarosan megkezdődik."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Nem sikerült a vCard importálása."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC-n kapott név"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportálja a névjegyeket?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Gyorsítótárazás"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importálás – <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportálás .vcf fájlba"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Rendezés alapja"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Utónév"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Vezetéknév"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Névformátum"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Utónév elöl"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Vezetéknév elöl"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Fiókok"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Alapértelmezett fiók az új névjegyek számára"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Névjegyek metaadatainak szinkronizálása [DOGFOOD ALKALMAZÁS]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Névjegyek metaadatainak szinkronizálása"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Saját adatok"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Profil beállítása"</string>
+    <string name="setting_about" msgid="3926137653588942297">"A Névjegyekről"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Beállítások"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Látható névjegyek megosztása"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nem sikerült megosztani a látható névjegyeket."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Kedvenc névjegyek megosztása"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Az összes névjegy megosztása"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Nem sikerült megosztani a névjegyeket."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Névjegyek importálása/exportálása"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Névjegyek importálása"</string>
+    <string name="share_error" msgid="665756457151793108">"Ezt a névjegyet nem lehet megosztani."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nincsenek megosztható névjegyek."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Keresés"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Megjelenítendő névjegyek"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Megjelenítendő névjegyek"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Személyre szabott nézet megadása"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Mentés"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Keresés a névjegyek között"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Kedvencek"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nincsenek névjegyek."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Gyakran keresettek törlése"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM kártya kiválasztása"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Fiókok kezelése"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importálás/exportálás"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Letiltott számok"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"itt: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> itt: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"keresés leállítása"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Keresés törlése"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Névjegy megjelenítési lehetőségei"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Fiók"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Mindig ezt használja hívásokhoz"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Hívás a következővel:"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Hívás üzenettel"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Írjon üzenetet, amelyet elküldhetünk a hívással együtt…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"KÜLDÉS és HÍVÁS"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="LIMIT">%2$s</xliff:g>/<xliff:g id="COUNT">%1$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> olvasatlan elem. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> olvasatlan elem. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Build verziószáma"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Nyílt forráskódú licencek"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"A nyílt forráskódú szoftverekhez kapcsolódó licenc részletei"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Adatvédelmi irányelvek"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Általános Szerződési Feltételek"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Nyílt forráskódú licencek"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Nem sikerült megnyitni az URL-címet."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"A(z) <xliff:g id="ACCOUNT_INFO">%s</xliff:g> bejelölve"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"A(z) <xliff:g id="ACCOUNT_INFO">%s</xliff:g> nincs bejelölve"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Videohívás indítása"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Törlés"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Kihagyás"</string>
+</resources>
diff --git a/res-common/values-hy-rAM-sw600dp/strings.xml b/res-common/values-hy-rAM-sw600dp/strings.xml
new file mode 100644
index 0000000..f22b47a
--- /dev/null
+++ b/res-common/values-hy-rAM-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Սարք"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Արտահանելի կոնտակտներ չկան: Եթե պլանշետում ունեք կոնտակտներ, հնարավոր է՝ որոշ տվյալների մատակարարներ չեն թույլատրում պլանշետից կոնտակտների արտահանումը:"</string>
+</resources>
diff --git a/res-common/values-hy-rAM/strings.xml b/res-common/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..b91faf8
--- /dev/null
+++ b/res-common/values-hy-rAM/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Տեսքտը պատճենվեց"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Պատճենել սեղմատախտակին"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Զանգել <xliff:g id="CUSTOM">%s</xliff:g> համարին"</string>
+    <string name="call_home" msgid="1479549630992276827">"Զանգել տուն"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Զանգել շարժականին"</string>
+    <string name="call_work" msgid="8299062439076337075">"Զանգել աշխաատավայր"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Զանգել աշխատավայրի ֆաքսին"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Զանգել տան ֆաքսին"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Զանգել փեյջերին"</string>
+    <string name="call_other" msgid="4472141328347894937">"Զանգել"</string>
+    <string name="call_callback" msgid="687494744634190411">"Հետզանգել"</string>
+    <string name="call_car" msgid="9078083109758282133">"Զանգել մեքենայի հեռախոսահամարին"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Զանգել ընկերության հիմնական համարին"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Զանգել ISDN համարին"</string>
+    <string name="call_main" msgid="4640261071249938558">"Զանգել հիմնական համարին"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Զանգել ֆաքսին"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Զանգել ռադիո համարին"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Զանգել տելեքս համարին"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Զանգել TTY/TDD համարին"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Զանգել աշխատավայրի բջջայինին"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Զանգել աշխատավայրի փեյջերին"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Զանգել <xliff:g id="ASSISTANT">%s</xliff:g>-ին"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Զանգել MMS համարին"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Զանգ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Հաղորդագրել <xliff:g id="CUSTOM">%s</xliff:g>-ին"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Հաղորդագրել տուն"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Հաղորդագրել բջջայինին"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Հաղորդագրել աշխատանքայինին"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Հաղորդագրել աշխատանքային ֆաքսի համարին"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Հաղորդագրել տան ֆաքսի համարին"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Հաղորդագրել փեյջերին"</string>
+    <string name="sms_other" msgid="910895193552957097">"Հաղորդագրել"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Հաղորդագրել հետզանգման համարին"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Հաղորդագրել մեքենայի հեռախոսահամարին"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Հաղորդագրել ընկերության հիմնականին"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Հաղորդագրել ISDN համարին"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Հաղորդագրել հիմնական համարին"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Հաղորդագրել ֆաքսի համարին"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Հաղորդագրել ռադիո համարին"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Հաղորդագրել տելեքս համարին"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Հաղորդագրել TTY/TDD համարին"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Հաղորդագրել աշխատանքային բջջայինին"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Հաղորդագրել աշխատանքային փեյջերին"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Հաղորդագրել <xliff:g id="ASSISTANT">%s</xliff:g>-ին"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Հաղորդագրել MMS համարին"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Հաղորդագրություն)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Կատարել տեսազանգ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Մաքրե՞լ հաճախակի հաղորդակցվածները"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Դուք կմաքրեք հաճախակի հաղորդակցվողների ցանկը Կոնտակտներ և Հեռախոս հավելվածներում, և ձեր էլփոստի ծրագիրը զրոյից կսովորի ձեր հասցեագրումների նախընտրությունները:"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Հաճախակի հաղորդակցումների մաքրում..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Հասանելի"</string>
+    <string name="status_away" msgid="6267905184545881094">"Տեղում չէ"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Զբաղված"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Կոնտակտներ"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Այլ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Գրացուցակ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Աշխատանքային գրացուցակ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Բոլոր կոնտակտները"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Որոնում..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Գտնվել են <xliff:g id="COUNT">%d</xliff:g>-ից ավելի:"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Կոնտակտներ չկան"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Գտնվել է <xliff:g id="COUNT">%d</xliff:g> կոնտակտ</item>
+      <item quantity="other">Գտնվել է <xliff:g id="COUNT">%d</xliff:g> կոնտակտ</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Արագ կապ <xliff:g id="NAME">%1$s</xliff:g>-ի հետ"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Անանուն)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Հաճախակի հաղորդակցվող"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Դիտել կոնտակտը"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Բոլոր հեռախոսահամարներով կոնտատկները"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Աշխատանքային պրոֆիլի կոնտակտներ"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Դիտել թարմացումները"</string>
+    <string name="account_phone" msgid="325867897209266837">"Սարք"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Անուն"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Մականուն"</string>
+    <string name="full_name" msgid="885420216812981202">"Անուն"</string>
+    <string name="name_given" msgid="4153709115654909377">"Անուն"</string>
+    <string name="name_family" msgid="5317387657540738981">"Ազգանուն"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Անվան նախածանց"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Հայրանուն"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Անվան վերջնածանց"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Անունը՝ տառադարձված"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Անունը՝ տառադարձված"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Հայրանունը՝ տառադարձված"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Ազգանունը՝ տառադարձված"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Հեռախոս"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Էլփոստ"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Հասցեն"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Կազմակերպությունը"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Հարաբերություն"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Հատուկ ամսաթիվ"</string>
+    <string name="sms" msgid="8086289395154598654">"Տեքստային հաղորդագրություն"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Հասցե"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Ընկերությունը"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Պաշտոն"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Նշումներ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Վեբ-կայք"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Պիտակներ"</string>
+    <string name="email_home" msgid="2230967805906450693">"Նամակագրել տուն"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Նամակագրել բջջայինին"</string>
+    <string name="email_work" msgid="7065971921227432400">"Նամակագրել աշխատավայր"</string>
+    <string name="email_other" msgid="4601881243553289615">"Էլփոստ"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Նամակագրել <xliff:g id="CUSTOM">%s</xliff:g>-ին"</string>
+    <string name="email" msgid="5624424151176351591">"Էլփոստ"</string>
+    <string name="postal_street" msgid="881349814077356134">"Փողոց"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Բաժանորդային արկղ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Թաղամաս"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Քաղաք"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Նահանգ/շրջան"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Փոստային դասիչ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Երկիր"</string>
+    <string name="map_home" msgid="1221397355014741634">"Դիտել տան հասցեն"</string>
+    <string name="map_work" msgid="9015981646907637207">"Դիտել աշխատավայրի հասցեն"</string>
+    <string name="map_other" msgid="55098598855607997">"Դիտել հասցեն"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Դիտել <xliff:g id="CUSTOM">%s</xliff:g> հասցեն"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Զրույց AIM-ով"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Զրույց Windows Live-ով"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Զրուցել Yahoo-ով"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Զրույց Skype-ով"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Զրույց QQ-ով"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Զրույց Google Talk-ով"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Զրուցել ICQ-ով"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Զրուցել Jabber-ով"</string>
+    <string name="chat" msgid="6297650784873558837">"Զրույց"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ջնջել"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Ընդարձակել կամ սեղմել անունների դաշտերը"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Ընդարձակել կամ կոծկել տառադարձված անվան դաշտերը"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Բոլոր կոնտակտները"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Աստղանշված"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Հարմարեցնել"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Կոնտակտ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Բոլոր այլ կոնտակտները"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Բոլոր կոնտակտները"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Հեռացնել համաժամեցված խումբը"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Ավելացնել համաժամեցված խումբ"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Այլ խմբեր..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"«<xliff:g id="GROUP">%s</xliff:g>»-ի հեռացումը համաժամեցումից կհեռացնի այնտեղից նաև չխմբավորված կոնտակտները:"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Ցուցադրվող ընտրանքները պահվում են..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Կատարված է"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Չեղարկել"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Անհատական դիտակերպ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Պահել ներմուծված կոնտակտներն այստեղ՝"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Ներմուծել SIM քարտից"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Ներմուծել <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> SIM-ից"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Ներմուծել <xliff:g id="SIM_NAME">%1$s</xliff:g> SIM-ից"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Ներմուծել .vcf ֆայլից"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Չեղարկե՞լ <xliff:g id="FILENAME">%s</xliff:g>-ի ներմուծումը:"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Չեղարկե՞լ <xliff:g id="FILENAME">%s</xliff:g>-ի արտահանումը"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Հնարավոր չէ չեղարկել vCard-ի ներմուծումը/արտահանումը"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Անհայտ սխալ:"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Հնարավոր չէ բացել «<xliff:g id="FILE_NAME">%s</xliff:g>»-ը. պատճառը` <xliff:g id="EXACT_REASON">%s</xliff:g>:"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Հնարավոր չէ մեկնարկել արտահանողին. պատճառը` «<xliff:g id="EXACT_REASON">%s</xliff:g>»:"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Արտահանելի կոնտակտներ չկան:"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Դուք անջատել եք անհրաժեշտ թույլտվությունը:"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Արտահանման ընթացքում սխալ է տեղի ունեցել. պատճառը` «<xliff:g id="EXACT_REASON">%s</xliff:g>»:"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Պահանջվող ֆայլի անունը («<xliff:g id="FILENAME">%s</xliff:g>») շատ երկար է:"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O սխալ"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Հիշողությունը բավարար չէ: Հնարավոր է` ֆայլը չափազանց մեծ է:"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Չհաջողվեց վերլուծել vCard-ը անսպասելի պատճառով:"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Ձևաչափը չի աջակցվում:"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Հնարավոր չէ հավաքել vCard ֆայլ(եր)ի մետա տեղեկատվությունը:"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Հնարավոր չէ ներմուծել մեկ կամ ավելի ֆայլեր (%s):"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>-ի արտահանումը ավարտվեց:"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Կոնտակտների արտահանումը ավարտվեց:"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Կոնտակտներն արտահանվեցին: Սեղմեք ծանուցումը՝ դրանք հասանելի դարձնելու համար:"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Հպեք՝ կոնտակտները հասանելի դարձնելու համար:"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>-ի արտահանումը չեղարկվեց:"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Կոնտակտային տվյալների արտահանում"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Կոնտակտային տվյալներն արտահանվում են:"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Հնարավոր չէ ստանալ տվյալների շտեմարանի տեղեկատվությունը:"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Արտահանելի կոնտակտներ չկան: Եթե ​​դուք ձեր հեռախոսի մեջ ունեք կոնտակտներ, հնարավոր է՝ որոշ տվյալների մատակարարներ չեն թույլատրում հեռախոսից կոնտակտների արտահանումը:"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard-ի կազմիչը ճիշտ չի մեկնարկել:"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Հնարավոր չէ արտահանել"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Կոնտակտային տվյալները չեն արտահանվել:\nՊատճառը՝ «<xliff:g id="FAIL_REASON">%s</xliff:g>»"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g>-ի ներմուծում"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Չհաջողվեց ընթերցել vCard-ի տվյալները"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard տվյալների ընթերցումը չեղարկվեց"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g>-ի ներմուծումը ավարտվեց vCard-ից"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>-ի ներմուծումը չեղարկվեց"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g>-ը կներմուծվի շուտով:"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Ֆայլը շուտով կներմուծվի:"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard-ի ներմուծման հայցը մերժվել է: Կրկին փորձեք ավելի ուշ:"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g>-ը կարտահանվի շուտով:"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Ֆայլը շուտով կարտահանվի:"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Կոնտակտները շուտով կարտահանվեն:"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard-ի արտահանման հայցը մերժվեց: Փորձեք կրկին ավելի ուշ:"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"կոնտակտ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(եր)-ի քեշավորում ժամանակավոր պաոց: Փաստացի ներմուծումը կսկսվի շուտով:"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Չհաջողվեց ներմուծել vCard-ը:"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC-ով ստացված կոնտակտ"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Արտահանե՞լ կոնտակտները"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Քեշավորում"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>-ի ներմուծում"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Արտահանել .vcf ֆայլ"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Դասավորել ըստ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Անունի"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Ազգանունի"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Անվան ձևաչափ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Սկզբում՝ անունը"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Սկզբում՝ ազգանունը"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Հաշիվներ"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Կանխադրված հաշիվ նոր կոնտակտների համար"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Համաժամացնել կոնտակտի մետատվյալները [ՆԵՐՔԻՆ ՓՈՐՁԱՐԿՄԱՆ ՆՊԱՏԱԿՈՎ]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Համաժամացնել կոնտակտի մետատվյալները"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Իմ մասին"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Կարգավորել պրոֆիլը"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Կոնտակտների մասին"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Կարգավորումներ"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Փոխանցել տեսանելի կոնտակտները"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Չհաջողվեց համօգտագործել տեսանելի կոնտակտները:"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Ուղարկել կոնտակտների ընտրանին"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Տրամադրել բոլոր կոնտակտները"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Չհաջողվեց տրամադրել կոնտակտները:"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Կոնտակտների ներմուծում/արտահանում"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Ներմուծել կոնտակտներ"</string>
+    <string name="share_error" msgid="665756457151793108">"Հնարավոր չէ տարածել կոնտակտը:"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Հասանելի կոնտակտներ չկան։"</string>
+    <string name="menu_search" msgid="7464453023659824700">"Որոնել"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Ցուցադրվող կոնտկատներ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Ցուցադրվող կոնտակտներ"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Անհատական դիտակերպի սահմանում"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Պահել"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Որոնեք կոնտակտներ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Ընտրյալներ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Կոնտակտներ չկան:"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Մաքրել հաճախակիները"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Ընտրեք SIM քարտը"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Հաշիվների կառավարում"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Ներմուծել/արտահանել"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Արգելափակված համարներ"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g>-ի միջոցով"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>` <xliff:g id="SOURCE">%2$s</xliff:g>-ի միջոցով"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"դադարեցնել որոնումը"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Մաքրել որոնման դաշտը"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Կոնտակտի ցուցադրման ընտրանքները"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Հաշիվ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Միշտ օգտագործել սա՝ զանգերի համար"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Զանգել հետևյալով"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Գրառումով զանգ"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Մուտքագրեք նշում՝ զանգի հետ ուղարկելու համար ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ՈՒՂԱՐԿԵԼ ԵՎ ԶԱՆԳԵԼ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>: <xliff:g id="COUNT_3">%2$d</xliff:g> չընթերցված տարր: </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>: <xliff:g id="COUNT_3">%2$d</xliff:g> չընթերցված տարր: </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Թողարկման տարբերակը"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Բաց կոդով ծրագրերի արտոնագրեր"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Բաց կոդով ծրագրային ապահովման արտոնագրերի մանրամասներ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Գաղտնիության քաղաքականություն"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Օգտագործման պայմաններ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Բաց կոդով ծրագրերի արտոնագրեր"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Չհաջողվեց բացել url-ը:"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> հաշիվը նշվել է"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> հաշիվը չի նշվել"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Կատարել տեսազանգ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Ջնջել"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Բազմակետ"</string>
+</resources>
diff --git a/res-common/values-in-sw600dp/strings.xml b/res-common/values-in-sw600dp/strings.xml
new file mode 100644
index 0000000..fd37372
--- /dev/null
+++ b/res-common/values-in-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Perangkat"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Tidak ada kontak yang dapat diekspor. Jika Anda menyimpan kontak di tablet, beberapa penyedia data mungkin tidak mengizinkan kontak untuk diekspor dari tablet."</string>
+</resources>
diff --git a/res-common/values-in/strings.xml b/res-common/values-in/strings.xml
new file mode 100644
index 0000000..f1c8f85
--- /dev/null
+++ b/res-common/values-in/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teks disalin"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Salin ke papan klip"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Hubungi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Telepon rumah"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Hubungi nomor seluler"</string>
+    <string name="call_work" msgid="8299062439076337075">"Hubungi kantor"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Hubungi faks kantor"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Hubungi faks rumah"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Hubungi pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Hubungi"</string>
+    <string name="call_callback" msgid="687494744634190411">"Hubungi panggilan balik"</string>
+    <string name="call_car" msgid="9078083109758282133">"Hubungi nomor telepon mobil"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Hubungi nomor telepon utama perusahaan"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Hubungi ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Hubungi nomor utama"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Hubungi faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Hubungi radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Hubungi teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Hubungi TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Hubungi nomor seluler kantor"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Hubungi pager kantor"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Hubungi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Hubungi MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Telepon)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS rumah"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS nomor seluler"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS kantor"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS faks kantor"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS faks rumah"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Teks"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS panggilan balik"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS mobil"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS nomor utama perusahaan"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS nomor utama"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS nomor seluler kantor"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS pager kantor"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Lakukan video call"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Hapus yang sering dihubungi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Anda akan menghapus daftar yang sering dihubungi pada aplikasi Kontak dan Ponsel, serta memaksa aplikasi email untuk mempelajari preferensi penanganan dari awal."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Menghapus yang sering dihubungi..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Ada"</string>
+    <string name="status_away" msgid="6267905184545881094">"Keluar"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Sibuk"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontak"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Lainnya"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktori"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Direktori kerja"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Semua kontak"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Menelusuri…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Ditemukan lebih dari <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Tidak ada kontak"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ditemukan</item>
+      <item quantity="one">1 ditemukan</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Kontak cepat untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Tanpa nama)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Paling sering dihubungi"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Lihat kontak"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Semua kontak dengan nomor telepon"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontak profil kerja"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Lihat pembaruan"</string>
+    <string name="account_phone" msgid="325867897209266837">"Perangkat"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nama"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nama julukan"</string>
+    <string name="full_name" msgid="885420216812981202">"Nama"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nama depan"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nama belakang"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Awalan nama"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Nama tengah"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Akhiran nama"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nama fonetik"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nama depan fonetik"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Nama tengah fonetik"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Nama belakang fonetik"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telepon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Alamat"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisasi"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Hubungan"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Tanggal khusus"</string>
+    <string name="sms" msgid="8086289395154598654">"Pesan teks"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Alamat"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Perusahaan"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Jabatan"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Catatan"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Situs web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Label"</string>
+    <string name="email_home" msgid="2230967805906450693">"Email ke rumah"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Email ke seluler"</string>
+    <string name="email_work" msgid="7065971921227432400">"Email ke kantor"</string>
+    <string name="email_other" msgid="4601881243553289615">"Email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Jalan"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Kotak pos"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Lingkungan"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Kota"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Negara Bagian"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Kode pos"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Negara"</string>
+    <string name="map_home" msgid="1221397355014741634">"Tampilkan alamat rumah"</string>
+    <string name="map_work" msgid="9015981646907637207">"Tampilkan alamat kantor"</string>
+    <string name="map_other" msgid="55098598855607997">"Lihat alamat"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Tampilkan alamat <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Ngobrol menggunakan AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Ngobrol menggunakan Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Ngobrol menggunakan Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Ngobrol menggunakan Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Ngobrol menggunakan QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Ngobrol menggunakan Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Ngobrol menggunakan ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Ngobrol menggunakan Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Ngobrol"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"hapus"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Luaskan atau ciutkan bidang nama"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Luaskan atau ciutkan bidang nama fonetik"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Semua kontak"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Yang berbintang"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Sesuaikan"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontak"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Semua kontak lainnya"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Semua kontak"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Hapus grup sinkronisasi"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Tambahkan grup sinkronisasi"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Grup lainnya..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Menghapus \"<xliff:g id="GROUP">%s</xliff:g>\" dari sinkronisasi juga akan menghapus setiap kontak di luar grup dari sinkronisasi."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Menyimpan opsi tampilan..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Selesai"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Batal"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Tampilan khusus"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Simpan kontak yang diimpor ke:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Impor dari kartu SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Impor dari SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Impor dari SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Impor dari file .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Batalkan impor <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Batalkan ekspor <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Tidak dapat membatalkan impor/ekspor vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Kesalahan tidak dikenal."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Tidak dapat membuka \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Tidak dapat memulai pengekspor: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Tidak ada kontak yang dapat diekspor."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Anda telah menonaktifkan izin yang diperlukan."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Terjadi kesalahan saat ekspor: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Nama file yang diperlukan terlalu panjang (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Kesalahan I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Memori tidak cukup. File mungkin terlalu besar."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Tidak dapat mengurai vCard karena alasan yang tak terduga."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format tidak didukung."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Tidak dapat mengumpulkan informasi meta dari file vCard yang diberikan."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Satu file atau lebih tidak dapat diimpor (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Selesai mengekspor <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Selesai mengekspor kontak."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Selesai mengekspor kontak, klik notifikasi untuk membagikan kontak."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Ketuk untuk membagikan kontak."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Batal mengekspor <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Mengekspor data kontak"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Data kontak sedang diekspor."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Tidak dapat memperoleh informasi basis data."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Tidak ada kontak yang dapat diekspor. Jika Anda menyimpan kontak pada ponsel, beberapa penyedia data mungkin tidak mengizinkan kontak diekspor dari ponsel."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Penyusun vCard tidak memulai dengan semestinya."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Tak dapat mengekspor"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Data kontak tidak diekspor.\nAlasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Mengimpor <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Tidak dapat membaca data vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Batal membaca data vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Selesai mengimpor vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Batal mengimpor <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> akan segera diimpor."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"File akan segera diimpor."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Permintaan impor vCard ditolak. Coba lagi nanti."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> akan segera diekspor."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"File akan segera diekspor."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontak akan segera diekspor."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Permintaan ekspor vCard ditolak. Coba lagi nanti."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontak"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Menyimpan vCard ke dalam cache penyimpanan lokal sementara. Impor yang sebenarnya akan segera dimulai."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Tidak dapat mengimpor vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontak diterima lewat NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Ekspor kontak?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Menyimpan ke cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Mengimpor <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Ekspor ke file .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Urutkan menurut"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nama depan"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nama belakang"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format nama"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Nama depan terlebih dulu"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Nama belakang terlebih dulu"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Akun"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Akun default untuk kontak baru"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinkronkan metadata kontak [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinkronkan metadata kontak"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Info saya"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Siapkan profil Anda"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Tentang Kontak"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Setelan"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Bagikan kontak yang terlihat"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Gagal membagikan kontak yang terlihat."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Bagikan kontak favorit"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Bagikan semua kontak"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Gagal membagikan kontak."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Impor/ekspor kontak"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Impor kontak"</string>
+    <string name="share_error" msgid="665756457151793108">"Kontak ini tidak dapat dibagi."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Tidak ada kontak untuk dibagikan."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Telusuri"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontak untuk ditampilkan"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontak untuk ditampilkan"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Tentukan tampilan khusus"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Simpan"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Telusuri kontak"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favorit"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Tidak ada kontak."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Hapus yang sering"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Pilih kartu SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Kelola akun"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Impor/ekspor"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Nomor yang diblokir"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"melalui <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> melalui <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"menghentikan penelusuran"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Hapus penelusuran"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opsi tampilan kontak"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Akun"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Selalu gunakan ini untuk telepon"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Telepon dengan"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Telepon dengan catatan"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Ketik catatan untuk dikirim dengan panggilan telepon ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"KIRIM &amp; PANGGILAN"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> item belum dibaca. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> item belum dibaca. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versi build"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Lisensi sumber terbuka"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detail lisensi untuk perangkat lunak sumber terbuka"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Kebijakan privasi"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Persyaratan layanan"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Lisensi sumber terbuka"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Gagal membuka url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> diperiksa"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> tidak diperiksa"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Lakukan video call"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Hapus"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Elipsis"</string>
+</resources>
diff --git a/res-common/values-is-rIS-sw600dp/strings.xml b/res-common/values-is-rIS-sw600dp/strings.xml
new file mode 100644
index 0000000..7db022f
--- /dev/null
+++ b/res-common/values-is-rIS-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Tæki"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Engir tengiliðir til útflutnings. Ef þú ert með tengiliði í spjaldtölvunni getur verið að vissar gagnaveitur leyfi ekki útflutning tengiliða úr spjaldtölvunni."</string>
+</resources>
diff --git a/res-common/values-is-rIS/strings.xml b/res-common/values-is-rIS/strings.xml
new file mode 100644
index 0000000..8ddae57
--- /dev/null
+++ b/res-common/values-is-rIS/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texti afritaður"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Afrita á klippiborð"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Hringja í <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Hringja heim"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Hringa í farsíma"</string>
+    <string name="call_work" msgid="8299062439076337075">"Hringja í vinnusíma"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Hringja í faxnúmer vinnu"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Hringja í faxnúmer heima"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Hringja í símboða"</string>
+    <string name="call_other" msgid="4472141328347894937">"Hringja"</string>
+    <string name="call_callback" msgid="687494744634190411">"Hringja svarhringingu"</string>
+    <string name="call_car" msgid="9078083109758282133">"Hringja í bílasíma"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Hringja í aðalsíma fyrirtækis"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Hringja í ISDN-númer"</string>
+    <string name="call_main" msgid="4640261071249938558">"Hringja í aðalnúmer"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Hringja í faxnúmer"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Hringja í talstöð"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Hringja í telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Hringja í fjarrita"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Hringja í vinnufarsíma"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Hringja í vinnusímboða"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Hringja í <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Hringja í MMS-númer"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (hringja)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Senda textaskilaboð í <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Senda textaskilaboð heim"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Senda textaskilaboð í farsíma"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Senda textaskilaboð í vinnusíma"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Senda textaskilaboð í faxnúmer vinnu"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Senda textaskilaboð í faxnúmer heima"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Senda textaskilaboð í símboða"</string>
+    <string name="sms_other" msgid="910895193552957097">"Senda textaskilaboð"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Senda textaskilaboð í svarhringingarnúmer"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Senda textaskilaboð í bílasíma"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Senda textaskilaboð í aðalnúmer fyrirtækis"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Senda textaskilaboð í ISDN-númer"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Senda textaskilaboð í aðalnúmer"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Senda textaskilaboð í faxnúmer"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Senda textaskilaboð í talstöð"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Senda textaskilaboð í telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Senda textaskilaboð til fjarrita"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Senda textaskilaboð í vinnufarsíma"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Senda textaskilaboð í vinnusímboða"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Senda textaskilaboð til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Senda textaskilaboð í MMS-númer"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (senda SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Hringja myndsímtal"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Hreinsa mest notaða tengiliði?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Þetta hreinsar tengiliðina sem þú hefur mest samskipti við úr forritunum Tengiliðir og Sími og þvingar tölvupóstforrit til að læra upp á nýtt hvernig þú notar netföng."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Hreinsar mest notaða tengiliði…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Laus"</string>
+    <string name="status_away" msgid="6267905184545881094">"Í burtu"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Upptekin(n)"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Tengiliðir"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Aðrir"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Skrá"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Vinnuskrá"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Allir tengiliðir"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Leitar…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Yfir <xliff:g id="COUNT">%d</xliff:g> fundust."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Engir tengiliðir"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> fannst</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> fundust</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Flýtitengiliður fyrir <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nafn vantar)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Oft haft samband við"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Skoða tengilið"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Allir tengiliðir með símanúmer"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Tengiliðir í vinnusniði"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Skoða uppfærslur"</string>
+    <string name="account_phone" msgid="325867897209266837">"Tæki"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nafn"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Gælunafn"</string>
+    <string name="full_name" msgid="885420216812981202">"Nafn"</string>
+    <string name="name_given" msgid="4153709115654909377">"Fornafn"</string>
+    <string name="name_family" msgid="5317387657540738981">"Eftirnafn"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Forskeyti nafns"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Millinafn"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Viðskeyti nafns"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Hljóðrétt nafn"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Hljóðritað fornafn"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Hljóðrétt millinafn"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Hljóðritað eftirnafn"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Sími"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Tölvupóstur"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Heimilisfang"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Spjall"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Fyrirtæki"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Tengsl"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Sérstök dagsetning"</string>
+    <string name="sms" msgid="8086289395154598654">"Senda textaskilaboð"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Heimilisfang"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Fyrirtæki"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titill"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Athugasemdir"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Vefsvæði"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Flokkar"</string>
+    <string name="email_home" msgid="2230967805906450693">"Senda tölvupóst heim"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Senda tölvupóst í fartæki"</string>
+    <string name="email_work" msgid="7065971921227432400">"Senda tölvupóst í vinnu"</string>
+    <string name="email_other" msgid="4601881243553289615">"Senda tölvupóst"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Senda tölvupóst til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Senda tölvupóst"</string>
+    <string name="postal_street" msgid="881349814077356134">"Gata"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Pósthólf"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Hverfi"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Borg/bær"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Ríki"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Póstnúmer"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Skoða heimilisfang"</string>
+    <string name="map_work" msgid="9015981646907637207">"Skoða póstfang vinnu"</string>
+    <string name="map_other" msgid="55098598855607997">"Skoða póstfang"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Skoða heimilisfang <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Spjalla með AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Spjalla með Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Spjalla með Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Spjalla með Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Spjalla með QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Spjalla með Google spjalli"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Spjalla með ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Spjalla með Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Spjalla"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"eyða"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Birta fleiri eða færri nafnareiti"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Birta fleiri eða færri nafnareiti"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Allir tengiliðir"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Stjörnumerktir"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Sérsníða"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Tengiliður"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Allir aðrir tengiliðir"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Allir tengiliðir"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Fjarlægja samstillingarhóp"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Bæta við samstillingarhóp"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Fleiri hópar…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Ef hópurinn „<xliff:g id="GROUP">%s</xliff:g>“ er fjarlægður úr samstillingu verður samstillingu einnig hætt á öllum tengiliðum sem ekki eru í hóp."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Vistar birtingarvalkosti…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Lokið"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Hætta við"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Sérsniðið yfirlit"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Vista innflutta tengiliði á:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Flytja inn af SIM-korti"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Flytja inn af SIM-korti <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Flytja inn af SIM-korti <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Flytja inn úr .vcf-skrá"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Hætta við innflutning á <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Hætta við útflutning á <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Ekki tókst að hætta við flutning vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Óþekkt villa."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Ekki tókst að opna „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Ekki tókst að ræsa útflutningsverkfærið: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Engir tengiliðir sem flytja má út."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Þú hefur gert nauðsynlegt leyfi óvirkt."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Villa kom upp við útflutninginn: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Skráarheitið er of langt („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Inntaks-/úttaksvilla"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Ekki nægt minni. Skráin kann að vera of stór."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Ekki tókst að þátta vCard-skrána af óþekktri ástæðu."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Ekki er stuðningur við sniðið."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Ekki tókst að safna lýsigögnum fyrir uppgefna(r) vCard-skrá(r)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Ekki tókst að flytja inn eina eða fleiri skrár (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Útflutningi á <xliff:g id="FILENAME">%s</xliff:g> lokið."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Útflutningi tengiliða lokið."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Útflutningi tengiliða lokið, smelltu á tilkynninguna til að deila tengiliðum."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Ýttu til að deila tengiliðum."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Hætt við útflutning á <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Flytur út tengiliðagögn"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Verið er að flytja út tengiliðagögnin þín."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Ekki tókst að sækja upplýsingar úr gagnagrunni."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Engir tengiliðir til útflutnings. Ef þú ert með tengiliði í símanum getur verið að vissar gagnaveitur leyfi ekki útflutning tengiliða úr símanum."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Ræsing vCard-skrifviðmótsins tókst ekki."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Flutningur mistókst"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Tengiliðagögn voru ekki flutt út.\nÁstæða: „<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Flytur inn <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Ekki tókst að lesa gögn úr vCard-skrá"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Hætt við lestur vCard-gagna"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Innflutningi lokið á vCard-skránni <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Hætt við innflutning á <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> verður flutt inn innan skamms."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Skráin verður flutt inn innan skamms."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Beiðni um innflutning vCard-skrár hafnað. Reyndu aftur síðar."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> verður flutt út innan skamms."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Skráin verður flutt út innan skamms."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Tengiliðir verður fluttir út eftir smástund."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Beiðni um útflutning vCard-skrár hafnað. Reyndu aftur síðar."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"tengiliður"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Setur vCard í skyndiminni í staðbundinni geymslu. Raunverulegur innflutningur hefst innan skamms."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Ekki tókst að flytja vCard-skrána inn."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Tengiliður mótt. um NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Flytja út tengiliði?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Setur í skyndiminni"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Flytur inn <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Flytja út í .vcf-skrá"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Raða eftir"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Fornafn"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Eftirnafn"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Nafnasnið"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Fornafn fyrst"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Eftirnafn fyrst"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Reikningar"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Sjálfgefinn reikningur fyrir nýja tengiliði"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Samstilla lýsigögn tengiliða [INNANHÚSSÚTGÁFA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Samstilla lýsigögn tengiliða"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mínar upplýsingar"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Uppsetning sniðs"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Um tengiliði"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Stillingar"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Deila sýnilegum tengiliðum"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Mistókst að deila sýnilegum tengiliðum."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Deila eftirlætistengiliðum"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Deila öllum tengiliðum"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Ekki tókst að deila tengiliðum."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Tengiliðir fluttir inn/út"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Flytja tengiliði inn"</string>
+    <string name="share_error" msgid="665756457151793108">"Ekki er hægt að deila þessum tengilið."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Engir tengiliðir til að deila."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Leita"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Tengiliðir til að birta"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Tengiliðir til að birta"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Skilgreina sérsniðið yfirlit"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Vista"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Leita í tengiliðum"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Uppáhald"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Engir tengiliðir."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Hreinsa algenga tengiliði"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Veldu SIM-kort"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Stjórna reikningum"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Innflutningur og útflutningur"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Númer á bannlista"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"í gegnum <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> í gegnum <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"hætta leit"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Hreinsa leit"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Birtingarkostir fyrir tengiliði"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Reikningur"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Nota þetta alltaf fyrir símtöl"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Hringja með"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Símtal með texta"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Sláðu inn texta til að senda með símtalinu..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SENDA OG HRINGJA"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ólesið atriði. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ólesin atriði. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Útgáfa smíðar"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Leyfi opins kóða"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Leyfisupplýsingar fyrir hugbúnað með opnum kóða"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Persónuverndarstefna"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Þjónustuskilmálar"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Leyfi opins kóða"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Ekki tókst að opna slóðina."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Merkt við <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Ekki merkt við <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Hringja myndsímtal"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Eyða"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Þrípunktur"</string>
+</resources>
diff --git a/res-common/values-it-sw600dp/strings.xml b/res-common/values-it-sw600dp/strings.xml
new file mode 100644
index 0000000..54115c7
--- /dev/null
+++ b/res-common/values-it-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Non sono presenti contatti esportabili. Se hai contatti sul tablet, è possibile che alcuni fornitori di dati non consentano l\'esportazione dei contatti dal tablet."</string>
+</resources>
diff --git a/res-common/values-it/strings.xml b/res-common/values-it/strings.xml
new file mode 100644
index 0000000..e160526
--- /dev/null
+++ b/res-common/values-it/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Testo copiato"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copia negli appunti"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Chiama <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Chiama casa"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Chiama cellulare"</string>
+    <string name="call_work" msgid="8299062439076337075">"Chiama n. lavoro"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Chiama fax lavoro"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Chiama fax casa"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Chiama cercapersone"</string>
+    <string name="call_other" msgid="4472141328347894937">"Chiama"</string>
+    <string name="call_callback" msgid="687494744634190411">"Chiama n. di richiamata"</string>
+    <string name="call_car" msgid="9078083109758282133">"Chiama auto"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Chiama azienda (principale)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Chiama ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Chiama principale"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Chiama fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Chiama radiotelefono"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Chiama telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Chiama TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Chiama n. cellulare lavoro"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Chiama cercapersone lavoro"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Chiama <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Chiama MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Chiama)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS a casa"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS a cellulare"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS a lavoro"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS a fax lavoro"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS a fax casa"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS a cercapersone"</string>
+    <string name="sms_other" msgid="910895193552957097">"Invia SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS a n. di richiamata"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS a auto"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS a n. azienda principale"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS a ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS a principale"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS a fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS a n. radiotelefono"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS a telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS a TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS a cellulare lavoro"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS a cercapersone lavoro"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS a MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Invia SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Fai una videochiamata"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Cancellare contattati di frequente?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Verrà cancellato l\'elenco dei contatti frequenti nelle app Contatti e Telefono e le app email dovranno apprendere da zero le tue preferenze di comunicazione."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Cancellazione contattati di frequente…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponibile"</string>
+    <string name="status_away" msgid="6267905184545881094">"Assente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Occupato"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contatti"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Altro"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directory"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directory di lavoro"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Tutti i contatti"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Ricerca…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Più di <xliff:g id="COUNT">%d</xliff:g> trovati."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nessun contatto"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> trovati</item>
+      <item quantity="one">1 trovato</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Accesso rapido ai contatti per <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nessun nome)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contattati spesso"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Visualizza contatto"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Tutti i contatti con numeri di telefono"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contatti del profilo di lavoro"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Visualizza aggiornamenti"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nome"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nickname"</string>
+    <string name="full_name" msgid="885420216812981202">"Nome"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nome"</string>
+    <string name="name_family" msgid="5317387657540738981">"Cognome"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefisso nome"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Secondo nome"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Suffisso nome"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nome fonetico"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nome fonetico"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Secondo nome fonetico"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Cognome fonetico"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefono"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Indirizzo"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizzazione"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relazione"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data speciale"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Indirizzo"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Società"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Ruolo"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Note"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Sito web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etichette"</string>
+    <string name="email_home" msgid="2230967805906450693">"Invia email a indirizzo casa"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Invia email a indirizzo cellulare"</string>
+    <string name="email_work" msgid="7065971921227432400">"Invia email a indirizzo lavoro"</string>
+    <string name="email_other" msgid="4601881243553289615">"Invia email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Invia email a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Via"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Casella postale"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Quartiere"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Città"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Provincia"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Codice postale"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Paese"</string>
+    <string name="map_home" msgid="1221397355014741634">"Visualizza indirizzo casa"</string>
+    <string name="map_work" msgid="9015981646907637207">"Visualizza indirizzo lavoro"</string>
+    <string name="map_other" msgid="55098598855607997">"Visualizza indirizzo"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Visualizza indirizzo <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatta su AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatta su Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatta su Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatta su Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatta su QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatta su Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatta su ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatta su Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatta"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"elimina"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Espandi o comprimi i campi dei nomi"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Espandi o comprimi i campi dei nomi fonetici"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Tutti i contatti"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Speciali"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizza"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contatto"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Tutti gli altri contatti"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Tutti i contatti"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Rimuovi gruppo sincronizzazione"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Aggiungi gruppo sincronizzazione"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Altri gruppi..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Se rimuovi \"<xliff:g id="GROUP">%s</xliff:g>\" dalla sincronizzazione, verranno rimossi anche gli eventuali contatti separati."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Salvataggio opzioni di visualizzazione..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Fine"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Annulla"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Visualizzazione personalizzata"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Salva i contatti importati in:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importa da scheda SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importa da SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importa da SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importa da file .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Annullare l\'importazione di <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Annullare l\'esportazione di <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Annull. import./esport. vCard non riuscito"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Errore sconosciuto."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Apertura di \"<xliff:g id="FILE_NAME">%s</xliff:g>\" non riuscita: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Avvio dell\'utilità di esportazione non riuscito: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nessun contatto esportabile."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Hai disattivato un\'autorizzazione obbligatoria."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Si è verificato un errore durante l\'esportazione: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Il nome file richiesto è troppo lungo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Errore I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Memoria insufficiente. Il file potrebbe essere troppo grande."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Analisi vCard non riuscita per motivo imprevisto."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Il formato non è supportato."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Raccolta dei metadati dei file vCard specificati non riuscita."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Importazione di uno o più file non riuscita (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Esportazione di <xliff:g id="FILENAME">%s</xliff:g> terminata."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Esportazione dei contatti terminata."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Esportazione dei contatti terminata. Fai clic sulla notifica per condividere i contatti."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tocca per condividere i contatti."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Esportazione di <xliff:g id="FILENAME">%s</xliff:g> annullata."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Esportazione dati contatti"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Esportazione dei dati dei contatti in corso."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Recupero informazioni database non riuscito."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Non sono presenti contatti esportabili. Se hai contatti sul telefono, è possibile che alcuni fornitori di dati non consentano l\'esportazione dei contatti dal telefono."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Il compositore di vCard non si è avviato correttamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Impossibile esportare"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"I dati dei contatti non sono stati esportati.\nMotivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importazione di <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Lettura dati vCard non riuscita"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lettura dati vCard annullata"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importazione vCard <xliff:g id="FILENAME">%s</xliff:g> terminata"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importazione di <xliff:g id="FILENAME">%s</xliff:g> annullata"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"La vCard <xliff:g id="FILENAME">%s</xliff:g> verrà importata a breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Il file sarà importato a breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Richiesta importazione vCard rifiutata. Riprova più tardi."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"La vCard <xliff:g id="FILENAME">%s</xliff:g> verrà esportata a breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Il file verrà esportato a breve."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"I contatti verranno esportati a breve."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Richiesta esportazione vCard rifiutata. Riprova più tardi."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contatto"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Memorizzazione delle vCard nella cache di archiviazione temporanea locale. L\'importazione reale inizierà a breve."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Importazione vCard non riuscita."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contatto via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Esportare contatti?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Memorizzazione nella cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importazione di <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Esporta in file .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordina per"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nome"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Cognome"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato nome"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Prima il nome"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Prima il cognome"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Account"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Account predefinito per i nuovi contatti"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizza i metadati dei contatti [VERSIONE SPERIMENTALE]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizza i metadati dei contatti"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"I miei dati"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configura il tuo profilo"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Informazioni su Contatti"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Impostazioni"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Condividi contatti visibili"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Impossibile condividere i contatti visibili."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Condividi i contatti preferiti"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Condividi tutti i contatti"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Impossibile condividere i contatti."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importa/esporta contatti"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importa contatti"</string>
+    <string name="share_error" msgid="665756457151793108">"Questo contatto non può essere condiviso."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nessun contatto da condividere."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Cerca"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contatti da visualizzare"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contatti da visualizzare"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definisci visualizzazione personalizzata"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Salva"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Cerca contatti"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Preferiti"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nessun contatto."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Cancella frequenti"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Seleziona scheda SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gestisci account"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importa/esporta"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Numeri bloccati"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"tramite <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> tramite <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"interrompi ricerca"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Cancella ricerca"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opzioni di visualizzazione dei contatti"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Account"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Usa sempre questa per chiamare"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Chiama con"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Chiama e invia una nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Digita una nota da inviare con la chiamata..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"INVIA E CHIAMA"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> elementi da leggere. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> elemento da leggere. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versione build"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licenze open source"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Dettagli delle licenze per il software open source"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Norme sulla privacy"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Termini di servizio"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licenze open source"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Impossibile aprire l\'URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> contrassegnato"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> non contrassegnato"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Effettua videochiamata"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Elimina"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Puntini di sospensione"</string>
+</resources>
diff --git a/res-common/values-iw-sw600dp/strings.xml b/res-common/values-iw-sw600dp/strings.xml
new file mode 100644
index 0000000..6f6cfd4
--- /dev/null
+++ b/res-common/values-iw-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"מכשיר"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"אין אנשי קשר הניתנים לייצוא. אם מוגדרים בטאבלט שלך אנשי קשר, ייתכן שספקי נתונים מסוימים אינם מאפשרים ייצוא של אנשי קשר מהטאבלט."</string>
+</resources>
diff --git a/res-common/values-iw/strings.xml b/res-common/values-iw/strings.xml
new file mode 100644
index 0000000..5ec86f1
--- /dev/null
+++ b/res-common/values-iw/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"טקסט הועתק"</string>
+    <string name="copy_text" msgid="3424081789297978355">"העתק ללוח"</string>
+    <string name="call_custom" msgid="2786306789889210756">"התקשר אל <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"התקשר לבית"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"התקשר לנייד"</string>
+    <string name="call_work" msgid="8299062439076337075">"התקשר לעבודה"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"התקשר לפקס בעבודה"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"התקשר לפקס בבית"</string>
+    <string name="call_pager" msgid="3038080882899955112">"התקשר לזימונית"</string>
+    <string name="call_other" msgid="4472141328347894937">"התקשר"</string>
+    <string name="call_callback" msgid="687494744634190411">"התקשר למספר להתקשרות חזרה"</string>
+    <string name="call_car" msgid="9078083109758282133">"התקשר למספר במכונית"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"התקשר למספר הראשי של החברה"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"‏התקשר ל-ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"התקשר למספר הראשי"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"התקשר לפקס"</string>
+    <string name="call_radio" msgid="9055749313292712021">"התקשר לרדיו"</string>
+    <string name="call_telex" msgid="2909886619224843563">"התקשר לטלקס"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"‏התקשר ל-TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"התקשר לנייד של העבודה"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"התקשר לזימונית של העבודה"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"התקשר אל <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"‏התקשר ל-MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (שיחה)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"שלח הודעת טקסט אל <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"שלח הודעת טקסט לבית"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"שלח הודעת טקסט לנייד"</string>
+    <string name="sms_work" msgid="3910570578912367742">"שלח הודעת טקסט לעבודה"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"שלח הודעת טקסט לפקס בעבודה"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"שלח הודעת טקסט לפקס בבית"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"שלח הודעת טקסט לזימונית"</string>
+    <string name="sms_other" msgid="910895193552957097">"שלח הודעת טקסט"</string>
+    <string name="sms_callback" msgid="728414485478941361">"שלח הודעת טקסט למספר להתקשרות חזרה"</string>
+    <string name="sms_car" msgid="8543669230270954512">"שלח הודעת טקסט למספר במכונית"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"שלח הודעת טקסט למספר הראשי של החברה"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"‏שלח הודעת טקסט ל-ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"שלח הודעת טקסט למספר הראשי"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"שלח הודעת טקסט לפקס"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"שלח הודעת טקסט לרדיו"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"שלח הודעת טקסט לטלקס"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"‏שלח הודעת טקסט ל-TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"שלח הודעת טקסט לנייד של עבודה"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"שלח הודעת טקסט לזימונית של עבודה"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"שלח הודעת טקסט אל <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"‏שלח הודעת טקסט ל-MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (הודעה)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"בצע שיחת וידאו"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"האם למחוק אנשי קשר קבועים?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"הפעולה הזו תמחק מהאפליקציות \'אנשים\' ו\'טלפון\' את רשימת אנשי הקשר שאיתם אתה יוצר קשר בתדירות גבוהה, ויהיה עליך ללמד מחדש את אפליקציות האימייל את הכתובות המועדפות עליך."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"מוחק אנשי קשר קבועים…"</string>
+    <string name="status_available" msgid="4832569677396634846">"זמין"</string>
+    <string name="status_away" msgid="6267905184545881094">"לא נמצא"</string>
+    <string name="status_busy" msgid="7111912905211403545">"לא פנוי"</string>
+    <string name="contactsList" msgid="7140022347217602605">"אנשי קשר"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"אחר"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ספריה"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ספריית עבודה"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"כל אנשי הקשר"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"מחפש…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"נמצאו יותר מ-<xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"אין אנשי קשר"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="two">נמצאו <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="many">נמצאו <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">נמצאו <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">נמצא אחד</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"קשר מהיר עבור <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ללא שם)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"בקשר לעתים קרובות"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"הצג איש קשר"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"כל אנשי הקשר עם מספרי טלפון"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"אנשי הקשר של פרופיל העבודה"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"הצג עדכונים"</string>
+    <string name="account_phone" msgid="325867897209266837">"מכשיר"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"שם"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"כינוי"</string>
+    <string name="full_name" msgid="885420216812981202">"שם"</string>
+    <string name="name_given" msgid="4153709115654909377">"שם פרטי"</string>
+    <string name="name_family" msgid="5317387657540738981">"שם משפחה"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"תחילית שם"</string>
+    <string name="name_middle" msgid="3951610314424632183">"שם אמצעי"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"סיומת שם"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"שם פונטי"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"שם פרטי פונטי"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"שם אמצעי פונטי"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"שם משפחה פונטי"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"טלפון"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"אימייל"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"כתובת"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"הודעות מיידיות"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ארגון"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"קשר"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"תאריך מיוחד"</string>
+    <string name="sms" msgid="8086289395154598654">"הודעת טקסט"</string>
+    <string name="postal_address" msgid="7692926530081579786">"כתובת"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"חברה"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"תפקיד"</string>
+    <string name="label_notes" msgid="3997277594846722699">"הערות"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"אתר"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"תוויות"</string>
+    <string name="email_home" msgid="2230967805906450693">"שלח אימייל לבית"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"שלח אימייל לנייד"</string>
+    <string name="email_work" msgid="7065971921227432400">"שלח אימייל לעבודה"</string>
+    <string name="email_other" msgid="4601881243553289615">"שלח אימייל"</string>
+    <string name="email_custom" msgid="5777583741581538870">"שלח אימייל אל <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"שלח אימייל"</string>
+    <string name="postal_street" msgid="881349814077356134">"רחוב"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"תא דואר"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"שכונה"</string>
+    <string name="postal_city" msgid="3173008531169519309">"עיר"</string>
+    <string name="postal_region" msgid="1695206048198921115">"מדינה"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"מיקוד"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ארץ"</string>
+    <string name="map_home" msgid="1221397355014741634">"הצג כתובת בית"</string>
+    <string name="map_work" msgid="9015981646907637207">"הצג כתובת עבודה"</string>
+    <string name="map_other" msgid="55098598855607997">"הצג כתובת"</string>
+    <string name="map_custom" msgid="4943554530347163288">"הצג כתובת <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"‏שוחח בצ\'אט באמצעות AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"‏שוחח בצ\'אט באמצעות Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"‏שוחח בצ\'אט באמצעות Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"‏שוחח בצ\'אט באמצעות Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"‏שוחח בצ\'אט באמצעות QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"‏שוחח בצ\'אט באמצעות Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"‏שוחח בצ\'אט באמצעות ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"‏שוחח בצ\'אט באמצעות Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"צ\'אט"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"מחק"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"הרחב או כווץ שמות של שדות"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"הרחב או כווץ שדות של שמות פונטיים"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"כל אנשי הקשר"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"מסומן בכוכב"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"התאם אישית"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"איש קשר"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"כל אנשי הקשר האחרים"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"כל אנשי הקשר"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"הסר קבוצת סנכרון"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"הוסף קבוצת סנכרון"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"קבוצות נוספות…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"הסרת \"<xliff:g id="GROUP">%s</xliff:g>\" מהסנכרון תסיר מהסנכרון גם אנשי קשר שאינם מקובצים."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"שומר אפשרויות תצוגה…"</string>
+    <string name="menu_done" msgid="32470053723443112">"בוצע"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"בטל"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"תצוגה מותאמת אישית"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"שמור אנשי קשר שיובאו ב-:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"‏יבא מכרטיס SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"‏יבא מ-SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"‏יבא מ-SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"‏יבא מקובץ ‎.vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"האם לבטל את הייבוא של <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"האם לבטל את הייצוא של <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"‏לא ניתן היה לבטל ייבוא/ייצוא של vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"שגיאה לא ידועה."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"לא ניתן היה לפתוח את \"<xliff:g id="FILE_NAME">%s</xliff:g>\"‏: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"לא ניתן להפעיל את המייצא: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"אין אנשי קשר הניתנים לייצוא."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"השבתת הרשאה נדרשת."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"אירעה שגיאה במהלך הייצוא: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"שם הקובץ הדרוש ארוך מדי (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"שגיאת קלט/פלט"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"אין מספיק זיכרון. ייתכן שהקובץ גדול מדי."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"‏לא ניתן היה לנתח את ה-vCard מסיבה בלתי צפויה."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"הפורמט אינו נתמך."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"‏לא ניתן היה לאסוף מטא-מידע של קובצי vCard נתונים."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"‏לא ניתן היה לייבא קובץ אחד או יותר (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"הייצוא של <xliff:g id="FILENAME">%s</xliff:g> הסתיים."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"ייצוא אנשי הקשר הושלם."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"יצוא אנשי הקשר הסתיים, לחץ על ההודעה כדי לשתף אנשי קשר."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"הקש כדי לשתף אנשי קשר."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"הייצוא של <xliff:g id="FILENAME">%s</xliff:g> בוטל."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"מייצא נתונים של אנשי קשר"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"יצוא הנתונים של אנשי הקשר מתבצע כעת."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"לא ניתן היה לקבל מידע ממסד הנתונים."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"אין אנשי קשר הניתנים לייצוא. אם מוגדרים אנשי קשר בטלפון שלך, ייתכן שספקי נתונים מסוימים אינם מאפשרים ייצוא של אנשי קשר מהטלפון."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"‏יישום יצירת ה-vCard לא הופעל כהלכה."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"לא ניתן היה לייצא"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"נתוני אנשי הקשר לא יוצאו.\nסיבה: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"מייבא את <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"‏לא ניתן היה לקרוא נתוני vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"‏קריאת נתוני ה-VCard בוטלה"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"‏הייבוא של קובץ vCard ‏<xliff:g id="FILENAME">%s</xliff:g> הסתיים"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"הייבוא של <xliff:g id="FILENAME">%s</xliff:g> בוטל"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"הייבוא של <xliff:g id="FILENAME">%s</xliff:g> יתבצע תוך זמן קצר."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ייבוא הקובץ יתבצע תוך זמן קצר."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"‏הבקשה לייבוא ה-vCard נדחתה. נסה שוב מאוחר יותר."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"הייצוא של <xliff:g id="FILENAME">%s</xliff:g> יתבצע תוך זמן קצר."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ייצוא הקובץ יתבצע בעוד זמן קצר."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"יצוא אנשי הקשר יבוצע תוך זמן קצר."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"‏הבקשה לייצוא ה-vCard נדחתה. נסה שוב מאוחר יותר."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"איש קשר"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"‏קובצי ה-vCard נשמרים כקבצים באחסון מקומי זמני. הייבוא בפועל יחל בקרוב."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"‏לא ניתן היה לייבא את ה-vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"‏איש הקשר התקבל באמצעות NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"לייצא את אנשי הקשר?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"שומר כקובץ שמור"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"מייבא <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>‏: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"‏יצא לקובץ ‎.vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"מיין לפי"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"שם פרטי"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"שם משפחה"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"פורמט השם"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"שם פרטי יופיע ראשון"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"שם משפחה יופיע ראשון"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"חשבונות"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"חשבון ברירת מחדל לאנשי קשר חדשים"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"שתף מטא נתונים של איש קשר [ניסוי המוצר לפני הפצה]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"שתף מטא נתונים של איש קשר"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"המידע שלי"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"הגדרת הפרופיל שלך"</string>
+    <string name="setting_about" msgid="3926137653588942297">"מידע על אנשי קשר"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"הגדרות"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"שתף אנשי קשר שמוצגים כעת"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"שיתוף של התוכן הגלוי נכשל."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"שתף אנשי קשר מועדפים"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"שתף את כל אנשי הקשר"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"הניסיון לשתף את אנשי הקשר נכשל."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"יבא/יצא אנשי קשר"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"יבא אנשי קשר"</string>
+    <string name="share_error" msgid="665756457151793108">"לא ניתן לשתף איש קשר זה."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"אין אנשי קשר לשיתוף."</string>
+    <string name="menu_search" msgid="7464453023659824700">"חפש"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"אנשי קשר להצגה"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"אנשי קשר להצגה"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"הגדרה של תצוגה מותאמת אישית"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"שמור"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"חיפוש אנשי קשר"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"מועדפים"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"אין אנשי קשר."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"מחק אנשי קשר קבועים"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"‏בחר כרטיס SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"נהל חשבונות"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ייבוא/ייצוא"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"מספרים חסומים"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"באמצעות <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> באמצעות <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"הפסק לחפש"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"נקה את החיפוש"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"אפשרויות להצגת אנשי קשר"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"חשבון"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"השתמש תמיד עבור שיחות"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"התקשר באמצעות"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"התקשר עם הערה"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"הקלד הערה לשליחה עם השיחה..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"שלח והתקשר"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="two"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> פריטים שלא נקראו. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> פריטים שלא נקראו. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> פריטים שלא נקראו. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. פריט <xliff:g id="COUNT_1">%2$d</xliff:g> שלא נקרא. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"‏גרסת Build"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"רישיונות קוד פתוח"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"פרטי רישיון עבור תוכנות של קוד פתוח"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"מדיניות פרטיות"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"תנאים והגבלות"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"רישיונות קוד פתוח"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"לא ניתן לפתוח את כתובת האתר."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> מסומן"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> לא מסומן"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"בצע שיחת וידאו"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"מחיקה"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"שלוש נקודות"</string>
+</resources>
diff --git a/res-common/values-ja-sw600dp/strings.xml b/res-common/values-ja-sw600dp/strings.xml
new file mode 100644
index 0000000..2f4a7d5
--- /dev/null
+++ b/res-common/values-ja-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"端末"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"エクスポートできる連絡先がありません。タブレットに連絡先がある場合でも、データ プロバイダによってはタブレットから連絡先をエクスポートできないことがあります。"</string>
+</resources>
diff --git a/res-common/values-ja/donottranslate_config.xml b/res-common/values-ja/donottranslate_config.xml
new file mode 100644
index 0000000..ff8a8eb
--- /dev/null
+++ b/res-common/values-ja/donottranslate_config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+
+<resources>
+    <!-- If true, an option is shown in Display Options UI to choose a sort order -->
+    <bool name="config_sort_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_sort_order_primary">true</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a name display order -->
+    <bool name="config_display_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_display_order_primary">true</bool>
+
+    <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
+    <bool name="config_editor_field_order_primary">false</bool>
+
+    <!-- If true, phonetic name is included in the contact editor by default -->
+    <bool name="config_editor_include_phonetic_name">true</bool>
+</resources>
diff --git a/res-common/values-ja/strings.xml b/res-common/values-ja/strings.xml
new file mode 100644
index 0000000..cd4bfe8
--- /dev/null
+++ b/res-common/values-ja/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"テキストをコピーしました"</string>
+    <string name="copy_text" msgid="3424081789297978355">"クリップボードにコピー"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g>に発信"</string>
+    <string name="call_home" msgid="1479549630992276827">"自宅に発信"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"モバイル端末に発信"</string>
+    <string name="call_work" msgid="8299062439076337075">"勤務先に発信"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"勤務先FAXに発信"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"自宅FAXに発信"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ポケベルに発信"</string>
+    <string name="call_other" msgid="4472141328347894937">"発信"</string>
+    <string name="call_callback" msgid="687494744634190411">"コールバック先に発信"</string>
+    <string name="call_car" msgid="9078083109758282133">"クルマに発信"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"会社代表番号に発信"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDNに発信"</string>
+    <string name="call_main" msgid="4640261071249938558">"電話番号1に発信"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"FAXに発信"</string>
+    <string name="call_radio" msgid="9055749313292712021">"無線に発信"</string>
+    <string name="call_telex" msgid="2909886619224843563">"テレックスに発信"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDDに発信"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"モバイル端末（勤務先）に発信"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ポケベル（勤務先）に発信"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g>に発信"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMSに発信"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> さん（通話を発信）"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g>にSMS"</string>
+    <string name="sms_home" msgid="7765831490534280540">"自宅にSMS"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"モバイル端末にSMS"</string>
+    <string name="sms_work" msgid="3910570578912367742">"勤務先にSMS"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"勤務先FAXにSMS"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"自宅FAXにSMS"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ポケベルにSMS"</string>
+    <string name="sms_other" msgid="910895193552957097">"電話にSMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"コールバック先にSMS"</string>
+    <string name="sms_car" msgid="8543669230270954512">"クルマにSMS"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"会社代表番号にSMS"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDNにSMS"</string>
+    <string name="sms_main" msgid="6815987840926184815">"電話番号1にSMS"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"FAXにSMS"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"無線にSMS"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"テレックスにSMS"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDDにSMS"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"モバイル端末（勤務先）にSMS"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ポケベル（勤務先）にSMS"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g>にSMS"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMSにSMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> さん（メッセージを送信）"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ビデオハングアウト"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"よく使う連絡先を消去しますか？"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"連絡帳アプリや電話アプリのよく使う連絡先リストを消去し、メールアプリがアドレス設定を初めから保存していくようにします。"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"よく使う連絡先を消去しています…"</string>
+    <string name="status_available" msgid="4832569677396634846">"オンライン"</string>
+    <string name="status_away" msgid="6267905184545881094">"不在"</string>
+    <string name="status_busy" msgid="7111912905211403545">"取り込み中"</string>
+    <string name="contactsList" msgid="7140022347217602605">"連絡先"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"その他"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ディレクトリ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"仕事用の連絡先リスト"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"すべての連絡先"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"検索しています…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>件以上見つかりました。"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"連絡先はありません"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>件見つかりました</item>
+      <item quantity="one">1件見つかりました</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g>さんのクイックコンタクト"</string>
+    <string name="missing_name" msgid="2633118852693000081">"（名前なし）"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"よく使う連絡先"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"連絡先を表示"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"電話番号のあるすべての連絡先"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"仕事用プロファイルの連絡先"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"更新情報を表示"</string>
+    <string name="account_phone" msgid="325867897209266837">"端末"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"名前"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ニックネーム"</string>
+    <string name="full_name" msgid="885420216812981202">"名前"</string>
+    <string name="name_given" msgid="4153709115654909377">"名"</string>
+    <string name="name_family" msgid="5317387657540738981">"姓"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"敬称（名前の前）"</string>
+    <string name="name_middle" msgid="3951610314424632183">"ミドルネーム"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"敬称（名前の後）"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"フリガナ"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"フリガナ（名）"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"フリガナ（ミドルネーム）"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"フリガナ（姓）"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"電話"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"メール"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"住所"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"組織"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"関係"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"特別な日"</string>
+    <string name="sms" msgid="8086289395154598654">"テキストメッセージ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"住所"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"会社"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"役職"</string>
+    <string name="label_notes" msgid="3997277594846722699">"メモ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ウェブサイト"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ラベル"</string>
+    <string name="email_home" msgid="2230967805906450693">"自宅にメール"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"モバイル端末にメール"</string>
+    <string name="email_work" msgid="7065971921227432400">"勤務先にメール"</string>
+    <string name="email_other" msgid="4601881243553289615">"メール"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g>にメール"</string>
+    <string name="email" msgid="5624424151176351591">"メール"</string>
+    <string name="postal_street" msgid="881349814077356134">"番地"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"私書箱"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"街区（中国等で使用）"</string>
+    <string name="postal_city" msgid="3173008531169519309">"市区町村"</string>
+    <string name="postal_region" msgid="1695206048198921115">"都道府県"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"郵便番号"</string>
+    <string name="postal_country" msgid="3988452247038791892">"国"</string>
+    <string name="map_home" msgid="1221397355014741634">"自宅の住所を表示"</string>
+    <string name="map_work" msgid="9015981646907637207">"勤務先の住所を表示"</string>
+    <string name="map_other" msgid="55098598855607997">"住所を表示"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g>の住所を表示"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIMでチャット"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Liveでチャット"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahooでチャット"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skypeでチャット"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQでチャット"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Googleトークでチャット"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQでチャット"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabberでチャット"</string>
+    <string name="chat" msgid="6297650784873558837">"チャット"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"削除"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"名前フィールドの展開/折りたたみ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"フリガナ項目を展開または折りたたみます"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"すべての連絡先"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"スター付き"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"カスタマイズ"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"連絡先"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"その他すべての連絡先"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"すべての連絡先"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"同期グループを削除"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"同期グループを追加"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"他のグループ…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"「<xliff:g id="GROUP">%s</xliff:g>」を同期から除外すると、グループに含まれない連絡先もすべて同期から除外されます。"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"表示オプションを保存しています…"</string>
+    <string name="menu_done" msgid="32470053723443112">"完了"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"キャンセル"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"カスタムビュー"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"インポートされた連絡先の保存先:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIMカードからインポート"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM（<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>）からインポート"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM（<xliff:g id="SIM_NAME">%1$s</xliff:g>）からインポート"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcfからインポート"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g>のインポートをキャンセルしますか？"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートをキャンセルしますか？"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCardインポート/エクスポート取り消し不可"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"不明なエラーです。"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"「<xliff:g id="FILE_NAME">%s</xliff:g>」を開けませんでした: <xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"エクスポータを起動できませんでした: 「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"エクスポートできる連絡先がありません。"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"必要な権限が無効にされています。"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"エクスポート中にエラーが発生しました: 「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ファイル名（必須）が長すぎます（「<xliff:g id="FILENAME">%s</xliff:g>」）。"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"送受信エラー"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"メモリが不足しています。ファイルが大きすぎる可能性があります。"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"予期しない理由によりvCardを解析できませんでした。"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"このフォーマットには対応していません。"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"指定されたvCardファイルのメタ情報を取得できませんでした。"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"1つ以上のファイルをインポートできませんでした（%s）。"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートの完了"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"連絡先のエクスポートの完了"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"連絡先のエクスポートが終了しました。通知をタップして連絡先を共有してください。"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"タップして連絡先を共有してください。"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートのキャンセル"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"連絡先データのエクスポート"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"連絡先データをエクスポートしています。"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"データベース情報を取得できませんでした。"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"エクスポートできる連絡先がありません。モバイル端末に連絡先がある場合でも、データプロバイダによってはモバイル端末から連絡先をエクスポートできないことがあります。"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCardコンポーザーが正しく起動しませんでした。"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"エクスポート失敗"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"連絡先データはエクスポートされませんでした。\n理由: 「<xliff:g id="FAIL_REASON">%s</xliff:g>」"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g>をインポート中"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCardデータの読み取りの失敗"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCardデータの読み取りのキャンセル"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCardの<xliff:g id="FILENAME">%s</xliff:g>のインポートの終了"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>のインポートのキャンセル"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g>はまもなくインポートされます。"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ファイルはまもなくインポートされます。"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCardのインポートリクエストは拒否されました。しばらくしてからもう一度お試しください。"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g>はまもなくエクスポートされます。"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ファイルはまもなくエクスポートされます。"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"連絡先のエクスポートをまもなく開始します。"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCardのエクスポートリクエストは拒否されました。しばらくしてからもう一度お試しください。"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"連絡先"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCardをローカル一時ストレージにキャッシュしています。まもなくインポート処理を開始します。"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCardをインポートできませんでした。"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC受信の連絡先"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"連絡先をエクスポートしますか？"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"キャッシュ中"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件をインポート中: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcfにエクスポート"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"並べ替え"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"名"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"姓"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"名前の形式"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"名が先"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"姓が先"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"アカウント"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"新しい連絡先のデフォルトアカウント"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"連絡先メタデータの同期 [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"連絡先メタデータの同期"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ユーザー情報"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"プロフィールを設定"</string>
+    <string name="setting_about" msgid="3926137653588942297">"連絡先について"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"設定"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"表示可能な連絡先を共有"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"表示可能な連絡先を共有できませんでした。"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"お気に入りの連絡先を共有"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"すべての連絡先を共有"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"連絡先を共有できませんでした。"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"連絡先のインポート/エクスポート"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"連絡先のインポート"</string>
+    <string name="share_error" msgid="665756457151793108">"この連絡先は共有できません。"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"共有する連絡先がありません。"</string>
+    <string name="menu_search" msgid="7464453023659824700">"検索"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"表示する連絡先"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"表示する連絡先"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"カスタムビューの設定"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"保存"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"連絡先を検索"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"お気に入り"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"連絡先がありません。"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"よく使う連絡先のクリア"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIMカードを選択"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"アカウントを管理"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"インポート/エクスポート"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"ブロック中の電話番号"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"更新元: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>、更新元: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"検索を停止"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"検索をクリア"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"連絡先表示オプション"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"アカウント"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"このSIMを常に通話に使用する"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"発信用の端末アカウントを選択してください"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"メモを添付して発信"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"発信時に送信するメモを入力..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"送信と発信"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g>、<xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"><xliff:g id="TITLE_2">%1$s</xliff:g>。<xliff:g id="COUNT_3">%2$d</xliff:g>件の未読項目。</item>
+      <item quantity="one"><xliff:g id="TITLE_0">%1$s</xliff:g>。<xliff:g id="COUNT_1">%2$d</xliff:g>件の未読項目。</item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"ビルドバージョン"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"オープンソースライセンス"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"オープンソースソフトウェアに関するライセンスの詳細"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"プライバシーポリシー"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"利用規約"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"オープンソースライセンス"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"この URL を開けませんでした。"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> はONです"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> はOFFです"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ビデオハングアウトを発信"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"削除"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"省略記号"</string>
+</resources>
diff --git a/res-common/values-ka-rGE-sw600dp/strings.xml b/res-common/values-ka-rGE-sw600dp/strings.xml
new file mode 100644
index 0000000..3fcd815
--- /dev/null
+++ b/res-common/values-ka-rGE-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"მოწყობილობა"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ექსპორტირებადი კონტაქტები არ არის. შესაძლოა, არსებული კონტაქტების ტაბლეტიდან ექპორტს მონაცემთა ზოგიერთი პროვაიდერი კრძალავდეს."</string>
+</resources>
diff --git a/res-common/values-ka-rGE/strings.xml b/res-common/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..8d70480
--- /dev/null
+++ b/res-common/values-ka-rGE/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"კოპირებული ტექსტი"</string>
+    <string name="copy_text" msgid="3424081789297978355">"გაცვლის ბუფერში კოპირება"</string>
+    <string name="call_custom" msgid="2786306789889210756">"დარეკვა <xliff:g id="CUSTOM">%s</xliff:g> ნომერზე"</string>
+    <string name="call_home" msgid="1479549630992276827">"დარეკვა სახლში"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"დარეკვა მობილურზე"</string>
+    <string name="call_work" msgid="8299062439076337075">"დარეკვა სამსახურში"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"დარეკვა სამსახურის ფაქსზე"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"დარეკვა სახლის ფაქსზე"</string>
+    <string name="call_pager" msgid="3038080882899955112">"დარეკვა პეიჯერზე"</string>
+    <string name="call_other" msgid="4472141328347894937">"დარეკვა"</string>
+    <string name="call_callback" msgid="687494744634190411">"დარეკვა უკუგამოძახების ნომერზე"</string>
+    <string name="call_car" msgid="9078083109758282133">"დარეკვა მანქანის ტელეფონზე"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"დარეკვა კომპანიის მთავარ ნომერზე"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"დარეკვა ISDN-ის ნომერზე"</string>
+    <string name="call_main" msgid="4640261071249938558">"დარეკვა მთავარ ნომერზე"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"დარეკვა ფაქსზე"</string>
+    <string name="call_radio" msgid="9055749313292712021">"დარეკვა გადამცემზე"</string>
+    <string name="call_telex" msgid="2909886619224843563">"დარეკვა ტელექსზე"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"დარეკვა TTY/TDD-ზე"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"დარეკვა სამსახურის მობილურზე"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"დარეკვა სამსახურის პეიჯერზე"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"დარეკვა <xliff:g id="ASSISTANT">%s</xliff:g>-თან"</string>
+    <string name="call_mms" msgid="8998771923464696960">"დარეკვა MMS-ის ნომერზე"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ზარი)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"ტექსტური შეტყობინების გაგზავნა <xliff:g id="CUSTOM">%s</xliff:g>-ზე"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ტექსტური შეტყობინების გაგზავნა სახლში"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ტექსტური შეტყობინების გაგზავნა მობილურზე"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ტექსტური შეტყობინების გაგზავნა სამსახურში"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ტექსტური შეტყობინების გაგზავნა სამუშაო ფაქსზე"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ტექსტური შეტყობინების გაგზავნა სახლის ფაქსზე"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ტექსტური შეტყობინების გაგზავნა პეიჯერზე"</string>
+    <string name="sms_other" msgid="910895193552957097">"ტექსტური შეტყობინება"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ტექსტური შეტყობინების გაგზავნა უკუგამოძახების ნომერზე"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ტექსტური შეტყობინების გაგზავნა მანქანის ნომერზე"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ტექსტური შეტყობინების გაგზავნა კომპანიის მთავარ ნომერზე"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ტექსტური შეტყობინების გაგზავნა ISDN ნომერზე"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ტექსტური შეტყობინების გაგზავნა მთავარ ნომერზე"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ტექსტური შეტყობინების გაგზავნა ფაქსზე"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ტექსტური შეტყობინების გაგზავნა გადამცემზე"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ტექსტური შეტყობინების გაგზავნა ტელექსზე"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"ტექსტური შეტყობინების გაგზავნა TTY/TDD-ზე"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ტექსტური შეტყობინების გაგზავნა სამსახურის მობილურზე"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ტექსტური შეტყობინების გაგზავნა სამსახურის პეიჯერზე"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"ტექსტური შეტყობინების გაგზავნა <xliff:g id="ASSISTANT">%s</xliff:g>-ისთვის"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"ტექსტური შეტყობინების გაგზავნა MMS ნომერზე"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (შეტყობინება)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ვიდეოზარის განხორციელება"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"გსურთ ხშირი კონტაქტების წაშლა?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"თქვენ წაშლით ხშირად დაკავშირებულთა სიას კონტაქტებიდან და ტელეფონის აპლიკაციიდან და აიძულებთ ელ-ფოსტის აპლიკაციებს შეისწავლონ თქვენი ადრესატების პრიორიტეტები ნულიდან."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"ხშირი კონტაქტები იშლება…"</string>
+    <string name="status_available" msgid="4832569677396634846">"ხელმისაწვდომი"</string>
+    <string name="status_away" msgid="6267905184545881094">"გასული"</string>
+    <string name="status_busy" msgid="7111912905211403545">"დაკავებული"</string>
+    <string name="contactsList" msgid="7140022347217602605">"კონტაქტები"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"სხვა"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"კატალოგი"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"სამსახურის კატალოგი"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"ყველა კონტაქტი"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"ძიება..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"ნაპოვნია <xliff:g id="COUNT">%d</xliff:g>-ზე მეტი."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"კონტაქტები არ არის"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> მოიძებნა</item>
+      <item quantity="one">1 მოიძებნა</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"სწრაფი დაკავშირება <xliff:g id="NAME">%1$s</xliff:g>-თან"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(სახელის გარეშე)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"ხშირი კონტაქტები"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"კონტაქტის ნახვა"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ყველა ტელეფონის ნომრიანი კონტაქტი"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"სამსახურის პროფილის კონტაქტები"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"განახლებების ნახვა"</string>
+    <string name="account_phone" msgid="325867897209266837">"მოწყობილობა"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"სახელი"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"მეტსახელი"</string>
+    <string name="full_name" msgid="885420216812981202">"სახელი"</string>
+    <string name="name_given" msgid="4153709115654909377">"სახელი"</string>
+    <string name="name_family" msgid="5317387657540738981">"გვარი"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"სახელის პრეფიქსი"</string>
+    <string name="name_middle" msgid="3951610314424632183">"მეორე სახელი"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"სახელის სუფიქსი"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"სახელის ტრანსკრიფცია"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ფონეტიკური სახელი"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"მეორე სახელის ტრანსკრიფცია"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ფონეტიკური გვარი"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ტელეფონი"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ელფოსტა"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"მისამართი"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ორგანიზაცია"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ურთიერთობა"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"სპეციალური თარიღი"</string>
+    <string name="sms" msgid="8086289395154598654">"ტექსტური შეტყობინება (SMS)"</string>
+    <string name="postal_address" msgid="7692926530081579786">"მისამართი"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"კომპანია"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"პოზიცია"</string>
+    <string name="label_notes" msgid="3997277594846722699">"შენიშვნები"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ვებ-საიტი"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ლეიბლები"</string>
+    <string name="email_home" msgid="2230967805906450693">"ელფოსტის გაგზავნა სახლში"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ელფოსტის გაგზავნა მობილურზე"</string>
+    <string name="email_work" msgid="7065971921227432400">"ელფოსტის გაგზავნა სამსახურში"</string>
+    <string name="email_other" msgid="4601881243553289615">"ელფოსტის გაგზავნა"</string>
+    <string name="email_custom" msgid="5777583741581538870">"ელფოსტის გაგზავნა <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"ელფოსტის გაგზავნა"</string>
+    <string name="postal_street" msgid="881349814077356134">"ქუჩა"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"საფოსტო ყუთი"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"უბანი"</string>
+    <string name="postal_city" msgid="3173008531169519309">"ქალაქი"</string>
+    <string name="postal_region" msgid="1695206048198921115">"შტატი"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ZIP-კოდი"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ქვეყანა"</string>
+    <string name="map_home" msgid="1221397355014741634">"სახლის მისამართის ნახვა"</string>
+    <string name="map_work" msgid="9015981646907637207">"სამსახურის მისამართის ნახვა"</string>
+    <string name="map_other" msgid="55098598855607997">"მისამართის ნახვა"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> მისამართის ნახვა"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"ჩეთი AIM-ით"</string>
+    <string name="chat_msn" msgid="627481952525245054">"ჩეთი Windows Live-ით"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"ჩეთი Yahoo-ს საშუალებით"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"ჩეთი Skype-ით"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"ჩეთი QQ-ით"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"ჩეთი Google Talk-ით"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ჩეთი ICQ-ით"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"ჩეთი Jabber-ით"</string>
+    <string name="chat" msgid="6297650784873558837">"ჩეთი"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"წაშლა"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"სახელთა ველების გაშლა ან აკეცვა"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ფონეტიკური სახელების ველების გაშლა ან ჩაკეცვა"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"ყველა კონტატი"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ვარსკვლავიანი"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"მორგება"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"კონტაქტი"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"ყველა სხვა კონტაქტი"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"ყველა კონტატი"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"სინქრონიზაციის ჯგუფის წაშლა"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"სინქრონიზაციის ჯგუფის დამატება"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"სხვა ჯგუფები…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"სინქრონიზაციიდან „<xliff:g id="GROUP">%s</xliff:g>“-ის ამოშლა წაშლის ყველა დაუჯგუფებელ კონტაქტს."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ეკრანის პარამეტრების შენახვა…"</string>
+    <string name="menu_done" msgid="32470053723443112">"დასრულდა"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"გაუქმება"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"მორგებული ხედი"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"იმპორტირებული კონტაქტების შენახვა აქ:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM ბარათიდან იმპორტი"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"იმპორტი SIM-იდან <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"იმპორტი SIM-იდან <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"იმპორტი .vcf ფაილიდან"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"გსურთ <xliff:g id="FILENAME">%s</xliff:g>-ის იმპორტის გაუქმება?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"გსურთ <xliff:g id="FILENAME">%s</xliff:g>-ის ექსპორტის გაუქმება?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard-ის იმპორტი/ექსპორტი ვერ გაუქმდა"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"უცნობი შეცდომა."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"„<xliff:g id="FILE_NAME">%s</xliff:g>“-ის გახსნა ვერ მოხერხდა: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ექსპორტერის გაშვება ვერ მოხერხდა: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ექსპორტირებადი კონტაქტი არ არსებობს."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"თქვენ გათიშული გაქვთ საჭირო ნებართვა."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"შეცდომის გამო ექსპორტი ვერ მოხერხდა: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"საჭირო ფაილის სახელი ძალიან გრძელია („<xliff:g id="FILENAME">%s</xliff:g>“)"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O შეცდომა"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"მეხსიერება არასაკმარისია. შესაძლოა ფაილი ძალიან დიდია."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"vCard ფაილის გარჩევა ვერ მოხერხდა გაუთვალისწინებული მიზეზით."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ფორმატი მხარდაუჭერელია."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"მოცემული vCard ფაილ(ებ)ის მეტა ინფორმაციის შეგროვება ვერ მოხერხდა."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ერთი ან მეტი ფაილის იმპორტი ვერ მოხერხდა (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>-ის ექსპორტი დასრულდა."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"კონტაქტების ექსპორტი დასრულდა."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"კონტაქტების ექსპორტი დასრულდა. კონტაქტების გასაზიარებლად, შეეხეთ შეტყობინებას."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"შეეხეთ კონტაქტების გასაზიარებლად."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>-ის ექსპორტი გაუქმდა."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"მიმდინარეობს კონტაქტების მონაცემების ექსპორტი"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"მიმდინარეობს კონტაქტების მონაცემების ექსპორტი."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"მონაცემთა ბაზის შესახებ ინფორმაციის მიღება ვერ მოხერხდა."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ექსპორტირებადი კონტაქტები არ მოიპოვება. თუ კონტაქტები ნამდვილად არის თქვენს ტელეფონში, შესაძლოა ზოგიერთი მონაცემთა პროვაიდერი არ იძლევა ტელეფონიდან მათი ექსპორტის უფლებას."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard ფაილის კომპოზიტორი გაშვებულია არასწორად."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ექსპორტი ჩაიშალა."</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"კონტაქტების მონაცემები არ არის ექსპორტირებული.\nმიზეზი: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"იმპორტირდება <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard მონაცემთა წაკითხვა ვერ მოხერხდა"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard მონაცემთა წაკითხვა გაუქმდა"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard ფაილის <xliff:g id="FILENAME">%s</xliff:g> იმპორტი დასრულდა"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>-ის იმპორტი გაუქმდა"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> მალე იმპორტირდება."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ეს ფაილი მალე იმპორტირდება."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard-ის იმპორტის მოთხოვნა უარყოფილია. სცადეთ მოგვიანებით."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> მალე ექსპორტირდება."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ამ ფაილის ექსპორტი მალე შესრულდება."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"კონტაქტების ექსპორტი მალე განხორციელდება."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard-ის ექსპორტის მოთხოვნა უარყოფილია. სცადეთ მოგვიანებით."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"კონტაქტი"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"მიმდინარეობს vCard ფაილ(ებ)ის ქეშირება ადგილობრივ დროებით მეხსიერებაში. ფაქტიური იმპორტი დაიწყება მალე."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard-ის იმპორტი ვერ მოხერხდა."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"კონტაქტი NFC-ით"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"გსურთ კონტაქტების ექსპორტი?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ქეშირება"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"იმპორტირდება <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"ექსპორტი .vcf ფაილში"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"სორტირება:"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"სახელით"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"გვარით"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"სახელის ფორმატი"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ჯერ სახელი"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"ჯერ გვარი"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"ანგარიშები"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"ნაგულისხმევი ანგარიში ახალი კონტაქტებისთვის"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"კონტაქტების მეტამონაცემების სინქრონიზაცია (Dogfood-ვერსია)"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"კონტაქტების მეტამონაცემების სინქრონიზაცია"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ჩემი ინფორმაცია"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"თქვენი პროფილის დაყენება"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Contacts-ის შესახებ"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"პარამეტრები"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"ხილული კონტაქტების გაზიარება"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"ხილული კონტაქტების გაზიარება ვერ მოხერხდა."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"რჩეული კონტაქტების გაზიარება"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"ყველა კონტაქტის გაზიარება"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"კონტაქტების გაზიარება ვერ მოხერხდა."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"კონტაქტების იმპორტი/ექსპორტი"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"კონტაქტების იმპორტი"</string>
+    <string name="share_error" msgid="665756457151793108">"ამ კონტაქტის გაზიარება შეუძლებელია."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"გასაზიარებელი კონტაქტები არ არის."</string>
+    <string name="menu_search" msgid="7464453023659824700">"ძიება"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ნაჩვენები კონტაქტები"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ნაჩვენები კონტაქტები"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"მორგებული ხედის განსაზღვრა"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"შენახვა"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"კონტაქტების ძიება"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"რჩეულები"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"კონტაქტები არ არის."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"ხშირი კონტაქტების წაშლა"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"აირჩიეთ SIM ბარათი"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"ანგარიშების მართვა"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"იმპორტი/ექსპორტი"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"დაბლოკილი ნომრები"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g>-ის მეშვეობით"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="SOURCE">%2$s</xliff:g>-ის მეშვეობით"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ძიების შეჩერება"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ძიების გასუფთავება"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"კონტაქტის ჩვენების ვარიანტები"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"ანგარიში"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ზარებისთვის მუდამ ამის გამოყენება"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"დარეკვა ანგარიშით:"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ზარი შენიშვნასთან ერთად"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"აკრიფეთ შენიშვნა ზართან ერთად გასაგზავნად ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"გაგზავნა &amp; დარეკვა"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> წაუკითხავი ერთეული. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> წაუკითხავი ერთეული. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"ანაწყობის ვერსია"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ღია კოდის ლიცენზიები"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ღია კოდის პროგრამული უზრუნველყოფის ლიცენზირების დეტალები"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"კონფიდენციალურობის დებულება"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"მომსახურების პირობები"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ღია კოდის ლიცენზიები"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Url-ის გახსნა ვერ მოხერხდა."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> მონიშნულია"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> არ არის მონიშნული"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ვიდეოზარის განხორციელება"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"წაშლა"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"მრავალწერტილი"</string>
+</resources>
diff --git a/res-common/values-kk-rKZ-sw600dp/strings.xml b/res-common/values-kk-rKZ-sw600dp/strings.xml
new file mode 100644
index 0000000..6d64787
--- /dev/null
+++ b/res-common/values-kk-rKZ-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Құрылғы"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Экспортталатын контактілер жоқ. Планшетіңізде контактілер болса, кейбір деректер жеткізушілері контактілердің планшеттен экспортталуына рұқсат бермеуі мүмкін."</string>
+</resources>
diff --git a/res-common/values-kk-rKZ/strings.xml b/res-common/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..c1d4132
--- /dev/null
+++ b/res-common/values-kk-rKZ/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Мәтін көшірілді"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Аралық сақтағышқа көшіру"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> нөміріне қоңырау шалу"</string>
+    <string name="call_home" msgid="1479549630992276827">"Үйге қоңырау шалу"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Ұялы телефонға қоңырау шалу"</string>
+    <string name="call_work" msgid="8299062439076337075">"Жұмысқа қоңырау шалу"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Жұмыс факсіне қоңырау шалу"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Үй факсіне қоңырау шалу"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Пэйджерге қоңырау шалу"</string>
+    <string name="call_other" msgid="4472141328347894937">"Қоңырау шалу"</string>
+    <string name="call_callback" msgid="687494744634190411">"Кері қоңырау шалу нөміріне қоңырау шалу"</string>
+    <string name="call_car" msgid="9078083109758282133">"Автокөлікке қоңырау шалу"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Компанияның негізгі нөміріне қоңырау шалу"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN нөміріне қоңырау шалу"</string>
+    <string name="call_main" msgid="4640261071249938558">"Негізгі нөмірге қоңырау шалу"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Факске қоңырау шалу"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Радиоға қоңырау шалу"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Телекске қоңырау шалу"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Есту қабілеті төмен адамдарға арналған телетайпқа қоңырау шалу"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Жұмыс ұялы телефонына қоңырау шалу"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Жұмыс пэйджеріне қоңырау шалу"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> нөміріне қоңырау соғу"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS нөміріне қоңырау шалу"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Қоңырау)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> мәтін-хабар жіберу"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Үй телефонына мәтін-хабар жіберу"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Ұялы телефонған мәтін-хабар жіберу"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Жұмыс нөміріне мәтін-хабар жіберу"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Жұмыс факсіне мәтін-хабар жіберу"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Үй факсіне мәтін-хабар жіберу"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Пейджерге мәтін-хабар жіберу"</string>
+    <string name="sms_other" msgid="910895193552957097">"Мәтін-хабар"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Кері қоңырау шалу нөміріне мәтін-хабар жіберу"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Автокөлікке мәтін-хабар жіберу"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Негізгі компанияға мәтін-хабар жіберу"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN нөміріне мәтін-хабар жіберу"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Негізгі нөмірге мәтін-хабар жіберу"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Факске мәтін-хабар жіберу"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Радиоға мәтін-хабр жіберу"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Tелетайпқа мәтін-хабар жіберу"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Есту қабілеті төмен адамдарға арналған телетайпқа мәтін-хабар жіберу"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Жұмыс ұялы телефонына мәтін-хабар жіберу"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Жұмыс пейджеріне мәтін-хабар жіберу"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> нөміріне мәтін-хабар жіберу"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS нөміріне мәтін-хабар жіберу"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Хабар)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Бейне қоңырау шалу"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Жиі қолданылғандар тазартылсын ба?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Контактілер және Телефондар қолданбаларындағы жиі хабарласатындар тізімі тазаланады және электрондық пошта қолданбалары мекенжай параметрлерін басынан үйренуге мәжбүрленеді."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Жиі қолданылғандар тазартылуда…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Қол жетімді"</string>
+    <string name="status_away" msgid="6267905184545881094">"Желіден тыс"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Бос емес"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Контактілер"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Басқа"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Анықтама"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Жұмыс каталогы"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Барлық контактілер"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Іздеуде..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> көбірек табылды."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ешқандай контактілер жоқ"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> табылды</item>
+      <item quantity="one">1 табылды</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> үшін жылдам байланыс"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Атаусыз)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Жиі қолданылғандар"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Контактіні көру"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Телефон нөмірі бар барлық контактілер"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Жұмыс профилінің контактілері"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Жаңартуларды көру"</string>
+    <string name="account_phone" msgid="325867897209266837">"Құрылғы"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Аты-жөні"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Қысқа аты"</string>
+    <string name="full_name" msgid="885420216812981202">"Аты-жөні"</string>
+    <string name="name_given" msgid="4153709115654909377">"Аты"</string>
+    <string name="name_family" msgid="5317387657540738981">"Тегі"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Аттың префиксі"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Әкесінің аты"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Аттың суффиксі"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Атының транскрипциясы"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Атының транскрипциясы"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Әкесінің атының транскрипциясы"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Тегінің транскрипциясы"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Э-пошта"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Мекенжай"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Ұйым"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Қарым-қатынас"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Ерекше күн"</string>
+    <string name="sms" msgid="8086289395154598654">"Мәтін-хабар"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Мекенжай"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Компания"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Лауазымы"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Ескертулер"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Веб-сайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Белгілер"</string>
+    <string name="email_home" msgid="2230967805906450693">"Үй э-поштасына хат жіберу"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Ұялы телефонға хат жіберу"</string>
+    <string name="email_work" msgid="7065971921227432400">"Жұмысқа хат жіберу"</string>
+    <string name="email_other" msgid="4601881243553289615">"Хат жіберу"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> мекенжайына хат жіберу"</string>
+    <string name="email" msgid="5624424151176351591">"Э-пошта"</string>
+    <string name="postal_street" msgid="881349814077356134">"Көше"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Пошта жәшігі"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Аудан"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Қала"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Штат"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Индекс"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Ел"</string>
+    <string name="map_home" msgid="1221397355014741634">"Үй мекенжайын көру"</string>
+    <string name="map_work" msgid="9015981646907637207">"Жұмыс мекенжайын көру"</string>
+    <string name="map_other" msgid="55098598855607997">"Мекенжайын көру"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> мекенжайын көру"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM қолданып чаттасу"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live қолданып чаттасу"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo қолданып чаттасу"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype қолданып чаттасу"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ қолданып чаттасу"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk функциясы арқылы чаттасу"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ қолданып чаттасу"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber қолданып чаттасу"</string>
+    <string name="chat" msgid="6297650784873558837">"Чаттасу"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"жою"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Ат аймақтарын кеңейту немесе қирату"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Атының транскрипциясы өрістерін жаю немесе жию"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Барлық контактілер"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Жұлдызшалы"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Қалау бойынша реттеу"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Контакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Барлық басқа топтар"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Барлық контактілер"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Синх тобын алып тастау"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Синх тобын қосу"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Басқа топтар..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" синрондаудан алу топталмаған контактілердің синхрондаудан алынуына себеп болады."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Дисплей опцияларын сақтау…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Дайын"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Бас тарту"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Реттелген көрініс"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Импортталған контактілерді келесіге сақтау:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM картадан импорттау"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g> SIM картасынан импорттау"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> SIM картасынан импорттау"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf файлынан импорттау"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> импорттау тоқтатылсын ба?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> экспорттау тоқтатылсын ба?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vКартасын импорттау/экспорттауды тоқтату мүмкін болмады"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Белгісіз қателік."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" файлын аша алмады: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Экспорттаушыны бастау мүмкін болмады: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Экспортталатын контакт жоқ."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Сіз міндетті рұқсатты өшірдіңіз."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Экспорттау кезінде қателік орын алды: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Қажетті файл атауы тым ұзақ (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O қателігі"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Жад жеткіліксіз. Файл тым үлкен болуы мүмкін."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"vКартасын талдау күтпеген себеппен мүмкін болмады."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Форматтың қолдауы жоқ."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Осы vКарта файлдары туралы мета ақпарат жинай алмады."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Бір немесе бірнеше карталарды импорттау мүмкін болмады (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> экспорттау аяқталды."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Контактілер экспортталып болды."</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> экспорттау тоқтатылды."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Контакт дерекқор экспортталуда"</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Дерекқор ақпаратын ала алмады."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Экспорттауға болатын контактілер жоқ. Телефоныңызда контактілер болса, кейбір дерекқор жадбықтаушылар контактілердің телефоннан экспортталуына рұқсат бермейді."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vКарта жасақтаушы дұрыс басталмады."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Экспорттай алмады"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Контакт деректері экспортталмады. \nСебебі: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> импортталуда"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vКарта дерекқорын оқи алмады"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vКарта дерекқорын оқу тоқтатылды"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> vКарта файлын импорттау аяқталды"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> импорттау тоқтатылды"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> жуық арада импортталады."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Файл жуық арада импортталады."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vКартасын импорттау өтініші қабылданбады. Кейінірек қайта әрекеттеніп көріңіз."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> жуық арада экспортталады."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Файл қысқа уақыттан кейін экспортталады."</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vКартасын экспорттау өтініші қабылданбады. Кейінірек қайта әрекеттеніп көріңіз."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"контакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vКарталарын жергілікті уақытша жадқа кэштеу. Импорттау жуық арада басталады."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vКартасын экспорттау мүмкін болмады."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"ЖӨБ контактісі"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Контактілер экспортталсын ба?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кэштеу"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> импорттауда: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf файлына экспорттау"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Сұрыптау шарты"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Аты"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Тегі"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Ат пішімі"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Алдымен аты"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Алдымен тегі"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Есептік жазбалар"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Жаңа контактілерге арналған әдепкі есептік жазба"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Контакт метадеректерін синхрондау [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Контакт метадеректерін синхрондау"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Ақпаратым"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Профильді реттеу"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Контактілер туралы"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Параметрлер"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Көрінетін контактілерді бөлісу"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Көрінетін контактілерді бөлісу сәтсіз аяқталды."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Таңдаулы контактілерді бөлісу"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Барлық контактілерді бөлісу"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Контактілерді бөлісу сәтсіз аяқталды."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Контактілерді импорттау/экспорттау"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Контактілерді импорттау"</string>
+    <string name="share_error" msgid="665756457151793108">"Бұл контактіні бөлісу мүмкін болмады"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Бөлісетін контактілер жоқ."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Іздеу"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Көрсетілетін контактілер"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Көрсетілетін контактілер"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Реттелген көріністі анықтау"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Сақтау"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Контактілерді іздеу"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Сүйіктілер"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ешқандай контактілер жоқ."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Жиі қолданылғандары өшіру"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM картасын таңдау"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Есептік жазбаларды басқару"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Импорттау/экспорттау"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Бөгелген нөмірлер"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> арқылы"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> дерегі <xliff:g id="SOURCE">%2$s</xliff:g> арқылы"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"іздеуді тоқтату"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Іздеуді тазалау"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Контактілерді көрсету опциялары"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Есептік жазба"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Осыны қоңыраулар үшін әрқашан пайд."</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Келесімен қоңырау шалу"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Ескертпе бар қоңырау"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Қоңыраумен жіберу үшін ескертпе теріңіз ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ЖІБЕРУ ЖӘНЕ ҚОҢЫРАУ СОҒУ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> оқылмаған элемент. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> оқылмаған элемент. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Жинақ нұсқасы"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Ашық бағдарлама лицензиялары"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Ашық бастапқы код бағдарламасына арналған лицензия туралы мәліметтер"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Құпиялылық саясаты"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Қызмет көрсету шарттары"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Ашық бастапқы код лицензиялары"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Url ашылған жоқ."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> құсбелгі қойылған"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> құсбелгі қойылмаған"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Бейне қоңырау соғу"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Жою"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Көп нүкте"</string>
+</resources>
diff --git a/res-common/values-km-rKH-sw600dp/strings.xml b/res-common/values-km-rKH-sw600dp/strings.xml
new file mode 100644
index 0000000..84ea311
--- /dev/null
+++ b/res-common/values-km-rKH-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ឧបករណ៍"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"មិនមានទំនាក់ទំនងដែលអាចនាំចេញបានទេ។ ប្រសិនបើអ្នកពិតជាមានទំនាក់ទំនងនៅក្នុងថេប្លេតរបស់អ្នកមែន នោះក្រុមហ៊ុនផ្ដល់ទិន្នន័យប្រហែលជាមិនអនុញ្ញាតឲ្យធ្វើការនាំចេញទំនាក់ទំនងទាំងនោះពីថេប្លេតនោះទេ។"</string>
+</resources>
diff --git a/res-common/values-km-rKH/strings.xml b/res-common/values-km-rKH/strings.xml
new file mode 100644
index 0000000..c41d201
--- /dev/null
+++ b/res-common/values-km-rKH/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"បាន​ចម្លង​អត្ថបទ"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ចម្លងទៅក្ដារតម្បៀតខ្ទាស់?"</string>
+    <string name="call_custom" msgid="2786306789889210756">"ហៅ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"ហៅ​ទៅ​ផ្ទះ"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"ហៅ​ទៅ​ទូរស័ព្ទ​ចល័ត"</string>
+    <string name="call_work" msgid="8299062439076337075">"ហៅ​ទៅ​កន្លែង​ធ្វើការ"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"ហៅ​ទៅ​ទូរសារ​កន្លែង​ធ្វើការ"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ហៅ​ទៅ​ទូរសារ​ផ្ទះ"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ហៅ​ទៅ​លេខ​ភេយ័រ"</string>
+    <string name="call_other" msgid="4472141328347894937">"ហៅ"</string>
+    <string name="call_callback" msgid="687494744634190411">"ហៅ​ទៅ​លេខ​ហៅ​ទៅវិញ"</string>
+    <string name="call_car" msgid="9078083109758282133">"ហៅ​ទៅ​ទូរស័ព្ទ​រថយន្ត"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ហៅ​ទៅ​លេខ​សំខាន់​របស់​ក្រុមហ៊ុន"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ហៅ​ទៅ ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"ហៅ​ទៅ​លេខ​ចម្បង"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ហៅ​ទៅ​ទូរសារ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ហៅ​ទៅ​លេខ​វិទ្យុ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ហៅ​ទៅ telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"ហៅ​ទៅ TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"ហៅ​ទៅ​ទូរស័ព្ទ​ចល័ត​កន្លែង​ធ្វើការ"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ហៅ​ទៅ​ភេយ័រ​កន្លែង​ធ្វើការ"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"ហៅ​ទៅ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"ហៅ MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ហៅ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"អត្ថបទ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"​សារ​ទៅ​​ផ្ទះ"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"អត្ថបទ​ទូរស័ព្ទ​ចល័ត"</string>
+    <string name="sms_work" msgid="3910570578912367742">"អត្ថបទ​ការងារ"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"សារ​​ទូរសារ​កន្លែង​ធ្វើការ"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"អត្ថបទ​ទូរសារ​ផ្ទះ"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"អត្ថបទ​ភេយ័រ"</string>
+    <string name="sms_other" msgid="910895193552957097">"អត្ថបទ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"អត្ថបទ​ហៅ​ទៅវិញ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"អត្ថបទ​ទៅ​រថយន្ត"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"អត្ថបទ​ចម្បង​របស់​ក្រុមហ៊ុន"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"អត្ថបទ ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"សារ​ចម្បង"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"អត្ថបទ​ទូរសារ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"អត្ថបទ​វិទ្យុ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"អត្ថបទ telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"អត្ថបទ TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"អត្ថបទ​ទូរស័ព្ទ​ចល័ត​កន្លែង​ធ្វើការ"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"អត្ថបទ​ភេ​យ័រ​កន្លែង​ធ្វើការ"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"អត្ថបទ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"អត្ថបទ MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (សារ)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ហៅ​ជា​វីដេអូ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"សម្អាត​ទំនាក់ទំនង​ញឹកញាប់?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"អ្នកនឹងជម្រះបញ្ជីដែលអ្នកទាក់ទងជាញឹកញាប់នៅក្នុងកម្មវិធីទូរស័ព្ទ និងទំនាក់ទំនង ហើយបង្ខំឲ្យកម្មវិធីអ៊ីមែលស្វែងយល់ពីចំណូលចិត្តទំនាក់ទំនងរបស់អ្នកតាំងពីដំបូង។"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"សម្អាត​ទំនាក់ទំនង​ញឹកញាប់..."</string>
+    <string name="status_available" msgid="4832569677396634846">"ទំនេរ"</string>
+    <string name="status_away" msgid="6267905184545881094">"ចាក​ឆ្ងាយ"</string>
+    <string name="status_busy" msgid="7111912905211403545">"រវល់"</string>
+    <string name="contactsList" msgid="7140022347217602605">"ទំនាក់ទំនង"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"ផ្សេងៗ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ថត"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ថតកន្លែងការងារ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"ទំនាក់ទំនង​ទាំងអស់"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"កំពុង​រក..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"បាន​រក​ឃើញ​ច្រើន​ជាង <xliff:g id="COUNT">%d</xliff:g> ។"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"មិន​មាន​ទំនាក់ទំនង។"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">បានរកឃើញ <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">បានរកឃើញ 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"ទំនាក់ទំនង​រហ័ស​សម្រាប់ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(គ្មាន​ឈ្មោះ)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"បាន​ទាក់ទង​ញឹកញាប់"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"មើល​ទំនាក់ទំនង"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ទំនាក់ទំនង​ទាំងអស់​ដែល​មាន​លេខ​ទូរស័ព្ទ"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"ទំនាក់ទំនងប្រវត្តិរូបការងារ"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"មើល​បច្ចុប្បន្នភាព"</string>
+    <string name="account_phone" msgid="325867897209266837">"ឧបករណ៍"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"ឈ្មោះ"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ឈ្មោះ​ហៅ​ក្រៅ"</string>
+    <string name="full_name" msgid="885420216812981202">"ឈ្មោះ"</string>
+    <string name="name_given" msgid="4153709115654909377">"នាម​ខ្លួន"</string>
+    <string name="name_family" msgid="5317387657540738981">"នាមត្រកូល"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"បុព្វបទ​ឈ្មោះ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"ឈ្មោះ​កណ្ដាល"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"បច្ច័យ​ឈ្មោះ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"សូរស័ព្ទ​ឈ្មោះ"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"នាម​ខ្លួន​តាម​សូរស័ព្ទ"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"សូរស័ព្ទ​ឈ្មោះ​កណ្ដាល"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"នាមត្រកូល​តាម​សូរស័ព្ទ"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ទូរស័ព្ទ"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"អ៊ីមែល"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"អាសយដ្ឋាន"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ស្ថាប័ន"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ចំណង​ទាក់ទង"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"កាលបរិច្ឆេទពិសេស"</string>
+    <string name="sms" msgid="8086289395154598654">"សារ​អត្ថបទ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"អាសយដ្ឋាន"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"ក្រុមហ៊ុន"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"តួនាទី"</string>
+    <string name="label_notes" msgid="3997277594846722699">"ចំណាំ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"គេហទំព័រ"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ស្លាក"</string>
+    <string name="email_home" msgid="2230967805906450693">"អ៊ីមែល​ទៅ​ផ្ទះ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"អ៊ីមែល​ទៅ​ទូរស័ព្ទ​ចល័ត"</string>
+    <string name="email_work" msgid="7065971921227432400">"អ៊ីមែល​ទៅ​កន្លែង​ធ្វើការ"</string>
+    <string name="email_other" msgid="4601881243553289615">"អ៊ីមែល"</string>
+    <string name="email_custom" msgid="5777583741581538870">"អ៊ីមែល <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"អ៊ីមែល"</string>
+    <string name="postal_street" msgid="881349814077356134">"ផ្លូវ"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"ប្រអប់​សំបុត្រ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"អ្នក​ជិត​ខាង"</string>
+    <string name="postal_city" msgid="3173008531169519309">"ទីក្រុង"</string>
+    <string name="postal_region" msgid="1695206048198921115">"រដ្ឋ"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"លេខ​កូដ​តំបន់"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ប្រទេស"</string>
+    <string name="map_home" msgid="1221397355014741634">"មើល​អាសយដ្ឋាន​ផ្ទះ"</string>
+    <string name="map_work" msgid="9015981646907637207">"មើល​អាសយដ្ឋាន​ការងារ"</string>
+    <string name="map_other" msgid="55098598855607997">"មើល​អាសយដ្ឋាន"</string>
+    <string name="map_custom" msgid="4943554530347163288">"មើល​អាសយដ្ឋាន <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"ជជែក​ដោយ​ប្រើ AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"ជជែក​ដោយ​ប្រើ Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"ជជែក​ដោយ​ប្រើ Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"ជជែក​ដោយ​ប្រើ Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"ជជែក​ដោយ​ប្រើ QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"ជជែក​ដោយ​ប្រើ Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ជជែក​ដោយ​ប្រើ ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"ជជែក​ដោយ​ប្រើ Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"ជជែក​​"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"លុប​"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"ពង្រីក ឬ​បង្រួម​វាល​ឈ្មោះ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ពង្រីក និងបង្រួមប្រអប់ឈ្មោះសូរសព្ទ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"ទំនាក់ទំនង​ទាំងអស់"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"បាន​ដាក់​ផ្កាយ"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"ប្ដូរ​តាម​តម្រូវ​ការ"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"ទំនាក់ទំនង"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"ទំនាក់ទំនង​ទាំងអស់​ផ្សេង​ទៀត"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"ទំនាក់ទំនង​ទាំងអស់"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"លុប​ក្រុម​សម​កាល​កម្ម"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"បន្ថែម​ក្រុម​សមកាលកម្ម"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"ក្រុម​ច្រើន​ទៀត..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"ការ​លុប \"<xliff:g id="GROUP">%s</xliff:g>\" ចេញពី​សមកាលកម្ម​វា​ក៏​នឹង​លុប​ទំនាក់ទំនង​ដែល​មិន​នៅ​ក្នុង​ក្រុម​ចេញពី​សមកាលកម្ម​ផង​ដែរ។"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"កំពុង​រក្សាទុក​ជម្រើស​បង្ហាញ..."</string>
+    <string name="menu_done" msgid="32470053723443112">"រួចរាល់"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"បោះ​បង់​"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"ទិដ្ឋភាព​​ផ្ទាល់ខ្លួន"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"រក្សាទំនាក់ទំនងដែលបាននាំចូលទៅ៖"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"នាំចូល​ពី​ស៊ីម​កាត"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"នាំចូល​ពី​ស៊ីម <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"នាំចូល​ពី​ស៊ីម <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"នាំចូូលពីឯកសារ .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"បោះបង់​ការ​នាំចូល <xliff:g id="FILENAME">%s</xliff:g> ?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"បោះបង់​ការ​នាំចេញ <xliff:g id="FILENAME">%s</xliff:g> ?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"មិន​អាច​បោះបង់​ការ​នាំចេញ/នាំចូល vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"មិន​ស្គាល់​កំហុស។"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"មិន​អាច​បើក \"<xliff:g id="FILE_NAME">%s</xliff:g>\"៖ <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"មិន​អាច​ចាប់ផ្ដើម​កម្មវិធី​នាំ​ចេញ៖ \"<xliff:g id="EXACT_REASON">%s</xliff:g>\" ។"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"មិន​មាន​ទំនាក់ទំនង​ដើម្បី​នាំចេញ​ទេ។"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"អ្នកបានបិទសិទ្ធិអនុញ្ញាតដែលតម្រូវឲ្យមាន។"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"មាន​កំហុស​កើតឡើង​ពេល​នាំចេញ៖ \"<xliff:g id="EXACT_REASON">%s</xliff:g>\" ។"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ឈ្មោះ​ឯកសារ​ដែល​បាន​ទាមទារ​គឺ​វែង​ពេក (\"<xliff:g id="FILENAME">%s</xliff:g>\") ។"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"កំហុស I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"អង្គ​ចងចាំ​មិន​គ្រប់គ្រាន់ (ប្រហែលជា​ឯកសារ​ធំ​ពេក​)"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"មិន​អាច​ញែក vCard បាន​ព្រោះ​ហេតុផល​មិន​រំពឹង​ទុក។"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"មិន​គាំទ្រ​ទ្រង់ទ្រាយ។"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"មិន​អាច​ប្រមូល​ព័ត៌មាន​មេតា​របស់​ឯកសារ vCard ដែល​បាន​ផ្ដល់។"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"មាន​ឯកសារ​មួយ ឬ​ច្រើន​ដែល​មិន​អាច​នាំចូល (%s​) បាន​។"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"បាន​បញ្ចប់​ការ​នាំ​ចេញ <xliff:g id="FILENAME">%s</xliff:g> ។"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"បានបញ្ចប់ការនាំចេញទំនាក់ទំនង។"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"បានបញ្ចប់ការនាំចេញទំនាក់ទំនង សូមចុចការជូនដំណឹងនោះដើម្បីចែករំលែកទំនាក់ទំនង"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"ប៉ះដើម្បីចែករំលែកទំនាក់ទំនង"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"បាន​បោះបង់​ការ​នាំចេញ <xliff:g id="FILENAME">%s</xliff:g> ។"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"កំពុង​នាំចេញ​ព័ត៌មាន​ទំនាក់ទំនង"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"ទិន្នន័យចំណាំកំពុងត្រូវបាននាំចេញ"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"មិន​អាច​យក​ព័ត៌មាន​មូលដ្ឋាន​ទិន្នន័យ។"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"មិន​មាន​ទំនាក់​ទំនង​ដើម្បី​នាំចេញ​ទេ។ ប្រសិនបើ​អ្នក​ពិតជា​មាន​ទំនាក់ទំនង​នៅ​ក្នុង​ទូរស័ព្ទ​របស់​អ្នក​មែន នោះ​ទំនាក់ទំនង​ទាំងអស់​អាច​បាន​ហាម​មិន​ឲ្យ​នាំចេញ​ដោយ​ក្រុមហ៊ុន​ផ្ដល់​ទិន្នន័យ​មួយ​ចំនួន។"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"កម្មវិធី​តែង​របស់ vCard មិន​បាន​ចាប់ផ្ដើម​ត្រឹមត្រូវ​ទេ។"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"មិន​អាច​នាំចេញ"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"មិន​បាន​នាំចេញ​ព័ត៌មាន​ទំនាក់ទំនង។\nមូលហេតុ៖ \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"ការ​នាំចូល <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"មិន​អាច​អាន​ទិន្នន័យ vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"បាន​បោះបង់​ការ​អាន​ទិន្នន័យ vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"បាន​បញ្ចប់​ការ​នាំចូល vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"បាន​បោះបង់​ការ​នាំចូល <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"នឹង​នាំចូល <xliff:g id="FILENAME">%s</xliff:g> ក្នុង​ពេល​ឆាប់ៗ។"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"នឹង​នាំចូល​ឯកសារ​ក្នុង​ពេល​ឆាប់ៗ។"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"បាន​បដិសេធ​សំណើ​នាំចូល vCard ។ សូម​ព្យាយាម​ម្ដងទៀត​នៅ​ពេល​ក្រោយ​។"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"នឹង​នាំចេញ <xliff:g id="FILENAME">%s</xliff:g> ក្នុង​ពេល​ឆាប់ៗ។"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"នឺងនាំចេញឯកសារក្នុងពេលឆាប់ៗ។"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"ទំនាក់ទំនងនឹងត្រូវបាននាំចេញក្នុងពេលបន្តិចទៀតនេះ"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"បាន​បដិសេធ​សំណើ​នាំចេញ vCard ។ សូម​ព្យាយាម​ម្ដងទៀត​នៅ​ពេល​ក្រោយ​។"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"ទំនាក់ទំនង"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"ការ​ផ្ទុក vCard(s​) ទៅកាន់​ឧបករណ៍​ផ្ទុក​បណ្ដោះអាសន្ន​មូលដ្ឋាន។ ការ​នាំ​ចូល​ពិតប្រាកដ​នឹង​ចាប់ផ្ដើម​ក្នុង​ពេល​ឆាប់ៗ។"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"មិន​អាច​នាំចូល vCard ។"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"ទំនាក់ទំនង​ដែល​បាន​ទទួល​តាម NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"នាំចេញ​ទំនាក់ទំនង?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ការ​ផ្ទុក​ក្នុង​ឃ្លាំង​សម្ងាត់"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"កំពុង​នាំចូល <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>៖ <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"នាំចេញទៅឯកសារ .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"តម្រៀប​តាម"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"នាម​ខ្លួន"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"នាមត្រកូល"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"ទ្រង់ទ្រាយ​ឈ្មោះ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"នាម​ខ្លួន​មុន"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"នាមត្រកូល​មុន"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"គណនី"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"គណនីលំនាំដើមសម្រាប់ទំនាក់ទំនងថ្មី"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"ធ្វើសមកាលកម្មទិន្នន័យមេតា [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"ធ្វើសមកាលកម្មទិន្នន័យមេតា"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ព័ត៌មាន​ខ្ញុំ"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"រៀបចំទម្រង់របស់អ្នក"</string>
+    <string name="setting_about" msgid="3926137653588942297">"អំពីទំនាក់ទំនង"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ការកំណត់"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"ចែករំលែក​ទំនាក់ទំនង​ដែល​អាច​មើល​ឃើញ"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"បានបរាជ័យក្នុងការចែករំលែកទំនាក់ទំនងដែលអាចមើលឃើញ។"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ចែករំលែកទំនាក់ទំនងសំណព្វចិត្ត"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"ចែករំលែកទំនាក់ទំនងទាំងអស់"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"បរាជ័យក្នុងការចែករំលែកទំនាក់ទំនង"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"នាំចេញ/នាំចូល​ទំនាក់ទំនង"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"នាំចូល​ទំនាក់ទំនង"</string>
+    <string name="share_error" msgid="665756457151793108">"ទំនាក់ទំនង​នេះ​មិន​អាច​ចែករំលែក​បាន​ទេ។"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"មិនមានទំនាក់ទំនងដើម្បីចែករំលែកទេ"</string>
+    <string name="menu_search" msgid="7464453023659824700">"ស្វែងរក"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ទំនាក់ទំនង​ដែល​ត្រូវ​បង្ហាញ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ទំនាក់ទំនង​ដែល​ត្រូវ​បង្ហាញ"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"កំណត់ទិដ្ឋភាពផ្ទាល់ខ្លួន"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"រក្សាទុក"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"ស្វែងរក​ទំនាក់ទំនង"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"សំណព្វ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"មិន​មាន​ទំនាក់ទំនង។"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"សម្អាត​ញឹកញាប់"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"ជ្រើស​ស៊ី​ម​កាត"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"គ្រប់គ្រងគណនី"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"នាំចេញ/នាំចូល"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"លេខ​ដែល​ទប់ស្កាត់"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"តាមរយៈ <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> តាមរយៈ <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"បញ្ឈប់​ការ​ស្វែងរក"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"សម្អាត​ការ​ស្វែងរក"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"ជម្រើស​បង្ហាញ​ទំនាក់ទំនង"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"គណនី"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ប្រើ​វា​សម្រាប់​ការ​ហៅ​ជា​និច្ច"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ហៅ​ជាមួយ"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ការហៅព្រមជាមួយចំណាំ"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"វាយបញ្ចូលចំណាំដែលត្រូវផ្ញើជាមួយការហៅទូរស័ព្ទ ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ផ្ញើ &amp; ហៅទូរស័ព្ទ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. ធាតុមិនបានអាន <xliff:g id="COUNT_3">%2$d</xliff:g> </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. ធាតុមិនបានអាន <xliff:g id="COUNT_1">%2$d</xliff:g> </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"កំណែ​បង្កើត"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"អាជ្ញាប័ណ្ណប្រភពកូដចំហ"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"សេចក្ដីលម្អិតអាជ្ញាប័ណ្ណសម្រាប់កម្មវិធីប្រភពកូដចំហ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"គោលការណ៍ភាពឯកជន"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"លក្ខខណ្ឌប្រើប្រាស់"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"អាជ្ញាប័ណ្ណប្រភពកូដចំហ"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"បាន​បរាជ័យ​ក្នុង​ការ​បើក URL។"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"បានពិនិត្យ <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"មិនបានពិនិត្យ <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ធ្វើការហៅជាវីដេអូ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"លុប"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"សញ្ញា​ចុចបី"</string>
+</resources>
diff --git a/res-common/values-kn-rIN-sw600dp/strings.xml b/res-common/values-kn-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..e22cb45
--- /dev/null
+++ b/res-common/values-kn-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ಸಾಧನ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ಯಾವುದೇ ರಫ್ತುಮಾಡಿದ ಸಂಪರ್ಕಗಳಿಲ್ಲ. ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್‌‌ನಲ್ಲಿ ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಟ್ಯಾಬ್ಲೆಟ್‌‌‌‌ನಿಂದ ರಫ್ತು ಮಾಡಲಿರುವ ಸಂಪರ್ಕಗಳಿಗೆ ಕೆಲವು ಡೇಟಾ ಪೂರೈಕೆದಾರರು ಅನುಮತಿ ನೀಡದಿರಬಹುದು."</string>
+</resources>
diff --git a/res-common/values-kn-rIN/strings.xml b/res-common/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..78e675d
--- /dev/null
+++ b/res-common/values-kn-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"ಪಠ್ಯವನ್ನು ನಕಲಿಸಲಾಗಿದೆ"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಿ"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_home" msgid="1479549630992276827">"ಮನೆಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"ಮೊಬೈಲ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_work" msgid="8299062439076337075">"ಕೆಲಸದ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"ಕೆಲಸದ ಫ್ಯಾಕ್ಸ್‌‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ಮನೆಯ ಫ್ಯಾಕ್ಸ್‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ಪೇಜರ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_other" msgid="4472141328347894937">"ಕರೆ ಮಾಡು"</string>
+    <string name="call_callback" msgid="687494744634190411">"ಕಾಲ್‌ಬ್ಯಾಕ್‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_car" msgid="9078083109758282133">"ಕಾರ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ಕಂಪನಿಯ ಪ್ರಮುಖ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_main" msgid="4640261071249938558">"ಮುಖ್ಯ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ಫ್ಯಾಕ್ಸ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ರೇಡಿಯೋಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ಟೆಲೆಕ್ಸ್‌‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"ಕೆಲಸದ ಮೊಬೈಲ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ಕೆಲಸದ ಪೇಜರ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ಕರೆ ಮಾಡಿ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ನಿವಾಸಕ್ಕೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ಮೊಬೈಲ್‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ಕೆಲಸದ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ಕೆಲಸದ ಫ್ಯಾಕ್ಸ್‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ಮನೆಯ ಫ್ಯಾಕ್ಸ್‌‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ಪೇಜರ್‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_other" msgid="910895193552957097">"ಪಠ್ಯ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ಕಾಲ್‌ಬ್ಯಾಕ್‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ಕಾರ್‌ನ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ಕಂಪನಿಯ ಮುಖ್ಯ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ಮುಖ್ಯ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ಫ್ಯಾಕ್ಸ್‌‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ರೇಡಿಯೋ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ಟೆಲೆಕ್ಸ್‌‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ಕೆಲಸದದ ಮೊಬೈಲ್‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ಕೆಲಸದ ಪೇಜರ್‌‌ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> ಗೆ ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS ಸಂದೇಶ ಮಾಡಿ"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ಸಂದೇಶ ಕಳುಹಿಸಿ)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದನ್ನು ತೆರುವುಗೊಳಿಸುವುದೇ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"ಸಂಪರ್ಕಗಳು ಮತ್ತು ಫೋನ್‌ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಪದೇ ಪದೇ ಸಂಪರ್ಕಪಡಿಸಿರುವ ಪಟ್ಟಿಯನ್ನು ನೀವು ತೆರುವುಗೊಳಿಸುತ್ತೀರಿ ಮತ್ತು ಮೊದಲಿನಿಂದ ನಿಮ್ಮ ವಿಳಾಸ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ತಿಳಿಯಲು ಇಮೇಲ್‌ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಒತ್ತಾಯಿಸಿ."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದನ್ನು ತೆರುವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="status_available" msgid="4832569677396634846">"ಲಭ್ಯವಿದೆ"</string>
+    <string name="status_away" msgid="6267905184545881094">"ದೂರ"</string>
+    <string name="status_busy" msgid="7111912905211403545">"ಕಾರ್ಯನಿರತ"</string>
+    <string name="contactsList" msgid="7140022347217602605">"ಸಂಪರ್ಕಗಳು"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"ಇತರೆ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ಡೈರೆಕ್ಟರಿ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ಕೆಲಸದ ಡೈರೆಕ್ಟರಿ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"ಹುಡುಕಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> ಗಿಂತ ಹೆಚ್ಚಾಗಿ ಕಂಡುಬಂದಿದೆ."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ಕಂಡುಬಂದಿದೆ</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ಕಂಡುಬಂದಿದೆ</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> ಇವರಿಗಾಗಿ ತಕ್ಷಣದ ಸಂಪರ್ಕ"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ಯಾವುದೇ ಹೆಸರಿಲ್ಲ)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದು"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"ಸಂಪರ್ಕವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ಫೋನ್‌ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಎಲ್ಲ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"ನವೀಕರಣಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="account_phone" msgid="325867897209266837">"ಸಾಧನ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"ಹೆಸರು"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ಅಡ್ಡಹೆಸರು"</string>
+    <string name="full_name" msgid="885420216812981202">"ಹೆಸರು"</string>
+    <string name="name_given" msgid="4153709115654909377">"ಮೊದಲ ಹೆಸರು"</string>
+    <string name="name_family" msgid="5317387657540738981">"ಕೊನೆಯ ಹೆಸರು"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"ಹೆಸರಿನ ಪೂರ್ವಪ್ರತ್ಯಯ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"ಮಧ್ಯದ ಹೆಸರು"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"ಹೆಸರಿನ ಪ್ರತ್ಯಯ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ಫೋನೆಟಿಕ್‌‌ ಹೆಸರು"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ಫೋನೆಟಿಕ್‌ ಮೊದಲ ಹೆಸರು"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ಫೋನೆಟಿಕ್‌‌ ಮಧ್ಯ ಹೆಸರು"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ಫೋನೆಟಿಕ್‌‌ ಕೊನೆಯ ಹೆಸರು"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ಫೋನ್"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ಇಮೇಲ್"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ವಿಳಾಸ"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ಸಂಘಟನೆ"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ಸಂಬಂಧ"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"ವಿಶೇಷ ದಿನಾಂಕ"</string>
+    <string name="sms" msgid="8086289395154598654">"ಪಠ್ಯ ಸಂದೇಶ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ವಿಳಾಸ"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"ಕಂಪನಿ"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ಶೀರ್ಷಿಕೆ"</string>
+    <string name="label_notes" msgid="3997277594846722699">"ಟಿಪ್ಪಣಿಗಳು"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ವೆಬ್‌ಸೈಟ್"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ಲೇಬಲ್‌ಗಳು"</string>
+    <string name="email_home" msgid="2230967805906450693">"ಮನೆಗೆ ಇಮೇಲ್‌ ಮಾಡಿ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ಮೊಬೈಲ್‌‌ಗೆ ಇಮೇಲ್‌ ಮಾಡಿ"</string>
+    <string name="email_work" msgid="7065971921227432400">"ಕೆಲಸದ ವಿಳಾಸಕ್ಕೆ ಇಮೇಲ್‌ ಮಾಡಿ"</string>
+    <string name="email_other" msgid="4601881243553289615">"ಇಮೇಲ್"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> ಇಮೇಲ್‌ ಮಾಡಿ"</string>
+    <string name="email" msgid="5624424151176351591">"ಇಮೇಲ್"</string>
+    <string name="postal_street" msgid="881349814077356134">"ಗಲ್ಲಿ"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO ಬಾಕ್ಸ್‌"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"ನೆರೆಹೊರೆ"</string>
+    <string name="postal_city" msgid="3173008531169519309">"ನಗರ"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ರಾಜ್ಯ"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ಪಿನ್ ಕೋಡ್"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ರಾಷ್ಟ್ರ"</string>
+    <string name="map_home" msgid="1221397355014741634">"ಮನೆಯ ವಿಳಾಸವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="map_work" msgid="9015981646907637207">"ಕೆಲಸದ ವಿಳಾಸವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="map_other" msgid="55098598855607997">"ವಿಳಾಸವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> ವಿಳಾಸವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ"</string>
+    <string name="chat" msgid="6297650784873558837">"ಚಾಟ್"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ಅಳಿಸಿ"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"ಹೆಸರಿನ ಕ್ಷೇತ್ರಗಳನ್ನು ವಿಸ್ತರಿಸಿ ಅಥವಾ ಸಂಕುಚಿಸಿ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ಫೊನೆಟಿಕ್ ಹೆಸರಿನ ಕ್ಷೇತ್ರಗಳನ್ನು ವಿಸ್ತರಿಸಿ ಅಥವಾ ಸಂಕುಚಿಸಿ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ನಕ್ಷತ್ರ ಹಾಕಿರುವುದು"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"ಕಸ್ಟಮೈಜ್‌"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"ಸಂಪರ್ಕ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"ಇತರ ಎಲ್ಲ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"ಸಿಂಕ್‌ ಗುಂಪನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"ಸಿಂಕ್‌ ಗುಂಪನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"ಇನ್ನಷ್ಟು ಗುಂಪುಗಳು…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"ಸಿಂಕ್‌ನಿಂದ \"<xliff:g id="GROUP">%s</xliff:g>\" ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಿಂಕ್‌ನಿಂದ ಯಾವುದೇ ಗುಂಪು ಮಾಡದಿರುವ ಸಂಪರ್ಕಗಳನ್ನು ಸಹ ತೆಗೆದುಹಾಕುತ್ತದೆ."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳನ್ನು ಉಳಿಸಲಾಗುತ್ತಿದೆ..."</string>
+    <string name="menu_done" msgid="32470053723443112">"ಮುಗಿದಿದೆ"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"ರದ್ದುಮಾಡು"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"ಕಸ್ಟಮೈಸ್ ಮಾಡಿದ ವೀಕ್ಷಣೆ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"ಆಮದು ಮಾಡಲಾದ ಸಂಪರ್ಕಗಳನ್ನು ಇಲ್ಲಿ ಉಳಿಸಿ:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಿಂದ ಆಮದು ಮಾಡಿ"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> SIM ನಿಂದ ಆಮದು ಮಾಡಿ"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> SIM ನಿಂದ ಆಮದು ಮಾಡಿ"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ಫೈಲ್‌ನಿಂದ ಆಮದು ಮಾಡಿ"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> ಆಮದು ಮಾಡುವುದನ್ನು ರದ್ದುಗೊಳಿಸುವುದೇ?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> ಅನ್ನು ರಫ್ತು ಮಾಡುವುದನ್ನು ರದ್ದುಗೊಳಿಸುವುದೇ?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard ಆಮದು/ರಫ್ತು ಮಾಡುವುದನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"ಅಜ್ಞಾತ ದೋಷ."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ರಫ್ತುದಾರರನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ಯಾವುದೇ ರಫ್ತುಮಾಡಬಹುದಾದ ಸಂಪರ್ಕವಿಲ್ಲ."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"ನೀವು ಅಗತ್ಯವಿರುವ ಅನುಮತಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿರುವಿರಿ."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"ರಫ್ತು ಮಾಡುವ ಸಂದರ್ಭದಲ್ಲಿ ದೋಷವೊಂದು ಕಂಡುಬಂದಿದೆ: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ಅಗತ್ಯವಿರುವ ಫೈಲ್‌‌ ಹೆಸರು ತುಂಬಾ ದೊಡ್ಡದಾಗಿದೆ (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O ದೋಷ"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"ಸಾಕಷ್ಟು ಮೆಮೊರಿ ಇಲ್ಲ. ಫೈಲ್‌ ತುಂಬಾ ದೊಡ್ಡದಾಗಿರಬಹುದು."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ಅನಿರೀಕ್ಷಿತ ಕಾರಣದಿಂದಾಗಿ vCard ಪಾರ್ಸ್ ಮಾಡಲಾಗಲಿಲ್ಲ."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ಸ್ವರೂಪಕ್ಕೆ ಬೆಂಬಲವಿಲ್ಲ."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"ನೀಡಿದ vCard ಫೈಲ್‌(ಗಳ) ಮೆಟಾ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಫೈಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗುವುದಿಲ್ಲ (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> ರಫ್ತು ಮುಗಿದಿದೆ."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"ಸಂಪರ್ಕಗಳ ರಫ್ತು ಮಾಡುವಿಕೆ ಮುಗಿದಿದೆ."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡುವುದನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸಲಾಗಿದೆ, ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅಧಿಸೂಚನೆ ಕ್ಲಿಕ್ ಮಾಡಿ."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> ರಫ್ತು ಮಾಡುವುದನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"ಸಂಪರ್ಕ ಡೇಟಾವನ್ನು ರಫ್ತುಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"ಸಂಪರ್ಕ ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ಡೇಟಾಬೇಸ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ಯಾವುದೇ ರಫ್ತುಮಾಡಿದ ಸಂಪರ್ಕಗಳಿಲ್ಲ. ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿ ನೀವು ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಫೋನ್‌ನಿಂದ ರಫ್ತು ಮಾಡಲಿರುವ ಸಂಪರ್ಕಗಳಿಗೆ ಕೆಲವು ಡೇಟಾ ಪೂರೈಕೆದಾರರು ಅನುಮತಿ ನೀಡದಿರಬಹುದು."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard ಸಂಯೋಜಕ ಸರಿಯಾಗಿ ಪ್ರಾರಂಭವಾಗಿಲ್ಲ."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ರಫ್ತು ಮಾಡಲಾಗುವುದಿಲ್ಲ"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"ಸಂಪರ್ಕ ಡೇಟಾವನ್ನು ರಫ್ತು ಮಾಡಲಿಲ್ಲ.\nಕಾರಣ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> ಆಮದು ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard ಡೇಟಾವನ್ನು ಓದಲಾಗಲಿಲ್ಲ"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard ಡೇಟಾ ಓದುವಿಕೆ ರದ್ದಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> vCard ಆಮದು ಮುಕ್ತಾಯಗೊಂಡಿದೆ"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> ಆಮದು ರದ್ದುಪಡಿಸಲಾಗಿದೆ"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ಅನ್ನು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ಫೈಲ್‌ ಅನ್ನು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard ಆಮದು ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ರಫ್ತು ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ಫೈಲ್‌ ಅನ್ನು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ರಪ್ತು ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"ಸಂಪರ್ಕಗಳನ್ನು ಶೀಘ್ರದಲ್ಲೇ ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard ರಫ್ತು ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"ಸಂಪರ್ಕ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(ಗಳು) ಅನ್ನು ಸ್ಥಳೀಯ ತಾತ್ಕಾಲಿಕ ಸಂಗ್ರಹಣೆಗೆ ಸಂಗ್ರಹ ಮಾಡಲಾಗುತ್ತಿದೆ. ನಿಜವಾದ ಆಮದು ಶೀಘ್ರದಲ್ಲೇ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard ಆಮದು ಮಾಡಲಾಗಿಲ್ಲ."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC ಮೂಲಕ ಸ್ವೀಕರಿಸಲಾದ ಸಂಪರ್ಕ"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"ಸಂಪರ್ಕಗಳನ್ನು ರವಾನಿಸುವುದೇ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ಸಂಗ್ರಹಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> ಆಮದು ಮಾಡಲಾಗುತ್ತಿದೆ: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ಫೈಲ್‌ಗೆ ರಫ್ತು ಮಾಡಿ"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ಈ ಪ್ರಕಾರ ವಿಂಗಡಿಸು"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"ಮೊದಲ ಹೆಸರು"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"ಕೊನೆಯ ಹೆಸರು"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"ಹೆಸರಿನ ಫಾರ್ಮ್ಯಾಟ್‌"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ಮೊದಲ ಹೆಸರು ಮೊದಲು"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"ಕೊನೆಯ ಹೆಸರು ಮೊದಲು"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"ಖಾತೆಗಳು"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"ಹೊಸ ಸಂಪರ್ಕಗಳಿಗೆ ಡಿಫಾಲ್ಟ್‌ ಖಾತೆ"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"ಸಂಪರ್ಕ ಮೆಟಾಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಿ [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"ಸಂಪರ್ಕ ಮೆಟಾಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಿ"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ನನ್ನ ಮಾಹಿತಿ"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಹೊಂದಿಸಿ"</string>
+    <string name="setting_about" msgid="3926137653588942297">"ಸಂಪರ್ಕಗಳ ಕುರಿತು"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"ಗೋಚರಿಸುವ ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"ಗೋಚರಿಸುವ ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ಮೆಚ್ಚಿನ ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"ಎಲ್ಲ ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಿ"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"ಸಂಪರ್ಕಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು/ರವಾನೆ ಮಾಡಿ"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಿ"</string>
+    <string name="share_error" msgid="665756457151793108">"ಈ ಸಂಪರ್ಕವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"ಹಂಚಿಕೊಳ್ಳಲು ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ."</string>
+    <string name="menu_search" msgid="7464453023659824700">"ಹುಡುಕು"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ಪ್ರದರ್ಶನ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ಪ್ರದರ್ಶನ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"ಕಸ್ಟಮೈಸ್ ಮಾಡಿದ ವೀಕ್ಷಣೆಯನ್ನು ವಿವರಿಸಿ"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"ಉಳಿಸು"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"ಮೆಚ್ಚಿನವುಗಳು"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"ಪುನರಾವರ್ತನೆಗಳನ್ನು ತೆರುವುಗೊಳಿಸಿ"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"ಸಿಮ್‌ ಕಾರ್ಡ್ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"ಖಾತೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ಆಮದು/ರವಾನೆ ಮಾಡು"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> ಮೂಲಕ"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="SOURCE">%2$s</xliff:g> ಮೂಲಕ"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ಹುಡುಕಾಟವನ್ನು ನಿಲ್ಲಿಸಿ"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ಹುಡುಕಾಟವನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"ಸಂಪರ್ಕ ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"ಖಾತೆ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ಕರೆಗಳನ್ನು ಮಾಡಲು ಯಾವಾಗಲೂ ಇದನ್ನು ಬಳಸಿ"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ಇದರೊಂದಿಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ಟಿಪ್ಪಣಿಯೊಂದಿಗೆ ಕರೆ"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"ಕರೆ ಕಳುಹಿಸಲು ಟಿಪ್ಪಣಿಯನ್ನು ಟೈಪ್ ಮಾಡಿ ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ಕಳುಹಿಸು ಮತ್ತು ಕರೆಮಾಡು"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ಓದದಿರುವ ಐಟಂಗಳು. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ಓದದಿರುವ ಐಟಂಗಳು. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"ಬಿಲ್ಡ್ ಆವೃತ್ತಿ"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ಮುಕ್ತ ಮೂಲ ಪರವಾನಗಿಗಳು"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ಮುಕ್ತ ಮೂಲ ಸಾಫ್ಟ್‌ವೇರ್‌ಗಾಗಿ ಪರವಾನಗಿ ವಿವರಗಳು"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"ಗೌಪ್ಯತೆ ನೀತಿ"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"ಸೇವಾ ನಿಯಮಗಳು"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ತೆರೆದ ಮೂಲ ಪರವಾನಗಿಗಳು"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url ತೆರೆಯಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ಪರಿಶೀಲಿಸಲಾಗಿದೆ"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ಪರಿಶೀಲಿಸಲಾಗಿಲ್ಲ"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ಅಳಿಸಿ"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"ಎಲಿಪ್ಸಿಸ್"</string>
+</resources>
diff --git a/res-common/values-ko-sw600dp/strings.xml b/res-common/values-ko-sw600dp/strings.xml
new file mode 100644
index 0000000..531ebef
--- /dev/null
+++ b/res-common/values-ko-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"기기"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"내보낼 수 있는 연락처가 없습니다. 태블릿에 연락처가 있다면 일부 데이터 제공업체에서 연락처를 태블릿에서 내보내지 못하도록 했기 때문일 수 있습니다."</string>
+</resources>
diff --git a/res-common/values-ko/donottranslate_config.xml b/res-common/values-ko/donottranslate_config.xml
new file mode 100644
index 0000000..14cdd4d
--- /dev/null
+++ b/res-common/values-ko/donottranslate_config.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+
+<resources>
+    <!-- If true, an option is shown in Display Options UI to choose a sort order -->
+    <bool name="config_sort_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_sort_order_primary">false</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a name display order -->
+    <bool name="config_display_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_display_order_primary">false</bool>
+
+    <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
+    <bool name="config_editor_field_order_primary">false</bool>
+</resources>
diff --git a/res-common/values-ko/strings.xml b/res-common/values-ko/strings.xml
new file mode 100644
index 0000000..8e53194
--- /dev/null
+++ b/res-common/values-ko/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"텍스트 복사됨"</string>
+    <string name="copy_text" msgid="3424081789297978355">"클립보드에 복사"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g>(으)로 전화걸기"</string>
+    <string name="call_home" msgid="1479549630992276827">"집으로 전화걸기"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"휴대전화로 전화걸기"</string>
+    <string name="call_work" msgid="8299062439076337075">"직장으로 전화걸기"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"직장 팩스로 전화걸기"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"집 팩스로 전화걸기"</string>
+    <string name="call_pager" msgid="3038080882899955112">"호출기로 전화걸기"</string>
+    <string name="call_other" msgid="4472141328347894937">"전화걸기"</string>
+    <string name="call_callback" msgid="687494744634190411">"콜백 번호로 전화걸기"</string>
+    <string name="call_car" msgid="9078083109758282133">"카폰으로 전화걸기"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"직장 기본전화로 전화걸기"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN으로 전화걸기"</string>
+    <string name="call_main" msgid="4640261071249938558">"기본전화로 전화걸기"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"팩스로 전화걸기"</string>
+    <string name="call_radio" msgid="9055749313292712021">"무선통신으로 전화걸기"</string>
+    <string name="call_telex" msgid="2909886619224843563">"텔렉스로 전화걸기"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD로 전화걸기"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"직장 휴대전화로 전화걸기"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"직장 호출기로 전화 걸기"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g>(으)로 전화걸기"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS로 전화걸기"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g>(전화)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g>에 문자 보내기"</string>
+    <string name="sms_home" msgid="7765831490534280540">"집으로 문자 보내기"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"휴대전화로 문자 보내기"</string>
+    <string name="sms_work" msgid="3910570578912367742">"직장으로 문자 보내기"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"직장 팩스로 문자 보내기"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"집 팩스로 문자 보내기"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"호출기로 문자 보내기"</string>
+    <string name="sms_other" msgid="910895193552957097">"문자 보내기"</string>
+    <string name="sms_callback" msgid="728414485478941361">"콜백 번호로 문자 보내기"</string>
+    <string name="sms_car" msgid="8543669230270954512">"카폰으로 문자 보내기"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"직장 기본전화로 문자 보내기"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN에 문자 보내기"</string>
+    <string name="sms_main" msgid="6815987840926184815">"기본전화로 문자 보내기"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"팩스로 문자 보내기"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"무선통신으로 문자 보내기"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"텔렉스로 문자 보내기"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD에 문자 보내기"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"직장 휴대전화로 문자 보내기"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"직장 호출기로 문자 보내기"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g>(으)로 문자 보내기"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS로 문자 보내기"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g>(메시지)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"화상 통화하기"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"자주 연락하는 사람들 목록을 삭제하시겠습니까?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"주소록 및 휴대전화 앱에서 자주 연락하는 사람의 목록을 삭제하고 이메일 앱이 주소록 환경설정을 처음부터 다시 반영하도록 합니다."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"자주 연락하는 사람들 목록을 삭제하는 중…"</string>
+    <string name="status_available" msgid="4832569677396634846">"온라인"</string>
+    <string name="status_away" msgid="6267905184545881094">"자리 비움"</string>
+    <string name="status_busy" msgid="7111912905211403545">"다른 용무 중"</string>
+    <string name="contactsList" msgid="7140022347217602605">"주소록"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"기타"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"디렉토리"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"직장 디렉토리"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"모든 주소록"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"검색 중…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>개 이상 찾았습니다."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"연락처 없음"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>개 찾음</item>
+      <item quantity="one">1개 찾음</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g>님의 빠른 주소록"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(이름 없음)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"자주 연락하는 사람들"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"연락처 보기"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"전화번호가 포함된 모든 연락처"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"직장 프로필 연락처"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"업데이트 보기"</string>
+    <string name="account_phone" msgid="325867897209266837">"기기"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"이름"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"닉네임"</string>
+    <string name="full_name" msgid="885420216812981202">"이름"</string>
+    <string name="name_given" msgid="4153709115654909377">"이름"</string>
+    <string name="name_family" msgid="5317387657540738981">"성"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"경칭"</string>
+    <string name="name_middle" msgid="3951610314424632183">"중간 이름"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"이름 접미어"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"이름(소리나는 대로)"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"이름(소리나는 대로)"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"중간 이름(소리나는 대로)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"성(소리나는 대로)"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"전화"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"이메일"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"주소"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"메신저"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"조직"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"관계"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"특별한 날짜"</string>
+    <string name="sms" msgid="8086289395154598654">"문자 메시지"</string>
+    <string name="postal_address" msgid="7692926530081579786">"주소"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"회사"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"직책"</string>
+    <string name="label_notes" msgid="3997277594846722699">"메모"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"웹사이트"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"라벨"</string>
+    <string name="email_home" msgid="2230967805906450693">"개인 이메일 주소로 이메일 보내기"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"모바일로 이메일 보내기"</string>
+    <string name="email_work" msgid="7065971921227432400">"직장으로 이메일 보내기"</string>
+    <string name="email_other" msgid="4601881243553289615">"이메일 보내기"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g>에 이메일 보내기"</string>
+    <string name="email" msgid="5624424151176351591">"이메일"</string>
+    <string name="postal_street" msgid="881349814077356134">"도로명"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"사서함"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"인근 지역"</string>
+    <string name="postal_city" msgid="3173008531169519309">"시"</string>
+    <string name="postal_region" msgid="1695206048198921115">"도"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"우편번호"</string>
+    <string name="postal_country" msgid="3988452247038791892">"국가"</string>
+    <string name="map_home" msgid="1221397355014741634">"집 주소 보기"</string>
+    <string name="map_work" msgid="9015981646907637207">"직장 주소 보기"</string>
+    <string name="map_other" msgid="55098598855607997">"주소 보기"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> 주소 보기"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM으로 채팅"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live로 채팅"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo로 채팅"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype로 채팅"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ로 채팅"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google 토크로 채팅"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ로 채팅"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber로 채팅"</string>
+    <string name="chat" msgid="6297650784873558837">"채팅"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"삭제"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"이름 입력란 펼치기/접기"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"이름(소리나는 대로) 입력란 펼치기 또는 접기"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"모든 주소록"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"별표"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"맞춤설정"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"연락처"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"다른 모든 주소록"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"모든 주소록"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"동기화 그룹 삭제"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"동기화 그룹 추가"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"그룹 더보기..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\'<xliff:g id="GROUP">%s</xliff:g>\'을(를) 동기화에서 제거하면 그룹화되지 않은 연락처도 동기화에서 제거됩니다."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"표시 옵션 저장 중..."</string>
+    <string name="menu_done" msgid="32470053723443112">"완료"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"취소"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"맞춤설정 보기"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"가져온 주소록을 저장할 계정:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM 카드에서 가져오기"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>에서 가져오기"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>에서 가져오기"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".VCF 파일에서 가져오기"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> 가져오기를 취소하시겠습니까?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기를 취소하시겠습니까?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard 가져오기/내보내기를 취소하지 못했습니다."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"알 수 없는 오류입니다."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\'<xliff:g id="FILE_NAME">%s</xliff:g>\'을(를) 열지 못했습니다. 이유: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"내보내기를 시작하지 못했습니다. 이유: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"내보낼 수 있는 연락처가 없습니다."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"필수 권한을 사용 중지했습니다."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"내보내는 중에 오류가 발생했습니다. 이유: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"필수 파일 이름이 너무 깁니다(\'<xliff:g id="FILENAME">%s</xliff:g>\')."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O 오류"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"메모리가 부족합니다. 파일이 너무 크기 때문일 수 있습니다."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"예기치 못한 이유로 인해 vCard를 파싱하지 못했습니다."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"지원되지 않는 형식입니다."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"지정한 vCard 파일에 대한 메타 정보를 수집하지 못했습니다."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"하나 이상의 파일을 가져오지 못했습니다(%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기 완료됨"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"연락처 내보내기 완료"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"연락처 내보내기가 끝나면 알림을 클릭하여 연락처를 공유하세요."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"연락처를 공유하려면 탭하세요."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기 취소됨"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"연락처 데이터 내보내기"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"연락처 데이터를 내보내는 중입니다."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"데이터베이스 정보를 가져오지 못했습니다."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"내보낼 수 있는 연락처가 없습니다. 휴대전화에 연락처가 있다면 일부 데이터 제공업체에서 연락처를 휴대전화에서 내보내지 못하도록 했기 때문일 수 있습니다."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard 작성기가 제대로 시작되지 않았습니다."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"내보내기 실패"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"주소록 데이터를 내보내지 못했습니다.\n(이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> 가져오는 중"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard 데이터를 읽지 못함"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard 데이터 읽기 취소"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> vCard 가져오기 완료됨"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> 가져오기 취소됨"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 곧 가져옵니다."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"파일을 곧 가져옵니다."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard 가져오기 요청이 거부되었습니다. 나중에 다시 시도해 주세요."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 곧 내보냅니다."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"파일을 곧 내보냅니다."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"곧 연락처를 내보냅니다."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard 내보내기 요청이 거부되었습니다. 나중에 다시 시도해 주세요."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"연락처"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard를 로컬 임시 저장공간에 캐시하는 중입니다. 곧 가져오기가 시작됩니다."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard를 가져오지 못했습니다."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC를 통해 받은 연락처"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"주소록을 내보내시겠습니까?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"캐시"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> 가져오는 중: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".VCF 파일로 내보내기"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"정렬 기준:"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"이름"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"성"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"이름 형식"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"이름 먼저"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"성 먼저"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"계정"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"새 연락처에 대한 기본 계정"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"연락처 메타데이터 동기화 [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"연락처 메타데이터 동기화"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"내 정보"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"프로필 설정"</string>
+    <string name="setting_about" msgid="3926137653588942297">"주소록 정보"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"설정"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"표시되는 연락처 모두 공유"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"표시되는 연락처를 공유하지 못했습니다."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"자주 사용하는 연락처 공유"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"모든 연락처 공유"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"연락처를 공유할 수 없습니다."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"주소록 가져오기/내보내기"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"주소록 가져오기"</string>
+    <string name="share_error" msgid="665756457151793108">"연락처를 공유할 수 없습니다."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"공유할 연락처가 없습니다."</string>
+    <string name="menu_search" msgid="7464453023659824700">"검색"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"표시할 연락처"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"표시할 연락처"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"맞춤설정 보기 정의"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"저장"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"연락처 검색"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"즐겨찾기"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"연락처가 없습니다."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"자주 연락하는 사람 목록 삭제"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM 카드 선택"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"계정 관리"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"가져오기/내보내기"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"차단된 번호"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"출처: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>(출처: <xliff:g id="SOURCE">%2$s</xliff:g>)"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"검색 중지"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"검색창 지우기"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"연락처 표시 옵션"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"계정"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"통화에 항상 사용"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"통화에 사용할 SIM"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"메모가 포함된 통화"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"통화에 함께 전송할 메모를 입력하세요..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"보내기 및 통화"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. 읽지 않은 항목 <xliff:g id="COUNT_3">%2$d</xliff:g>개 </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. 읽지 않은 항목 <xliff:g id="COUNT_1">%2$d</xliff:g>개 </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"빌드 버전"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"오픈소스 라이선스"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"오픈소스 소프트웨어에 대한 라이선스 세부정보"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"개인정보취급방침"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"서비스 약관"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"오픈소스 라이선스"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"URL을 열지 못했습니다."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> 선택함"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> 선택 안함"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"화상 통화 걸기"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"삭제"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"생략 기호"</string>
+</resources>
diff --git a/res-common/values-ky-rKG-sw600dp/strings.xml b/res-common/values-ky-rKG-sw600dp/strings.xml
new file mode 100644
index 0000000..f40d62e
--- /dev/null
+++ b/res-common/values-ky-rKG-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Түзмөк"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Экспорттоло турган байланыштар жок. Эгер байланыштар планшетиңизде болсо, айрым дайындарды камсыздоочулар байланыштарды планшеттен экспорттоого жол бербеши мүмкүн."</string>
+</resources>
diff --git a/res-common/values-ky-rKG/strings.xml b/res-common/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..746570f
--- /dev/null
+++ b/res-common/values-ky-rKG/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текст көчүрүлдү"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Буферге көчүрүү"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Чалуу <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Үйгө чалуу"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Мобилге чалуу"</string>
+    <string name="call_work" msgid="8299062439076337075">"Жумушка чалуу"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Жумуш факсына чалуу"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Үй факсына чалуу"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Пейжерге чалуу"</string>
+    <string name="call_other" msgid="4472141328347894937">"Чалуу"</string>
+    <string name="call_callback" msgid="687494744634190411">"Кайра чалуу номуруна чалуу"</string>
+    <string name="call_car" msgid="9078083109758282133">"Автомобилге чалуу"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Компаниянын негизгисине чалуу"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN телефонго чалуу"</string>
+    <string name="call_main" msgid="4640261071249938558">"Негизгисине чалуу"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Факска чалуу"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Радио телефонго чалуу"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Телекске чалуу"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD чалуу"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Жумушчу мобилге чалуу"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Жумушчу пейжерге чалуу"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Чалуу <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS номурна чалуу"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Чалуу)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Үйгө SMS жөнөтүү"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Мобилге SMS жөнөтүү"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Жумушка SMS жөнөтүү"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Жумуш факсына SMS жөнөтүү"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Үй факсына SMS жөнөтүү"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Пейжерге SMS жөнөтүү"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS жөнөтүү"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Кайра чалууну номуруна SMS"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Автомобилге текст жөнөтүү"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Компаниянын негизгисине SMS жөнөтүү"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN телефонуна SMS жөнөтүү"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Негизгиге SMS жөнөтүү"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Факска SMS жөнөтүү"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Радио телефонго SMS жөнөтүү"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Телекске SMS жөнөтүү"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD телефонго SMS жөнөтүү"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Жумушчу мобилге SMS жөнөтүү"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Жумушчу пейжерге SMS жөнөтүү"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Текст жөнөтүү <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS телефонго SMS жөнөтүү"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Билдирүү жөнөтүү)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Видео түрүндө чалуу"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Көп чалынгандар тизмеси тазалансынбы?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Байланыштар жана Телефон колдонмолорунан көп байланышкан адамдар тизмесин тазалап, даректүү жеке жөндөөлөр тууралуу билүү үчүн электрондук почта колдонмолорун иштетиңиз."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Көп чалынгандар тизмеси тазаланууда…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Жеткиликтүү"</string>
+    <string name="status_away" msgid="6267905184545881094">"Чыгып кетти"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Бош эмес"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Байланыштар"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Башка"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Директорий"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Жумуш профилиндеги байланыштар китепчеси"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Бардык байланыштар"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Изделүүдө…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> ашык табылды."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Эч бир байланыш жок"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> табылды</item>
+      <item quantity="one">1 табылды</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> үчүн тез байланышуу"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Аты жок)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Көп байланышып турган"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Байланышты карап көрүү"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Телефон номерлери бар бардык байланыштар"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Жумуш профилиндеги байланыштар"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Жаңыртууларды көрүү"</string>
+    <string name="account_phone" msgid="325867897209266837">"Түзмөк"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Аты"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Каймана аты"</string>
+    <string name="full_name" msgid="885420216812981202">"Аты"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ысымы"</string>
+    <string name="name_family" msgid="5317387657540738981">"Фамилиясы"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Атынын префикси"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Атасынын аты"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Атынын суффикси"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Фонетикалык аты"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Ысымы (транскрипция)"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Атасынын аты (транскрипция)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Фамилия (транскрипция)"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефону"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Электрондук почта"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Дареги"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Иштеген жери"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Мамиле"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Өзгөчө күн"</string>
+    <string name="sms" msgid="8086289395154598654">"Текст билдирүүлөрү"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Толук дареги"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Компания"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Кызматы"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Эскертмелер"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Вебсайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Энбелгилер"</string>
+    <string name="email_home" msgid="2230967805906450693">"Үй дарегине эмейлдөө"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Мобилге эмейлдөө"</string>
+    <string name="email_work" msgid="7065971921227432400">"Жумушка эмейлдөө"</string>
+    <string name="email_other" msgid="4601881243553289615">"Электрондук кат жазуу"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> эмейл жөнөтүү"</string>
+    <string name="email" msgid="5624424151176351591">"Email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Көчөсү"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Абонент кутусу"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Району"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Шаары"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Облусу"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Индекси"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Өлкөсү"</string>
+    <string name="map_home" msgid="1221397355014741634">"Үй дарегин көрүү"</string>
+    <string name="map_work" msgid="9015981646907637207">"Жумуш дарегин көрүү"</string>
+    <string name="map_other" msgid="55098598855607997">"Дарегин көрүү"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> дарегин көрүү"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM аркылуу чатташуу"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live аркылуу чатташуу"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo аркылуу чатташуу"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype аркылуу чатташуу"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ аркылуу чатташуу"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk аркылуу чатташуу"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ аркылуу чатташуу"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber аркылуу чатташуу"</string>
+    <string name="chat" msgid="6297650784873558837">"Чат"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"жок кылуу"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Аттар талааларын жаюу же түрүү"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Фонетикалык аталыш талааларын жайып көрсөтүү же жыйыштыруу"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Бардык байланыштар"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Жылдызчаланган"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Ыңгайлаштыруу"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Байланыш"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Бардык башка байланыштар"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Бардык байланыштар"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Синхрондоо тобун жоюу"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Синхрондоштуруу тобуна кошуу"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Дагы топтор…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" тобун синхрондон алып салуу, башка топторго кирбеген байланыштарды дагы синхрондон чыгарып салат."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Көрсөтүү тууралоолору сакталууда…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Даяр"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Жокко чыгаруу"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Ылайыкташтырылган көрүнүш"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Импорттолгон байланыштар төмөнкүгө сакталсын:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM-картадан импорттоо"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g> ичинен импорттоо"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g> ичинен импорттоо"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf файлынан импорттоо"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> импортто токтотулсунбу?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> экспорттоо токтотулсунбу?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard импортоо/экспортоо токтотулбады."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Белгисиз ката."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ача албай жатат: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Экспортчу башталбай жатат: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Экспортко жарактуу байланыш жок."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Керектүү уруксатты өчүрүп койгонсуз."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Экспорттоо учурунда ката кетти: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Талап кылынган файл аты өтө узун (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O катасы"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Эс тутум жетишсиз. Файл өтө чоң окшойт."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Аныкталбаган себептерден улам vCard\'ды талданбай албай жатат."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Бул формат колдоого алынбайт."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Берилген vCard файл(дар)ынын мета маалыматтарын чогултуу мүмкүн болбой жатат."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Бир же эки файл импорттолбой жатат (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> экспорттоо аяктады."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Байланыштар өткөрүлүп бүттү."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Байланыштар өткөрүлүп берилди, байланыштар менен бөлүшүү үчүн эскертмени басыңыз."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Байланыштар менен бөлүшүү үчүн таптап коюңуз."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> экспортто токтотулду."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Байланыш берилиштери экспорттолууда"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Байланыштын дайындары өткөрүлүп берилүүдө."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Берилиштер корунун маалыматтарын алуу мүмкүн эмес."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Экспортко жарактуу байланыштар жок. Эгер байланыштар телефонуңузда болсо, айрым берилиштер камсыздоочулары байланыштарды телефондон экспорттоого жол бербеши мүмкүн."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard түзүүчү туура эмес иштеп баштады."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Экспорттоо мүмкүн эмес"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Байланыш маалыматтары экспорттолгон жок.\nСебеби: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> импорттолууда"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard берилиштерин окуу мүмкүн эмес"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard берилиштерин окуу токтотулду"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> vCard импорттолуп бүттү"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> файлын импорттоо токтотулду"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> жакынкы убакытта импорттолот."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Файл жакынкы убакытта импорттолот."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard импорттоо талабы четке кагылды. Кийинчерээк кайра аракеттениңиз."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> жакынкы убакытта экспорттолот."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Файл бир аздан кийин өткөрүлүп берилет."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Байланыштар жакында экспорттолот."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard экспорттоо талабы четке кагылды. Кийинчерээк кайра аракеттениңиз."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"байланыш"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(дар) жергиликтүү убактылуу жайга топтолууда. Чыныгы импорт жакында башталат."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard импорт кылынган жок."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Байланыш NFC аркылуу алынды"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Байланыштар экспорттолсунбу?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Топтоо"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g> импорттолууда"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf файлга экспорттоо"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Төмөнкү боюнча иреттештирүү"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ысымы"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Фамилиясы"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Ысым форматы"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Биринчи ысымы"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Биринчи фамилиясы"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Каттоо эсептери"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Жаңы байланыштарыңыз үчүн демейки каттоо эсеби"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Байланыш метадайындарын шайкештирүү [БЕТА ПРОГРАММАЛАРДЫ СЫНОО]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Байланыш метадайындарын шайкештирүү"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Менин дайындарым"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Профилди жөндөө"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Байланыштар жөнүндө"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Жөндөөлөр"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Көрүнүктүү байланыштарды бөлүшүү"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Көрүнүктүү байланыштар бөлүшүлбөй койду."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Сүйүктүү байланыштарды бөлүшүү"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Бардык байланыштарды бөлүшүү"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Байланыштар бөлүшүлбөй калды."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Байланыштарды импорттоо/эскорттоо"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Байланыштарды импорттоо"</string>
+    <string name="share_error" msgid="665756457151793108">"Бул байланышты бөлүшүү мүмкүн эмес."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Бөлүшө турган байланыштар жок."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Издөө"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Көрсөтүлүүчү байланыштар"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Көрсөтүлүүчү байланыштар"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Ылайыкташтырылган көрүнүштү аныктоо"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Сактоо"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Байланыштардан издеп көрүңүз"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Тандамалдар"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Эч бир байланыш жок."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Көп чалуулар тизмесин тазалоо"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM карта тандаңыз"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Каттоо эсептерин башкаруу"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Импорттоо/экспорттоо"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Бөгөттөлгөн номерлер"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> аркылуу"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>  <xliff:g id="SOURCE">%2$s</xliff:g> аркылуу"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"издөөнү токтотуу"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Издөөнү тазалоо"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Байланышты көрсөтүү параметрлери"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Каттоо эсеби"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Бул ар дайым чалуулр үчн колдонулсн"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Төмөнкү менен чалуу"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Кыска жазуу менен чалуу"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Чалуу менен жөнөтүлө турган кыска жазууну териңиз …"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ЖӨНӨТҮҮ ЖАНА ЧАЛУУ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> нерсе окула элек. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> нерсе окула элек. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Куралыш версиясы"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Ачык программа уруксаттамалары"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Баштапкы коду ачык программанын уруксаттамасынын чоо-жайы"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Купуялык саясаты"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Тейлөө шарттары"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Ачык программа уруксаттамалары"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url ачылбай калды."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> белгиленди"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> белгиленген жок"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Видео чалуу"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Жок кылуу"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Көп чекит"</string>
+</resources>
diff --git a/res-common/values-land/integers.xml b/res-common/values-land/integers.xml
new file mode 100644
index 0000000..8ddef80
--- /dev/null
+++ b/res-common/values-land/integers.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2012 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>
+    <integer name="contact_tile_column_count_in_favorites">3</integer>
+
+    <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
+    <integer name="snippet_length_before_tokenize">60</integer>
+</resources>
diff --git a/res-common/values-lo-rLA-sw600dp/strings.xml b/res-common/values-lo-rLA-sw600dp/strings.xml
new file mode 100644
index 0000000..ec381e3
--- /dev/null
+++ b/res-common/values-lo-rLA-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ອຸປະກອນ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ສາມາດສົ່ງອອກໄດ້. ຫາກທ່ານມີລາຍຊື່ຜູ້ຕິດຕໍ່ໃນແທັບເລັດຂອງທ່ານ ແຕ່ບໍ່ສາມາດສົ່ງອອກໄດ້ ກໍອາດເປັນເພາະບາງຜູ້ໃຫ້ບໍລິການຂໍ້ມູນບໍ່ອະນຸຍາດໃຫ້ສົ່ງລາຍຊື່ຜູ້ຕິດຕໍ່ອອກຈາກແທັບເລັດໄດ້."</string>
+</resources>
diff --git a/res-common/values-lo-rLA/strings.xml b/res-common/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..344a5c4
--- /dev/null
+++ b/res-common/values-lo-rLA/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"ສຳເນົາຂໍ້ຄວາມແລ້ວ"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ສຳເນົາໄວ້ໃນຄລິບບອດ"</string>
+    <string name="call_custom" msgid="2786306789889210756">"ໂທຫາ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"ໂທຫາເບີບ້ານ"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"ໂທຫາເບີມືຖື"</string>
+    <string name="call_work" msgid="8299062439076337075">"ໂທຫາເບີບ່ອນເຮັດວຽກ"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"ໂທຫາເບີແຟັກບ່ອນເຮັດວຽກ"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ໂທຫາເບີແຟັກບ້ານ"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ໂທຫາເບີ pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"ໂທ"</string>
+    <string name="call_callback" msgid="687494744634190411">"ໂທຫາເບີໂທກັບ"</string>
+    <string name="call_car" msgid="9078083109758282133">"ໂທຫາເບີລົດ"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ໂທຫາເບີຫຼັກຂອງບໍລິສັດ"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ໂທຫາເບີ ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"ໂທຫາເບີຫຼັກ"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ໂທຫາເບີແຟັກ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ໂທຫາເບີວິທະຍຸ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ໂທຫາເບີ telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"ໂທຫາເບີ TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"ໂທຫາເບີມືຖືບ່ອນເຮັດວຽກ"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ໂທຫາ pager ບ່ອນເຮັດວຽກ"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"ໂທ​ຫາ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"ໂທຫາເບີ MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ໂທ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"ສົ່ງຂໍ້ຄວາມຫາ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ສົ່ງຂໍ້ຄວາມຫາເບີບ້ານ"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ສົ່ງຂໍ້ຄວາມຫາເບີມືຖື"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ສົ່ງຂໍ້ຄວາມຫາເບີບ່ອນເຮັດວຽກ"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ສົ່ງຂໍ້ຄວາມຫາເບີແຟັກບ່ອນເຮັດວຽກ"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ສົ່ງຂໍ້ຄວາມຫາເບີແຟັກບ້ານ"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ສົ່ງຂໍ້ຄວາມຫາເບີ pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"ສົ່ງຂໍ້ຄວາມ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ສົ່ງຂໍ້ຄວາມຫາເບີໂທກັບ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ສົ່ງຂໍ້ຄວາມຫາເບີລົດ"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ສົ່ງຂໍ້ຄວາມຫາເບີຫຼັກຂອງບໍລິສັດ"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ສົ່ງຂໍ້ຄວາມຫາເບີ ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ສົ່ງຂໍ້ຄວາມຫາເບີຫຼັກ"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ສົ່ງຂໍ້ຄວາມຫາເບີແຟັກ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ສົ່ງຂໍ້ຄວາມຫາເບີວິທະຍຸ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ສົ່ງຂໍ້ຄວາມຫາເບີ telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"ສົ່ງຂໍ້ຄວາມຫາເບີ TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ສົ່ງຂໍ້ຄວາມຫາເບີມືຖືບ່ອນເຮັດວຽກ"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ສົ່ງຂໍ້ຄວາມຫາເບີ pager ບ່ອນເຮັດວຽກ"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"ສົ່ງຂໍ້ຄວາມຫາ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"ສົ່ງຂໍ້ຄວາມຫາເບີ MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ສົ່ງຂໍ້ຄວາມ)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"​ໂທ​ອອກ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"ລຶບລາຍຊື່ທີ່ຕິດຕໍ່ເລື້ອຍໆອອກ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"ທ່ານຈະລຶບຂໍ້ມູນລາຍຊື່ທີ່ຕິດຕໍ່ຫາເລື້ອຍໆຢູ່ໃນແອັບຯລາຍ​ຊື່ ແລະໂທ​ລະ​ສັບ ພ້ອມທັງບັງຄັບໃຫ້ແອັບຯອີເມວເລີ່ມຮຽນຮູ້ຄ່າກຳນົດທີ່ຢູ່ຂອງທ່ານໃໝ່ຕັ້ງແຕ່ຕົ້ນ."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"ກຳລັງລຶບລ້າງລາຍຊື່ທີ່ຕິດຕໍ່ຫາເລື້ອຍໆ..."</string>
+    <string name="status_available" msgid="4832569677396634846">"ສາມາດໃຊ້ໄດ້"</string>
+    <string name="status_away" msgid="6267905184545881094">"ບໍ່ຢູ່"</string>
+    <string name="status_busy" msgid="7111912905211403545">"ບໍ່ຫວ່າງ"</string>
+    <string name="contactsList" msgid="7140022347217602605">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"ອື່ນໆ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ໄດເຣັກທໍຣີ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ໄດເຣັກທໍຣີບ່ອນເຮັດວຽກ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"ກຳລັງຊອກຫາ..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"ພົບຫຼາຍກວ່າ <xliff:g id="COUNT">%d</xliff:g> ລາຍການ."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ພົບແລ້ວ</item>
+      <item quantity="one">1 ພົບແລ້ວ</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"ຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ດ່ວນຂອງ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ບໍ່ມີຊື່)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"ຕິດຕໍ່ຫາເລື້ອຍໆ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດທີ່ມີເບີໂທລະສັບ"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"ລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"ເບິ່ງອັບເດດ"</string>
+    <string name="account_phone" msgid="325867897209266837">"ອຸປະກອນ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"ຊື່"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ຊື່ຫຼິ້ນ"</string>
+    <string name="full_name" msgid="885420216812981202">"ຊື່"</string>
+    <string name="name_given" msgid="4153709115654909377">"ຊື່"</string>
+    <string name="name_family" msgid="5317387657540738981">"ນາມສະກຸນ"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"ຄຳນຳໜ້າຊື່"</string>
+    <string name="name_middle" msgid="3951610314424632183">"ຊື່ຮອງ"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"ຄຳຕໍ່ທ້າຍຊື່"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ການອອກສຽງຊື່"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ການ​ອອກ​ສຽງ​​ຊື່"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ການອອກສຽງຊື່ຮອງ"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ການ​ອອກ​ສຽງ​ນາມ​ສະ​ກຸນ​​​"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ໂທລະສັບ"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ອີເມວ"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ທີ່ຢູ່"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ອົງກອນ"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ຄວາມສຳພັນ"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"ວັນ​ທີ​ພິ​ເສດ"</string>
+    <string name="sms" msgid="8086289395154598654">"ຂໍ້ຄວາມ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ທີ່ຢູ່"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"ບໍລິສັດ"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ຊື່"</string>
+    <string name="label_notes" msgid="3997277594846722699">"ໝາຍເຫດ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ເວັບໄຊ"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ປ້າຍກຳກັບ"</string>
+    <string name="email_home" msgid="2230967805906450693">"ສົ່ງອີ​ເມວຫາອີເມວເຮືອນ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ສົ່ງອີ​ເມວຫາອີເມວມືຖື"</string>
+    <string name="email_work" msgid="7065971921227432400">"ສົ່ງອີ​ເມວຫາບ່ອນເຮັດວຽກ"</string>
+    <string name="email_other" msgid="4601881243553289615">"ສົ່ງອີເມວ"</string>
+    <string name="email_custom" msgid="5777583741581538870">"ສົ່ງອີ​ເມວຫາ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"ອີເມວ"</string>
+    <string name="postal_street" msgid="881349814077356134">"ຖະໜົນ"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"ຕູ້ໄປສະນີ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"ບໍລິເວນໃກ້ຄຽງ"</string>
+    <string name="postal_city" msgid="3173008531169519309">"ເມືອງ"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ລັດ"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ລະຫັດ ZIP"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ປະເທດ"</string>
+    <string name="map_home" msgid="1221397355014741634">"ເບິ່ງ​ເຮືອນ​ທີ່​ຢູ່ເບິ່ງທີ່ຢູ່ເຮືອນ"</string>
+    <string name="map_work" msgid="9015981646907637207">"ເບິ່ງທີ່ຢູ່ບ່ອນເຮັດວຽກ"</string>
+    <string name="map_other" msgid="55098598855607997">"ເບິ່ງທີ່ຢູ່"</string>
+    <string name="map_custom" msgid="4943554530347163288">"ເບິ່ງທີ່ຢູ່ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"ສົນທະນາໂດຍໃຊ້ AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"ສົນທະນາໂດຍໃຊ້ Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"ສົນທະນາໂດຍໃຊ້ Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"ສົນທະນາໂດຍໃຊ້ Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"ສົນທະນາໂດຍໃຊ້ QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"ສົນທະນາໂດຍໃຊ້ Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ສົນທະນາໂດຍໃຊ້ ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"ສົນທະນາໂດຍໃຊ້ Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"ສົນທະນາ"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ລຶບ"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"ຂະຫຍາຍ ຫຼືຫຍໍ້ຊ່ອງຂໍ້ມູນຊື່"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ຂະ​ຫຍາຍ ຫຼື ຫຍໍ້​ບ່ອນ​ໃສ່​ຊື່​ຕາມ​ການ​ອອກ​ສຽງ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ໝາຍດາວໄວ້"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"ປັບແຕ່ງ"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"ລາຍຊື່ຜູ່ຕິດຕໍ່ອື່ນໆທັງໝົດ"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"ລຶບກຸ່ມການຊິ້ງຂໍ້ມູນ"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"ເພີ່ມກຸ່ມຊິ້ງຂໍ້ມູນ"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"ກຸ່ມເພີ່ມເຕີມ..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"ການລຶບ \"<xliff:g id="GROUP">%s</xliff:g>\" ອອກຈາກການຊິ້ງຂໍ້ມູນ ຈະເປັນການລຶບລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ບໍ່ໄດ້ຢູ່ໃນກຸ່ມ ອອກຈາກການຊິ້ງຂໍ້ມູນນຳ."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ກຳລັງບັນທຶກໂຕເລືອກການສະແດງຜົນ..."</string>
+    <string name="menu_done" msgid="32470053723443112">"ແລ້ວໆ"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"ຍົກເລີກ"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"ມຸມມອງແບບປັບແຕ່ງ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"ບັນ​ທຶກ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ນຳ​ເຂົ້າ​ແລ້ວ​ໃສ່:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"ນຳເຂົ້າຈາກ SD card"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"ນຳ​ເຂົ້າ​ຈາກ SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"​ນຳ​ເຂົ້າ​ຈາກ SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"ນຳ​ເຂົ້າ​ຈາກ​ໄຟ​ລ໌ .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"ຍົກເລີກການນຳເຂົ້າ <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"ຍົກເລີກການສົ່ງອອກ <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"ບໍ່ສາມາດຍົກເລີກ ການນຳເຂົ້າ/ສົ່ງອອກ vCard ໄດ້"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"ຄວາມຜິດພາດບໍ່ຮູ້ສາຍເຫດ."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"ບໍ່ສາມາດເປີດ \"<xliff:g id="FILE_NAME">%s</xliff:g>\" ໄດ້: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ບໍ່ສາມາດເລີ່ມໂປຣແກຣມສົ່ງອອກໄດ້: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ສາມາດສົ່ງອອກໄດ້."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"ທ່ານປິດການນຳໃຊ້ສິດອະນຸຍາດທີ່ຈຳເປັນໄວ້ແລ້ວ."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"ເກີດຄວາມຜິດພາດໃນລະຫວ່າງການສົ່ງອອກ: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ຊື່ໄຟລ໌ທີ່ຕ້ອງການຍາວເກີນໄປ (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O ຜິດພາດ"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"ໜ່ວຍຄວາມຈຳບໍ່ພໍ. ເປັນໄປໄດ້ວ່າໄຟລ໌ໃຫຍ່ເກີນໄປ."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ບໍ່ສາມາດວິເຄາະຂໍ້ມູນ vCard ຂອງທ່ານໄດ້ເນື່ອງຈາກສາຍເຫດທີ່ບໍ່ຄາດຄິດ."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ບໍ່ຮອງຮັບຮູບແບບນີ້."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"ບໍ່ສາມາດເກັບກຳຂໍ້ມູນ meta ຂອງໄຟລ໌ vCard ທີ່ລະບຸໄດ້."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ມີໄຟລ໌ນຶ່ງ ຫຼືຫຼາຍກວ່ານັ້ນບໍ່ສາມາດນຳເຂົ້າໄດ້ (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"ສິ້ນສຸດການສົ່ງອອກແລ້ວ <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"ສຳ​ເລັດ​ການ​ສົ່ງ​ອອກລາຍ​ຊື່​ອ​ແລ້ວ."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"ເມື່ອສຳເລັດການສົ່ງອອກລາຍຊື່ຜູ້ຕິດຕໍ່ແລ້ວ, ໃຫ້ຄລິກການແຈ້ງເຕືອນເພື່ອແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"ແຕະເພື່ອແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"ການສົ່ງອອກ <xliff:g id="FILENAME">%s</xliff:g> ຖືກຍົກເລີກແລ້ວ."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"ກຳລັງສົ່ງອອກຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"ຂໍ້ມູນລາຍຊື່ຜູ້ຕິດຕໍ່ກຳລັງຖືກສົ່ງອອກ."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ບໍ່ສາມາດດຶງຂໍ້ມູນຖານຂໍ້ມູນໄດ້."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ສາມາດສົ່ງອອກໄດ້. ຫາກທ່ານມີລາຍຊື່ຜູ່ຕິດຕໍ່ໃນໂທລະສັບຂອງທ່ານ ແຕ່ບໍ່ສາມາດສົ່ງອອກໄດ້ ກໍອາດເປັນເພາະບາງຜູ່ໃຫ້ບໍລິການຂໍ້ມູນບໍ່ອະນຸຍາດ ໃຫ້ສົ່ງລາຍຊື່ຜູ່ຕິດຕໍ່ອອກຈາກໂທລະສັບໄດ້."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"ໂປຣແກຣມຂຽນ vCard ຖືກເລີ່ມຢ່າງບໍ່ຖືກຕ້ອງ."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ບໍ່ສາມາດສົ່ງອອກໄດ້"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"ຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ຍັງບໍ່ໄດ້ຖືກສົ່ງອອກເທື່ອ.\nເຫດຜົນ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"ກຳລັງນຳເຂົ້າ <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"ບໍ່ສາມາດອ່ານຂໍ້ມູນ vCard ໄດ້"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"ການອ່ານຂໍ້ມູນ vCard ຖືກຍົກເລີກແລ້ວ"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"ການນຳເຂົ້າໄຟລ໌ vCard <xliff:g id="FILENAME">%s</xliff:g> ສິ້ນສຸດແລ້ວ"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"ການນຳເຂົ້າ <xliff:g id="FILENAME">%s</xliff:g> ຖືກຍົກເລີກແລ້ວ"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ຈະຖືກນຳເຂົ້າໃນໄວໆນີ້."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ໄຟລ໌ຈະຖືກນຳເຂົ້າໃນໄວໆນີ້."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"ການຮ້ອງຂໍການນຳເຂົ້າ vCard​ ຖືກປະຕິເສດ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ຈະຖືກສົ່ງອອກໃນໄວໆນີ້."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ໄຟ​ລ໌​ຈະ​ຖືກ​ສົ່ງ​ອອກ​ໄວໆ​ນີ້."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"ລາຍຊື່ຜູ້ຕິດຕໍ່ຈະຖືກສົ່ງອອກໃນໄວໆນີ້."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"ຄຳຂໍການສົ່ງອອກ vCard ຖືກປະຕິເສດ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"ກຳລັງເກັບຂໍ້ມູນ vCard ໃສ່ບ່ອນຈັດເກັບຂໍ້ມູນຊົ່ວຄາວໃນອຸປະກອນ. ການນຳເຂົ້າຈະເລີ່ມຂຶ້ນໃນໄວໆນີ້."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"ບໍ່ສາມາດນຳເຂົ້າ vCard ໄດ້."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ໄດ້ຮັບຜ່ານ NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"ສົ່ງອອກລາຍຊື່ຜູ່ຕິດຕໍ່?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ກຳລັງຈັດເກັບຂໍ້ມູນ"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"ກຳລັງນຳເຂົ້າ <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"ສົ່ງ​ອອກ​ຫາ​ໄຟ​ລ໌ .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ຮຽງຕາມ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"ຊື່"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"ນາມສະກຸນ"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"​ຮູບ​ແບບ​ຊື່"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"​ຊື່​ກ່ອນ"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"​ນາມ​ສະ​ກຸນ​ກ່ອນ"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"ບັນຊີ"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"ບັນ​ຊີ​ເລີ່ມຕົ້ນ​ສຳ​ລັບ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ໃໝ່"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"ຊິ້ງຂໍ້ມູນເມຕາເດຕາຂອງລາຍຊື່ຜູ້ຕິດຕໍ່ [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"ຊິ້ງຂໍ້ມູນເມຕາເດຕາຂອງລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ຂໍ້ມູນຂອງຂ້ອຍ"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"ຕັ້ງຄ່າໂປຣໄຟລ໌ຂອງທ່ານ"</string>
+    <string name="setting_about" msgid="3926137653588942297">"ກ່ຽວກັບລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ການຕັ້ງຄ່າ"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"ແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ເບິ່ງເຫັນໄດ້"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"ແບ່ງ​ປັນ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ສາ​ມາດ​ເຫັນ​ໄດ້​ບໍ່​ສຳ​ເລັດ."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ມັກ"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"ແບ່ງປັນທຸກລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"ແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່ບໍ່ສຳເລັດ."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"ນຳເຂົ້າ/ສົ່ງອອກ ລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"ນຳເຂົ້າລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="share_error" msgid="665756457151793108">"ບໍ່ສາມາດແບ່ງປັນລາຍຊື່ລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ໄດ້."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"ບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ຈະແບ່ງປັນ."</string>
+    <string name="menu_search" msgid="7464453023659824700">"ຊອກຫາ"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ລາຍຊື່ຜູ້ຕິດຕໍ່ເພື່ອສະແດງ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ລາຍຊື່ຜູ້ຕິດຕໍ່ເພື່ອສະແດງ"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"ກຳນົດມຸມມອງແບບປັບແຕ່ງ"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"ບັນທຶກ"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"ຊອກຫາລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"ລາຍການທີ່ມັກ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"ລຶບລາຍຊື່ຄົນທີ່ຕິດຕໍ່ຫາເລື້ອຍໆ"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"ເລືອກ SIM ກາດ"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"ຈັດການບັນຊີ"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ນຳເຂົ້າ/ສົ່ງອອກ"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"ເບີໂທທີ່ບລັອກໄວ້"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"ຜ່ານ <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> ຜ່ານ <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ຢຸດ​ການ​ຊອກ​ຫາ"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ລຶບ​ການ​ຊອກ​ຫາ"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"​ໂຕ​ເລືອກ​ການ​ສະ​ແດງ​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"ບັນຊີ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ໃຊ້​ຊິມ​ນີ້​ເພື່ອ​ການໂທທຸກ​ເທື່ອ"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ໂທ​ດ້ວຍ"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ໂທ​ດ້ວຍ​ບັນ​ທຶກ"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"ພິມ​ບັນ​ທຶກ ເພື່ອ​ສົ່ງ​ກັບ​ການ​ໂທ ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ສົ່ງ ແລະ ໂທ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ລາຍ​ການ​ບໍ່​ທັນ​ໄດ້​ອ່ານ. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> ​ລາຍ​ການ​ບໍ່​ທັນ​ໄດ້​ອ່ານ. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"ເວີຊັນທີ່ສ້າງ"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ລິຂະສິດໂອເພນຊອດ"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ລາຍລະອຽດໃບອະນຸຍາດຂອງຊອບແວແຫຼ່ງເປີດ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"​ນະ​ໂຍ​ບາຍ​ຄວາມ​ເປັນ​ສ່ວນຕົວ"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"​ເງື່ອນ​ໄຂ​ການ​ໃຫ້​ບໍ​ລິ​ການ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ລິຂະສິດໂອເພນຊອດ"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"ເປີດ URL ລົ້ມເຫລວ."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ຖືກ​ໝາຍ​ແລ້ວ"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ບໍ່​ໄດ້​ໝາຍ​ແລ້ວ"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ເຮັດການໂທວິດີໂອ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ລຶບ"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"ເຄື່ອງໝາຍສາມຈໍ້າ"</string>
+</resources>
diff --git a/res-common/values-lt-sw600dp/strings.xml b/res-common/values-lt-sw600dp/strings.xml
new file mode 100644
index 0000000..2013701
--- /dev/null
+++ b/res-common/values-lt-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Įrenginys"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nėra eksportuojamų kontaktų. Jei planšetiniame kompiuteryje yra kontaktų, kai kurie duomenų paslaugų teikėjai gali neleisti eksportuoti kontaktų iš planšetinio kompiuterio."</string>
+</resources>
diff --git a/res-common/values-lt/strings.xml b/res-common/values-lt/strings.xml
new file mode 100644
index 0000000..1eae017
--- /dev/null
+++ b/res-common/values-lt/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekstas nukopijuotas"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopijuoti į iškarpinę"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Skambinti <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Skambinti namų telefono numeriu"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Skambinti mobiliojo telefono numeriu"</string>
+    <string name="call_work" msgid="8299062439076337075">"Skambinti darbo telefono numeriu"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Skambinti darbo fakso numeriu"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Skambinti namų fakso numeriu"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Skambinti pranešimų gaviklio numeriu"</string>
+    <string name="call_other" msgid="4472141328347894937">"Skambinti"</string>
+    <string name="call_callback" msgid="687494744634190411">"Skambinti atgalinio skambinimo numeriu"</string>
+    <string name="call_car" msgid="9078083109758282133">"Skambinti automobilio telefono numeriu"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Skambinti pagrindinio įmonės telefono numeriu"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Skambinti ISDN telefono numeriu"</string>
+    <string name="call_main" msgid="4640261071249938558">"Skambinti pagrindinio telefono numeriu"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Skambinti fakso numeriu"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Skambinti radijo telefono numeriu"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Skambinti telekso numeriu"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Skambinti TTY / TDD numeriu"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Skambinti darbo mobiliojo telefono numeriu"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Skambinti darbo pranešimų gaviklio numeriu"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Skambinti <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Skambinti MMS telefono numeriu"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (skambutis)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Siųsti teksto pranešimą <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Siųsti teksto pranešimą namų telefono numeriu"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Siųsti teksto pranešimą mobiliojo telefono numeriu"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Siųsti teksto pranešimą darbo telefono numeriu"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Siųsti teksto pranešimą darbo fakso numeriu"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Siųsti teksto pranešimą namų fakso numeriu"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Siųsti teksto pranešimą pranešimų gaviklio numeriu"</string>
+    <string name="sms_other" msgid="910895193552957097">"Siųsti teksto pranešimą"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Siųsti teksto pranešimą atgalinio skambinimo numeriu"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Siųsti teksto pranešimą automobilio telefono numeriu"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Siųsti teksto pranešimą pagrindinio įmonės telefono numeriu"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Siųsti teksto pranešimą ISDN telefono numeriu"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Siųsti teksto pranešimą pagrindinio telefono numeriu"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Siųsti teksto pranešimą fakso numeriu"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Siųsti teksto pranešimą radijo telefono numeriu"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Siųsti teksto pranešimą telekso numeriu"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Siųsti teksto pranešimą TTY / TDD numeriu"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Siųsti teksto pranešimą darbo mobiliojo telefono numeriu"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Siųsti teksto pranešimą darbo pranešimų gaviklio numeriu"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Siųsti teksto pranešimą <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Siųsti MMS telefono numeriu"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (pranešimas)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Atlikti vaizdo skambutį"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Išvalyti dažniausius kontaktus?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Išvalysite dažniausių kontaktų sąrašą Kontaktų ir Telefono programose, o el. pašto programoms reikės iš naujo gauti adresavimo nuostatas."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Valomi dažniausi kontaktai…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Galima"</string>
+    <string name="status_away" msgid="6267905184545881094">"Pasišalinęs"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Užsiėmęs"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktai"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Kitas"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Katalogas"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Darbo katalogas"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Visi kontaktai"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Ieškoma…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Rasta daugiau nei <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Kontaktų nėra"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Rastas <xliff:g id="COUNT">%d</xliff:g> kontaktas</item>
+      <item quantity="few">Rasti <xliff:g id="COUNT">%d</xliff:g> kontaktai</item>
+      <item quantity="many">Rasta <xliff:g id="COUNT">%d</xliff:g> kontakto</item>
+      <item quantity="other">Rasta <xliff:g id="COUNT">%d</xliff:g> kontaktų</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Spartusis <xliff:g id="NAME">%1$s</xliff:g> kontaktas"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nėra pavadinimo)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Dažniausiai susisiekta"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Peržiūrėti kontaktą"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Visi kontaktai su telefonų numeriais"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Darbo profilio kontaktai"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Peržiūrėti naujinius"</string>
+    <string name="account_phone" msgid="325867897209266837">"Įrenginys"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Pavadinimas"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Slapyvardis"</string>
+    <string name="full_name" msgid="885420216812981202">"Vardas"</string>
+    <string name="name_given" msgid="4153709115654909377">"Vardas"</string>
+    <string name="name_family" msgid="5317387657540738981">"Pavardė"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Priešvardis"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Antrasis vardas"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Povardis"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetinis vardas"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Vardo fonetinė forma"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetinis antrasis vardas"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Pavardės fonetinė forma"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefonas"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"El. paštas"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresas"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"TP"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizacija"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Ryšys"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Speciali data"</string>
+    <string name="sms" msgid="8086289395154598654">"Teksto pranešimas"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresas"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Įmonė"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Pavadinimas"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Pastabos"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Svetainė"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketės"</string>
+    <string name="email_home" msgid="2230967805906450693">"Siųsti el. laišką namų el. pašto adresu"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Siųsti el. laišką el. pašto adresu mobiliesiems"</string>
+    <string name="email_work" msgid="7065971921227432400">"Siųsti el. laišką darbo el. pašto adresu"</string>
+    <string name="email_other" msgid="4601881243553289615">"El. paštas"</string>
+    <string name="email_custom" msgid="5777583741581538870">"El. paštas <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"El. paštas"</string>
+    <string name="postal_street" msgid="881349814077356134">"Gatvė"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Pašto dėžutė"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Kaimynystė"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Miestas"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Valstija"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Pašto kodas"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Šalis"</string>
+    <string name="map_home" msgid="1221397355014741634">"Peržiūrėti namų adresą"</string>
+    <string name="map_work" msgid="9015981646907637207">"Peržiūrėti darbo adresą"</string>
+    <string name="map_other" msgid="55098598855607997">"Peržiūrėti adresą"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Peržiūrėti <xliff:g id="CUSTOM">%s</xliff:g> adresą"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Kalbėti naudojant AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Kalbėti naudojant „Windows Live“"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Kalbėti naudojant „Yahoo“"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Kalbėti naudojant „Skype“"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Kalbėti naudojant QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Kalbėti naudojant „Google“ pokalbius"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Kalbėti naudojant ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Kalbėti naudojant „Jabber“"</string>
+    <string name="chat" msgid="6297650784873558837">"Pokalbis"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ištrinti"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Išskleisti arba sutraukti pavadinimų laukus"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Išskleisti arba sutraukti fonetinių pavadinimų laukus"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Visi kontaktai"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Pažymėta žvaigždute"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Tinkinti"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontaktas"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Visi kiti kontaktai"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Visi kontaktai"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Pašalinti sinchronizuojamą grupę"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Pridėti sinchronizuotą grupę"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Daugiau grupių…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Iš sinchronizavimo pašalinus „<xliff:g id="GROUP">%s</xliff:g>“, bus pašalinti ir nesugrupuoti kontaktai."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Išsaugomos pateikties parinktys…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Atlikta"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Atšaukti"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Tinkintas rodinys"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Importuotus kontaktus išsaugoti paskyroje:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importuoti iš SIM kortelės"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importuoti iš SIM kortelės „<xliff:g id="SIM_NAME">^1</xliff:g>“ – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importuoti iš SIM kortelės „<xliff:g id="SIM_NAME">%1$s</xliff:g>“"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importuoti iš VCF failo"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Atšaukti „<xliff:g id="FILENAME">%s</xliff:g>“ importavimą?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Atšaukti „<xliff:g id="FILENAME">%s</xliff:g>“ eksportavimą?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Nepav. atš. el. viz. kort. imp. / eksp."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Nežinoma klaida."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nepavyko atidaryti „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nepavyko paleisti eksportavimo priemonės: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nėra eksportuojamo kontakto."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Išjungėte būtiną leidimą."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Eksportuojant įvyko klaida: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Reikalingo failo pavadinimas per ilgas („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Įvesties / išvesties klaida"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nepakanka atminties. Gali būti, kad failas per didelis."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Dėl netikėtos priežasties nepavyko išanalizuoti el. vizitinės kortelės."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formatas nepalaikomas."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nepavyko surinkti pateikto (-ų) el. vizitinės kortelės failo (-ų) metainformacijos."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Nepavyko importuoti vieno ar daugiau failų (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Baigta eksportuoti „<xliff:g id="FILENAME">%s</xliff:g>“."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Baigta eksportuoti kontaktus."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktai baigti eksportuoti. Spustelėkite pranešimą ir bendrinkite kontaktus."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Palieskite, kad bendrintumėte kontaktus."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"„<xliff:g id="FILENAME">%s</xliff:g>“ eksportavimas atšauktas."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Eksportuojami kontaktų duomenys"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktų duomenys eksportuojami."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nepavyko gauti duomenų informacijos."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nėra eksportuojamų kontaktų. Jei telefone yra kontaktų, kai kurie duomenų paslaugų teikėjai gali neleisti eksportuoti kontaktų iš telefono."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"El. vizitinių kortelių rengyklė nebuvo tinkamai paleista."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Nepavyko eksportuoti"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontakto duomenys nebuvo eksportuoti.\nPriežastis: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importuojama <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nepavyko nusk. el. vizit. kort. duomenų"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"El. vizit. kort. duomenų skaitymas atš."</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Baigtas „<xliff:g id="FILENAME">%s</xliff:g>“ el. vizit. kort. importavimas"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Atšauktas „<xliff:g id="FILENAME">%s</xliff:g>“ importavimas"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"„<xliff:g id="FILENAME">%s</xliff:g>“ bus netrukus importuotas."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Failas bus netrukus importuotas."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"El. vizitinės kortelės importavimo užklausa atmesta. Vėliau bandykite dar kartą."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"„<xliff:g id="FILENAME">%s</xliff:g>“ bus netrukus eksportuotas."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Failas bus eksportuotas netrukus."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Netrukus kontaktai bus eksportuoti."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"El. vizitinės kortelės eksportavimo užklausa buvo atmesta. Vėliau bandykite dar kartą."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontaktas"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"El. vizitinė (-ės) kortelė (-ės) padedama (-os) į vietinę laikinąją saugyklą. Netrukus bus pradėtas tikrasis importavimas."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Nepavyko importuoti el. vizit. kortelės."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kont. g. per ALR"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Eksportuoti kontaktus?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Dedama į talpyklą"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importuojama <xliff:g id="CURRENT_NUMBER">%s</xliff:g> / <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksportuoti į VCF failą"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Rūšiuoti pagal"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Vardas"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Pavardė"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Vardo formatas"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Pirmiausia vardas"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Pirmiausia pavardė"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Paskyros"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Numatytoji naujų kontaktų paskyra"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinchronizuoti kontaktų metaduomenis [NEGALUTINĖ VERSIJA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Kontaktų metaduomenų sinchronizavimas"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mano informacija"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Nustatykite profilį"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Apie Kontaktus"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Nustatymai"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Bendrinti matomus kontaktus"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nepavyko bendrinti matomų kontaktų."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Bendrinti mėgstamiausius kontaktus"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Bendrinti visus kontaktus"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Nepavyko bendrinti kontaktų."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kontaktų importavimas / eksportavimas"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importuoti kontaktus"</string>
+    <string name="share_error" msgid="665756457151793108">"Šio kontakto negalima bendrinti."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nėra bendrintinų kontaktų."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Ieškoti"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Pateiktini kontaktai"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Pateiktini kontaktai"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Apibrėžti tinkintą rodinį"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Išsaugoti"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Ieškokite kontaktų"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Mėgstamiausi"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Kontaktų nėra."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Valyti dažniausiai naudojamus"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Pasirinkti SIM kortelę"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Valdyti paskyras"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importuoti / eksportuoti"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Užblokuoti numeriai"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"naudojant „<xliff:g id="SOURCE">%1$s</xliff:g>“"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> naudojant „<xliff:g id="SOURCE">%2$s</xliff:g>“"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"sustabdyti paiešką"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Išvalyti paiešką"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kontaktų rodymo parinktys"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Paskyra"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Visada naudoti tai skambučiams"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Skambinkite naudodami"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Skambutis su užrašu"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Įveskite užrašą, kurį galima išsiųsti skambinant..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SIŲSTI IR SKAMBINTI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> „<xliff:g id="TITLE_2">%1$s</xliff:g>“. <xliff:g id="COUNT_3">%2$d</xliff:g> neskaitytas elementas. </item>
+      <item quantity="few"> „<xliff:g id="TITLE_2">%1$s</xliff:g>“. <xliff:g id="COUNT_3">%2$d</xliff:g> neskaityti elementai. </item>
+      <item quantity="many"> „<xliff:g id="TITLE_2">%1$s</xliff:g>“. <xliff:g id="COUNT_3">%2$d</xliff:g> neskaityto elemento. </item>
+      <item quantity="other"> „<xliff:g id="TITLE_2">%1$s</xliff:g>“. <xliff:g id="COUNT_3">%2$d</xliff:g> neskaitytų elementų. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versija"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Atvirojo šaltinio licencijos"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Išsami atvirojo šaltinio programinės įrangos licencijos informacija"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privatumo politika"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Paslaugų teikimo sąlygos"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Atvirojo šaltinio licencijos"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Nepavyko atidaryti URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> pažymėta"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> nepažymėta"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Atlikti vaizdo skambutį"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Ištrinti"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Daugtaškis"</string>
+</resources>
diff --git a/res-common/values-lv-sw600dp/strings.xml b/res-common/values-lv-sw600dp/strings.xml
new file mode 100644
index 0000000..63d335e
--- /dev/null
+++ b/res-common/values-lv-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Ierīce"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nav eksportējamu kontaktpersonu datu. Ja jūsu planšetdatorā ir saglabāta kontaktpersonu informācija, iespējams, jūsu datu pakalpojumu sniedzējs neļauj eksportēt kontaktpersonu datus no planšetdatora."</string>
+</resources>
diff --git a/res-common/values-lv/strings.xml b/res-common/values-lv/strings.xml
new file mode 100644
index 0000000..c977433
--- /dev/null
+++ b/res-common/values-lv/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teksts ir nokopēts."</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopēt starpliktuvē"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Zvanīt: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Zvanīt uz mājas tālruni"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Zvanīt uz mobilo tālruni"</string>
+    <string name="call_work" msgid="8299062439076337075">"Zvanīt uz darba tālruni"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Zvanīt uz darba faksa numuru"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Zvanīt uz mājas faksa numuru"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Zvanīt uz peidžeri"</string>
+    <string name="call_other" msgid="4472141328347894937">"Zvanīt"</string>
+    <string name="call_callback" msgid="687494744634190411">"Zvanīt uz atzvana numuru"</string>
+    <string name="call_car" msgid="9078083109758282133">"Zvanīt uz automobiļa tālruņa numuru"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Zvanīt uz uzņēmuma galveno tālruņa numuru"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Zvanīt uz ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Zvanīt uz galveno tālruņa numuru"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Zvanīt uz faksu"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Zvanīt uz radioierīci"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Zvanīt uz teleksu"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Zvanīt uz teksta tālruni/surdotālruni"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Zvanīt uz darba mobilo tālruni"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Zvanīt uz darba peidžeri"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Zvanīt: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Zvanīt uz multiziņas numuru"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (zvanīt)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Sūtīt īsziņu: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Sūtīt īsziņu uz mājas tālruņa numuru"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Sūtīt īsziņu uz mobilo tālruni"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Sūtīt īsziņu uz darba tālruni"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Sūtīt īsziņu uz darba faksa numuru"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Sūtīt īsziņu uz mājas faksa numuru"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Sūtīt īsziņu uz peidžeri"</string>
+    <string name="sms_other" msgid="910895193552957097">"Sūtīt īsziņu"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Sūtīt īsziņu uz atzvana numuru"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Sūtīt īsziņu uz automobiļa tālruņa numuru"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Sūtīt īsziņu uz uzņēmuma galveno tālruņa numuru"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Sūtīt īsziņu uz ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Sūtīt īsziņu uz galveno tālruņa numuru"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Sūtīt īsziņu uz faksu"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Sūtīt īsziņu uz radioierīci"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Sūtīt īsziņu uz teleksu"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Sūtīt īsziņu uz teksta tālruni/surdotālruni"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Sūtīt īsziņu uz darba mobilo tālruni"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Sūtīt īsziņu uz darba peidžeri"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Sūtīt īsziņu: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Sūtīt multiziņu"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (sūtīt īsziņu)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Veikt videozvanu"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vai dzēst bieži lietotos kontaktus?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Tiks dzēsts bieži lietoto kontaktpersonu saraksts lietotnēs Kontaktpersonas un Tālrunis, un e-pasta lietotnēs no jauna tiks sākta adrešu preferenču saglabāšana."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Bieži lietoto kontaktu dzēšana..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Pieejams"</string>
+    <string name="status_away" msgid="6267905184545881094">"Prombūtnē"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Aizņemts"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktpersonas"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Cits"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Katalogs"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Darba katalogs"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Visas kontaktpersonas"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Notiek meklēšana…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Atrastas vairāk nekā <xliff:g id="COUNT">%d</xliff:g> kontaktpersonas."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nav kontaktpersonu"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="zero">Atrastas <xliff:g id="COUNT">%d</xliff:g> kontaktpersonas</item>
+      <item quantity="one">Atrasta <xliff:g id="COUNT">%d</xliff:g> kontaktpersona</item>
+      <item quantity="other">Atrastas <xliff:g id="COUNT">%d</xliff:g> kontaktpersonas</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Ātrā saziņa ar kontaktpersonu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Nav vārda)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Personas, ar kurām bieži sazināties"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Skatīt kontaktpersonu"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Visas kontaktpersonas ar tālruņa numuriem"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontaktpersonas darba profilā"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Skatīt atjauninājumus"</string>
+    <string name="account_phone" msgid="325867897209266837">"Ierīce"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Vārds un uzvārds"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Segvārds"</string>
+    <string name="full_name" msgid="885420216812981202">"Vārds un uzvārds"</string>
+    <string name="name_given" msgid="4153709115654909377">"Vārds"</string>
+    <string name="name_family" msgid="5317387657540738981">"Uzvārds"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Uzruna"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Otrais vārds"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Uzruna"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Vārda un uzvārda izruna"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Vārda izruna"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Otrā vārda izruna"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Uzvārda izruna"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Tālrunis"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-pasta adrese"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adrese"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Tūlītēja ziņapmaiņa"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizācija"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Saistība"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Īpašs datums"</string>
+    <string name="sms" msgid="8086289395154598654">"Īsziņa"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adrese"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Uzņēmums"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Nosaukums"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Piezīmes"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Vietne"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Iezīmes"</string>
+    <string name="email_home" msgid="2230967805906450693">"Sūtīt e-pasta ziņojumu uz privāto adresi"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Sūtīt e-pasta ziņojumu uz mobilo tālruni"</string>
+    <string name="email_work" msgid="7065971921227432400">"Sūtīt e-pasta ziņojumu uz darba adresi"</string>
+    <string name="email_other" msgid="4601881243553289615">"Sūtīt e-pasta ziņojumu"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Sūtīt e-pasta ziņojumu uz: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Sūtīt e-pasta ziņojumu"</string>
+    <string name="postal_street" msgid="881349814077356134">"Iela"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Abonenta kastīte"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Teritoriālā vienība"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Pilsēta"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Štats"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Pasta indekss"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Valsts"</string>
+    <string name="map_home" msgid="1221397355014741634">"Skatīt mājas adresi"</string>
+    <string name="map_work" msgid="9015981646907637207">"Skatīt darba adresi"</string>
+    <string name="map_other" msgid="55098598855607997">"Skatīt adresi"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Skatīt lietotāja <xliff:g id="CUSTOM">%s</xliff:g> adresi"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Tērzēt, izmantojot AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Tērzēt, izmantojot Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Tērzēt, izmantojot Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Tērzēt, izmantojot Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Tērzēt, izmantojot QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Tērzēt, izmantojot Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Tērzēt, izmantojot ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Tērzēt, izmantojot Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Tērzēt"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"dzēst"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Izvērst vai sakļaut nosaukumu laukus"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Izvērst vai sakļaut vārda izrunas laukus"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Visas kontaktpersonas"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Atzīmēts ar zvaigznīti"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Pielāgot"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontaktpersonas"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Citas kontaktpersonas"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Visas kontaktpersonas"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Noņemt sinhronizējamo grupu"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Pievienot sinhronizējamu grupu"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Vairāk grupu..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Pārtraucot grupas <xliff:g id="GROUP">%s</xliff:g> sinhronizāciju, tiks pārtraukta arī visu negrupēto kontaktpersonu sinhronizācija."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Notiek attēlojuma opciju saglabāšana..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Gatavs"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Atcelt"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Pielāgots skatījums"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Saglabāt importētās kontaktpersonas šeit:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importēt no SIM kartes"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importēt no SIM kartes <xliff:g id="SIM_NAME">^1</xliff:g> — <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importēt no SIM kartes <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importēt no .vcf faila"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Vai atcelt faila <xliff:g id="FILENAME">%s</xliff:g> importēšanu?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Vai atcelt faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšanu?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Nevarēja atcelt vCard f. imp./eksp."</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Nezināma kļūda."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nevarēja atvērt failu <xliff:g id="FILE_NAME">%s</xliff:g>: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nevarēja startēt eksportētāju: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nav eksportējamu kontaktpersonu datu."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Jūs esat atspējojis obligātu atļauju."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Eksportēšanas laikā radās kļūda: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Faila nosaukums ir pārāk garš (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Ievades/izvades kļūda"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Atmiņā nepietiek vietas. Iespējams, fails ir pārāk liels."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Neparedzēta iemesla dēļ nevarēja parsēt vCard failu."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Šāds formāts netiek atbalstīts."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nevarēja iegūt metainformāciju par vienu vai vairākiem konkrētiem vCard failiem."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Nevarēja importēt vienu vai vairākus failus (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšana pabeigta"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontaktpersonu eksportēšana ir pabeigta."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktpersonu eksportēšana ir pabeigta. Lai kopīgotu kontaktpersonas, noklikšķiniet uz paziņojuma."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Pieskarieties, lai kopīgotu kontaktpersonas."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšana atcelta"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontaktpersonu datu eksportēšana"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktpersonu dati tiek eksportēti."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nevarēja iegūt informāciju no datu bāzes."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nav nevienas eksportējamas kontaktpersonas. Ja jūsu tālrunī ir saglabātas kontaktpersonas, iespējams, jūsu datu pakalpojumu sniedzējs neļauj eksportēt kontaktpersonas no tālruņa."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard veidotājs netika pareizi startēts."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Nevarēja eksportēt"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontaktpersonas dati netika eksportēti.\nIemesls: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Notiek importēšana: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nevarēja nolasīt vCard datus"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Atcelta vCard datu lasīšana"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard faila <xliff:g id="FILENAME">%s</xliff:g> importēšana pabeigta"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Faila <xliff:g id="FILENAME">%s</xliff:g> importēšana atcelta"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Fails <xliff:g id="FILENAME">%s</xliff:g> drīzumā tiks importēts."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fails drīzumā tiks importēts."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Tika noraidīts vCard faila importēšanas pieprasījums. Vēlāk mēģiniet vēlreiz."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Fails <xliff:g id="FILENAME">%s</xliff:g> drīzumā tiks eksportēts."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fails drīzumā tiks eksportēts."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktpersonas drīzumā tiks eksportētas."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Tika noraidīts vCard faila eksportēšanas pieprasījums. Vēlāk mēģiniet vēlreiz."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontaktpersona"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Notiek vCard failu saglabāšana vietējā pagaidu kešatmiņā. Importēšana tiks sākta pēc neilga brīža."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Nevarēja importēt vCard datus."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kont. saņ., izm. NFC."</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Vai eksportēt kontaktp. datus?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Notiek saglabāšana kešatmiņā"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importē <xliff:g id="CURRENT_NUMBER">%s</xliff:g>. no <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksportēt .vcf failā"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Kārtot pēc"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Vārds"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Uzvārds"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Vārda formāts"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Vispirms rādīt vārdu"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Vispirms rādīt uzvārdu"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Konti"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Noklusējuma konts jaunām kontaktpersonām"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinhronizēt kontaktpersonu metadatus [IZSTRĀDES PROGRAMMATŪRA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Kontaktpersonu metadatu sinhronizācija"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mana informācija"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Iestatiet savu profilu"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Par lietotni Kontaktpersonas"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Iestatījumi"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Kopīgot redzamo kontaktpersonu datus"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Neizdevās kopīgot redzamās kontaktpersonas."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Kopīgot izlases kontaktpersonas"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Kopīgot visas kontaktpersonas"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Neizdevās kopīgot kontaktpersonas."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kontaktpersonu importēšana/eksportēšana"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Kontaktpersonu datu importēšana"</string>
+    <string name="share_error" msgid="665756457151793108">"Šīs kontaktpersonas datus nevar kopīgot."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nav nevienas kontaktpersonas, ko kopīgot."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Meklēt"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Rādāmās kontaktpersonas"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Rādāmās kontaktpersonas"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Pielāgota skatījuma definēšana"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Saglabāt"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Meklēt kontaktpersonas"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Izlase"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nav kontaktpersonu."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Dzēst bieži lietotos kontaktus"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Atlasiet SIM karti"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Pārvaldīt kontus"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importēt/eksportēt"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Bloķētie numuri"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"izmantojot <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>, izmantojot <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"pārtraukt meklēšanu"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Notīrīt meklēšanas lauku"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kontaktpersonu rādīšanas opcijas"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konts"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Vienmēr izmantot zvaniem"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Zvanīt, izmantojot"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Zvanīt ar piezīmi"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Ierakstiet piezīmi, ko nosūtīt ar zvanu..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SŪTĪT un ZVANĪT"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> no <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="zero"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nelasītu vienumu. </item>
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nelasīts vienums. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nelasīti vienumi. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Būvējuma versija"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Atklātā pirmkoda licences"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licences informācija par atklātā pirmkoda programmatūru"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Konfidencialitātes politika"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Pakalpojumu sniegšanas noteikumi"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Atklātā pirmkoda licences"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Neizdevās atvērt URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> atzīmēts"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> nav atzīmēts"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Sākt videozvanu"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Dzēst"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Daudzpunkte"</string>
+</resources>
diff --git a/res-common/values-mk-rMK-sw600dp/strings.xml b/res-common/values-mk-rMK-sw600dp/strings.xml
new file mode 100644
index 0000000..b276c53
--- /dev/null
+++ b/res-common/values-mk-rMK-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Уред"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Нема контакти што може да се извезат. Ако имате контакти на вашиот таблет, некои даватели на податоци може да не дозволат контактите да се извезуваат од таблетот."</string>
+</resources>
diff --git a/res-common/values-mk-rMK/strings.xml b/res-common/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..7f24638
--- /dev/null
+++ b/res-common/values-mk-rMK/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текстот е копиран"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Копирај во клип-таблата"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Повикај <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Јави се дома"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Повикај мобилен"</string>
+    <string name="call_work" msgid="8299062439076337075">"Јави се на работа"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Повикај факс на работа"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Повикај факс дома"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Повикај пејџер"</string>
+    <string name="call_other" msgid="4472141328347894937">"Повикај"</string>
+    <string name="call_callback" msgid="687494744634190411">"Направи повратен повик"</string>
+    <string name="call_car" msgid="9078083109758282133">"Повикај автомобил"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Повикај главен број во компанија"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Повикај ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Повикај главен број"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Повикај факс"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Повикај радио"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Повикај телекс"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Повикај TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Повикај мобилен на работа"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Повикај пејџер на работа"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Повикај <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Повикај MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Повик)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Испрати текстуална порака на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Испрати текстуална порака дома"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Испрати текстуална порака на мобилен"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Испрати текстуална порака на работа"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Испрати текстуална порака на факс на работа"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Испрати текстуална порака на факс дома"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Испрати текстуална порака на пејџер"</string>
+    <string name="sms_other" msgid="910895193552957097">"Испрати текстуална порака"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Испрати текстуална порака за повратен повик"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Испрати текстуална порака за автомобил"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Испрати текстуална порака на главен број во компанија"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Испрати текстуална порака на ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Испрати текстуална порака на главен број"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Испрати текстуална порака на факс"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Испрати текстуална порака на радио"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Испрати текстуална порака на телекс"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Испрати текстуална порака на TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Испрати текстуална порака на мобилен на работа"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Испрати текстуална порака на пејџер на работа"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Испрати текстуална порака на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Испрати текстуална порака на MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Порака)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Остварете видеоповик"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Исчисти често контактирани?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Ќе го исчистите списокот на често контактирани лица во апликациите „Контакти“ и „Телефон“ и ќе ги принудите апликациите на е-пошта одново да ги дознаат вашите параметри на обраќање."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Чистење често контактирани..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Достапен"</string>
+    <string name="status_away" msgid="6267905184545881094">"Отсутен"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Зафатен"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Контакти"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Друг"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Адресар"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Работен директориум"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Сите контакти"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Се пребарува..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Повеќе од <xliff:g id="COUNT">%d</xliff:g> се пронајдени."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Нема контакти"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> пронајден</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> пронајдени</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Брз контакт за <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Без име)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Често контактирани"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Прикажи контакт"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Сите контакти со телефонски броеви"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Контакти на Работниот профил"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Прикажи ажурирања"</string>
+    <string name="account_phone" msgid="325867897209266837">"Уред"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Име"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Прекар"</string>
+    <string name="full_name" msgid="885420216812981202">"Име"</string>
+    <string name="name_given" msgid="4153709115654909377">"Име"</string>
+    <string name="name_family" msgid="5317387657540738981">"Презиме"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Претставка на име"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Татково име"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Наставка на име"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Фонетско име"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Фонетско име"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Фонетско татково име"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Фонетско презиме"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-пошта"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Адреса"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Организација"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Врска"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Посебен датум"</string>
+    <string name="sms" msgid="8086289395154598654">"Текстуална порака"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Адреса"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Компанија"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Име"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Белешки"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Веб-сајт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Етикети"</string>
+    <string name="email_home" msgid="2230967805906450693">"Домашна е-пошта"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Мобилна е-пошта"</string>
+    <string name="email_work" msgid="7065971921227432400">"Работна е-пошта"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-пошта"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> е-пошта"</string>
+    <string name="email" msgid="5624424151176351591">"E-пошта"</string>
+    <string name="postal_street" msgid="881349814077356134">"Улица"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Поштенски фах"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Соседство"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Град"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Држава"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Поштенски број"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Земја"</string>
+    <string name="map_home" msgid="1221397355014741634">"Прикажи домашна адреса"</string>
+    <string name="map_work" msgid="9015981646907637207">"Прикажи адреса на работа"</string>
+    <string name="map_other" msgid="55098598855607997">"Прикажи адреса"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Прикажи <xliff:g id="CUSTOM">%s</xliff:g> адреса"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Разговор на AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Разговор на Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Разговор на Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Разговор на Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Разговор на QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Разговор на Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Разговор на ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Разговор на Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Разговор"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"избриши"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Отвори или затвори полиња со име"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Прошири ги или собери ги полињата за фонетско име"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Сите контакти"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Со ѕвезда"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Приспособи"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Контакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Сите други контакти"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Сите контакти"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Отстрани синхронизирана група"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Додај синхронизирана група"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Повеќе групи..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Отстранувањето на „<xliff:g id="GROUP">%s</xliff:g>“ од синхронизацијата ќе ги отстрани и сите негрупирани контакти од синхронизација."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Се зачувуваат опциите на екранот..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Готово"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Откажи"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Приспособен приказ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Зачувајте ги увезените контакти до:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Увези од СИМ картичка"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Увези од СИМ <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Увези од СИМ <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Увези од датотеката .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Откажи увоз на <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Откажи извоз на <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Не можеше да се откаже увоз/извоз на визит картичка"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Непозната грешка."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Не можеше да се отвори „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Не можеше да се вклучи извозникот: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Нема контакт што може да се извезе."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Оневозможивте потребна дозвола."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Настанаи грешка при извоз: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Бараното име на датотеката е предолго („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O грешка"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Нема доволно меморија. Датотеката е можеби премногу голема."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Визит картичката не можеше да се разложи од неочекувана причина."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Форматот не е поддржан."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Не можеше да собере мета информации за дадени датотека(и) на визит картичка(и)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Една или повеќе датотеки не можеа да се увезат (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Заврши извезувањето на <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Извозот на контакти заврши."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Извозот на контакти заврши, кликнете на известувањето за да ги споделите контактите."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Допрете за да ги споделите контактите."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Извезувањето на <xliff:g id="FILENAME">%s</xliff:g> е откажано."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Извезување податоци за контакт"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Податоците за контакт се извезуваат."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Не можеше да добие информации за базата на податоци."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Нема контакти што може да се извезат. Ако имате контакти на вашиот телефон, некои даватели на податоци може да не дозволат контактите да се извезуваат од телефонот."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Композиторот на визит картичката не започна правилно."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Не можеа да се извезат"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Податоците за контакт не се извезоа.\nПричина: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Увезување <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Не можеше да прочита податоци од визит картичка"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Читањето податоци од визит картичка е откажано"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Заврши увезувањето на визит картичката <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Увезувањето на <xliff:g id="FILENAME">%s</xliff:g> е откажано"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ќе се увезе наскоро."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Датотеката ќе се увезе наскоро."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Барањето за увезување визит картичка беше одбиено. Обидете се повторно подоцна."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ќе се извезе наскоро."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Датотеката ќе се извезе наскоро."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Контактите ќе се извезат наскоро."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Барањето за извезување визит картичка беше одбиено. Обидете се повторно подоцна."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"контакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Кеширање визит картичка(и) во локална привремена меморија. Реалниот увоз ќе започне наскоро."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Не можеше да се увезе визит картичка."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Контакт добиен преку NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Извези контакти?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кеширање"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Увезување <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Извези во датотеката .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Подреди по"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Име"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Презиме"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Формат на име"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Прво името"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Прво презимето"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Сметки"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Стандардна сметка за новите контакти"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Синхронизација на метаподатоци за контакт [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Синхронизација на метаподатоци за контакт"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Мои информации"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Поставете го вашиот профил"</string>
+    <string name="setting_about" msgid="3926137653588942297">"За Контакти"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Поставки"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Сподели видливи контакти"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Не успеаја да се споделат видливите контакти."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Сподели ги омилените контакти"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Сподели ги сите контакти"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Не успеа да се споделат контактите."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Увези/извези контакти"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Увези контакти"</string>
+    <string name="share_error" msgid="665756457151793108">"Овој контакт не може да се сподели."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Нема контакти за споделување."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Пребарај"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Контакти за прикажување"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Контакти за прикажување"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Дефинирајте приспособен приказ"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Зачувај"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Пребарајте контакти"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Омилени"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Нема контакти."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Исчисти чести"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Изберете СИМ-картичка"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Управувај со сметки"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Увези/извези"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Блокирани броеви"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"од <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"на <xliff:g id="DATE">%1$s</xliff:g> од <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"запри пребарување"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Исчисти го полето за пребарување"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Опции за прикажување контакт"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Сметка"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Секогаш користи го ова за повици"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Повикајте со"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Повик со белешка"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Напишете белешка да се испрати со повикот..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ИСПРАТИ И ПОВИКАЈ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"><xliff:g id="TITLE_2">%1$s</xliff:g> <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитана ставка. </item>
+      <item quantity="other"><xliff:g id="TITLE_2">%1$s</xliff:g> <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитани ставки. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Верзија"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Лиценци за софтвер со отворен код"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Детали за лиценците за софтвер со отворен код"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Политика за приватност"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Услови на користење"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Лиценци за софтвер со отворен код"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Врската не успеа да се отвори."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> е штиклирано"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> не е штиклирано"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Воспостави видеоповик"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Избриши"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Три точки"</string>
+</resources>
diff --git a/res-common/values-ml-rIN-sw600dp/strings.xml b/res-common/values-ml-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..994fe5c
--- /dev/null
+++ b/res-common/values-ml-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ഉപകരണം"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"എക്‌സ്‌പോർട്ടുചെയ്യാനാകുന്ന കോൺടാക്റ്റുകളൊന്നുമില്ല. നിങ്ങളുടെ ടാബ്‌ലെറ്റിൽ കോൺടാക്റ്റുകളുണ്ടെങ്കിൽ, ടാബ്‌ലെറ്റിൽ നിന്നും കോൺടാക്റ്റുകൾ എക്‌സ്‌പോർട്ടുചെയ്യാൻ ചില സേവന ദാതാക്കൾ അനുവദിക്കാനിടയില്ല."</string>
+</resources>
diff --git a/res-common/values-ml-rIN/strings.xml b/res-common/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..6682839
--- /dev/null
+++ b/res-common/values-ml-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"വാചകം പകർത്തി"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക"</string>
+    <string name="call_custom" msgid="2786306789889210756">"വിളിക്കുക <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"വീട്ടിലെ ഫോണിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"മൊബൈലിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_work" msgid="8299062439076337075">"ഔദ്യോഗിക ഫോണിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"ഔദ്യോഗിക ഫാക്‌സിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"വീട്ടിലെ ഫാക്‌സിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_pager" msgid="3038080882899955112">"പേജറിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_other" msgid="4472141328347894937">"വിളിക്കുക"</string>
+    <string name="call_callback" msgid="687494744634190411">"കോൾബാക്ക് നമ്പറിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_car" msgid="9078083109758282133">"കാർ നമ്പറിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"കമ്പനിയിലെ പ്രധാന ഫോണിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN-ലേക്ക് വിളിക്കുക"</string>
+    <string name="call_main" msgid="4640261071249938558">"പ്രധാന ഫോണിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ഫാക്‌സിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_radio" msgid="9055749313292712021">"റേഡിയോയിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ടെലക്‌സിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD-യിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"ഔദ്യോഗിക മൊബൈലിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ഔദ്യോഗിക പേജറിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"വിളിക്കുക <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS ഫോണിലേക്ക് വിളിക്കുക"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (വിളിക്കുക)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> എന്നതിലേക്ക് വാചക സന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_home" msgid="7765831490534280540">"വീട്ടിലെ ഫോണിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"മൊബൈലിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ഔദ്യോഗിക ഫോണിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ഔദ്യോഗിക ഫാക്‌സിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"വീട്ടിലെ ഫാക്‌സിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"പേജറിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_other" msgid="910895193552957097">"വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_callback" msgid="728414485478941361">"കോൾബാക്ക് ഫോണിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_car" msgid="8543669230270954512">"കാർ ഫോണിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"കമ്പനി പ്രധാന ഫോണിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN-ലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_main" msgid="6815987840926184815">"പ്രധാന ഫോണിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ഫാക്‌സിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"റേഡിയോയിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ടെലക്‌സിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD എന്നതിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ഔദ്യോഗിക മൊബൈലിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ഔദ്യോഗിക പേജറിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> എന്നതിലേക്ക് വാചക സന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS നമ്പറിലേക്ക് വാചകസന്ദേശമയയ്‌ക്കുക"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (സന്ദേശം)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"വീഡിയോ കോൾ ചെയ്യുക"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"സ്ഥിരംവിളിക്കുന്നവരെ മായ്‌ക്കണോ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"നിങ്ങൾ കോൺടാക്‌റ്റുകളുടെയും ഫോണിന്റെയും അപ്ലിക്കേഷനുകളിലെ പതിവായി കോൺടാക്റ്റുചെയ്യുന്നവരുടെ ലിസ്റ്റ് മായ്‌ക്കുകയും സ്‌ക്രാച്ചിൽ നിന്നും ബന്ധപ്പെടൽ മുൻഗണനകൾ അറിയാൻ ഇമെയിൽ അപ്ലിക്കേഷനുകളെ പ്രേരിപ്പിക്കുകയും ചെയ്യും."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"സ്ഥിരംവിളിക്കുന്നവരെ മായ്‌ക്കുന്നു…"</string>
+    <string name="status_available" msgid="4832569677396634846">"ലഭ്യം"</string>
+    <string name="status_away" msgid="6267905184545881094">"ലഭ്യമല്ല"</string>
+    <string name="status_busy" msgid="7111912905211403545">"തിരക്കിലാണ്"</string>
+    <string name="contactsList" msgid="7140022347217602605">"വിലാസങ്ങൾ"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"മറ്റുള്ളവ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ഡയറക്‌ടറി"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ഔദ്യോഗിക ഡയറക്‌ടറി"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"എല്ലാ കോൺടാക്റ്റുകളും"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"തിരയുന്നു…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>-ൽ കൂടുതൽ കണ്ടെത്തി."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"കോൺടാക്റ്റുകളൊന്നുമില്ല"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> എണ്ണം കണ്ടെത്തി</item>
+      <item quantity="one">ഒരെണ്ണം കണ്ടെത്തി</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> എന്നയാളുടെ ദ്രുത കോൺടാക്റ്റ്"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(പേരില്ല)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"പതിവ് കോൺടാക്റ്റുകൾ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"കോൺടാക്റ്റ് കാണുക"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ഫോൺ നമ്പറുകളുള്ള എല്ലാ കോൺടാക്റ്റുകളും"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"ഔദ്യോഗിക പ്രൊഫൈൽ കോൺടാക്റ്റുകൾ"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"അപ്‌ഡേറ്റുകള്‍ കാണുക"</string>
+    <string name="account_phone" msgid="325867897209266837">"ഉപകരണം"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"പേര്"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"വിളിപ്പേര്"</string>
+    <string name="full_name" msgid="885420216812981202">"പേര്"</string>
+    <string name="name_given" msgid="4153709115654909377">"ഫസ്റ്റ് നെയിം"</string>
+    <string name="name_family" msgid="5317387657540738981">"ലാസ്റ്റ് നെയിം"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"പേര് പ്രിഫിക്‌സ്"</string>
+    <string name="name_middle" msgid="3951610314424632183">"പേരിന്റെ മധ്യഭാഗം"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"പേര് സഫിക്‌സ്"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ഉച്ചാരണപ്രകാരമുള്ള പേര്"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ഫസ്റ്റ് നെയിം"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"പേരിന്റെ മധ്യഭാഗം"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"പേരിന്റെ അവസാന ഭാഗം"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ഫോണ്‍"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ഇമെയിൽ"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"വിലാസം"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ഓര്‍ഗനൈസേഷന്‍"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ബന്ധം"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"പ്രത്യേക തീയതി"</string>
+    <string name="sms" msgid="8086289395154598654">"വാചക സന്ദേശം"</string>
+    <string name="postal_address" msgid="7692926530081579786">"വിലാസം"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"കമ്പനി"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ജോലി"</string>
+    <string name="label_notes" msgid="3997277594846722699">"കുറിപ്പുകള്‍"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"വെബ്‌സൈറ്റ്"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ലേബലുകൾ"</string>
+    <string name="email_home" msgid="2230967805906450693">"വീട്ടിലെ ഇമെയിൽ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"മൊബൈൽ ഇമെയിൽ"</string>
+    <string name="email_work" msgid="7065971921227432400">"ഔദ്യോഗിക ഇമെയിൽ"</string>
+    <string name="email_other" msgid="4601881243553289615">"ഇമെയിൽ"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> എന്നതിലേക്ക് ഇമെയിൽ ചെയ്യുക"</string>
+    <string name="email" msgid="5624424151176351591">"ഇമെയിൽ"</string>
+    <string name="postal_street" msgid="881349814077356134">"സ്‌ട്രീറ്റ്"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO ബോക്സ്"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"സമീപസ്ഥലം"</string>
+    <string name="postal_city" msgid="3173008531169519309">"നഗരം"</string>
+    <string name="postal_region" msgid="1695206048198921115">"സംസ്ഥാനം"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"തപാൽ കോഡ്"</string>
+    <string name="postal_country" msgid="3988452247038791892">"രാജ്യം"</string>
+    <string name="map_home" msgid="1221397355014741634">"വീട്ടുവിലാസം കാണുക"</string>
+    <string name="map_work" msgid="9015981646907637207">"ഔദ്യോഗിക വിലാസം കാണുക"</string>
+    <string name="map_other" msgid="55098598855607997">"വിലാസം കാണുക"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> വിലാസം കാണുക"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക"</string>
+    <string name="chat" msgid="6297650784873558837">"ചാറ്റുചെയ്യുക"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ഇല്ലാതാക്കുക"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"പേരിന്റെ ഫീൽഡുകൾ വിപുലീകരിക്കുക അല്ലെങ്കിൽ ചുരുക്കുക"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ഫോണിറ്റിക്ക് പേരിന്റെ ഫീൽഡുകൾ വികസിപ്പിക്കുക അല്ലെങ്കിൽ ചുരുക്കുക"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"എല്ലാ കോൺടാക്റ്റുകളും"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"നക്ഷത്രമിട്ടവ"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"ഇഷ്‌ടാനുസൃതമാക്കുക"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"കോൺടാക്റ്റ്"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"മറ്റെല്ലാ കോൺടാക്റ്റുകളും"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"എല്ലാ കോൺടാക്റ്റുകളും"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"സമന്വയ ഗ്രൂപ്പ് നീക്കംചെയ്യുക"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"സമന്വയ ഗ്രൂപ്പ് ചേർക്കുക"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"കൂടുതൽ ഗ്രൂപ്പുകൾ…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"സമന്വയത്തിൽ നിന്നും \"<xliff:g id="GROUP">%s</xliff:g>\" നീക്കംചെയ്യുന്നത്, സമന്വയത്തിൽ നിന്നും ഗ്രൂപ്പുചെയ്യാത്ത എല്ലാ കോൺടാക്റ്റുകളേയും നീക്കംചെയ്യുന്നതിനിടയാക്കും."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ഡിസ്‌പ്ലേ ഓപ്‌ഷനുകൾ സംരക്ഷിക്കുന്നു…"</string>
+    <string name="menu_done" msgid="32470053723443112">"പൂർത്തിയായി"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"റദ്ദാക്കുക"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"ഇഷ്‌ടാനുസൃതമാക്കിയ കാഴ്‌ച"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"ഇമ്പോർട്ടുചെയ്ത കോൺടാക്റ്റുകൾ ഇനിപ്പറയുന്നതിലേക്ക് സംരക്ഷിക്കുക:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"സിം കാർഡിൽ നിന്നും ഇമ്പോർട്ടുചെയ്യുക"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM-ൽ നിന്ന് ഇമ്പോർട്ടുചെയ്യുക <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM-ൽ നിന്ന് ഇമ്പോർട്ടുചെയ്യുക <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ഫയലിൽ നിന്ന് ഇമ്പോർട്ടുചെയ്യൂ"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> എന്നത് ഇമ്പോർട്ടുചെയ്യുന്നത് റദ്ദാക്കണോ?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> എന്നത് എക്‌സ്‌പോർട്ടുചെയ്യുന്നത് റദ്ദാക്കണോ?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard ഡൗൺലോഡ്/അപ്‌ലോഡ് റദ്ദാക്കാനായില്ല"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"അജ്ഞാത പിശക്."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" തുറക്കാനായില്ല: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"എക്‌സ്‌പോർട്ടർ ആരംഭിക്കാനായില്ല: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"എക്‌സ്‌പോർട്ടുചെയ്യാനാകുന്ന കോൺടാക്റ്റ് ഒന്നുമില്ല."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"ആവശ്യമായ ഒരു അനുമതി നിങ്ങൾ പ്രവർത്തനരഹിതമാക്കി."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"എക്‌സ്‌പോർട്ടുചെയ്യുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ആവശ്യമായ ഫയലിന്റെ പേര് ദൈർഘ്യമേറിയതാണ് (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O പിശക്"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"ആവശ്യമായ മെമ്മറിയില്ല. ഫയൽ വളരെ വലുതായിരിക്കാം."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ഒരു അപ്രതീക്ഷിത കാരണത്താൽ vCard പാഴ്‌സുചെയ്യാനായില്ല."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ഫോർമാറ്റിനെ പിന്തുണയ്‌ക്കില്ല."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"നൽകിയിരിക്കുന്ന vCard ഫയലിന്റെ (ഫയലുകളുടെ) മീറ്റ വിവരം ശേഖരിക്കാനായില്ല."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ഒന്നോ അതിലധികമോ ഫയലുകൾ ഇമ്പോർട്ടുചെയ്യാനായില്ല (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> എക്‌സ്‌പോർട്ടുചെയ്യൽ പൂർത്തിയായി."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"കോൺടാക്റ്റുകൾ എക്‌സ്‌പോർട്ടുചെയ്യൽ പൂർത്തിയായി."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"കോൺടാക്റ്റുകൾ എക്‌സ്‌പോർട്ടുചെയ്യൽ പൂർത്തിയായി, കോൺടാക്റ്റുകൾ പങ്കിടുന്നതിന് അറിയിപ്പിൽ ക്ലിക്കുചെയ്യുക."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"കോൺടാക്റ്റുകൾ പങ്കിടാൻ ടാപ്പുചെയ്യുക."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> എക്‌സ്‌പോർട്ടുചെയ്യൽ റദ്ദാക്കി."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"കോൺടാക്റ്റ് ഡാറ്റ എക്‌സ്‌പോർട്ടുചെയ്യുന്നു"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"കോൺടാക്റ്റ് ഡാറ്റ എക്സ്പോർട്ടുചെയ്യുകയാണ്."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ഡാറ്റാബേസ് വിവരം നേടാനായില്ല."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"എക്‌സ്‌പോർട്ടുചെയ്യാനാകുന്ന കോൺടാക്റ്റുകളൊന്നുമില്ല. നിങ്ങളുടെ ഫോണിൽ കോൺടാക്റ്റുകളുണ്ടെങ്കിൽ, ഫോണിൽ നിന്നും കോൺടാക്റ്റുകൾ എക്‌സ്‌പോർട്ടുചെയ്യാൻ ചില സേവന ദാതാക്കൾ അനുവദിക്കാനിടയില്ല."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard കമ്പോസർ ശരിയായി ആരംഭിച്ചില്ല."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"എക്‌സ്‌പോർട്ടുചെയ്യാനായില്ല"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"കോൺടാക്റ്റ് ഡാറ്റ എക്‌സ്‌പോർട്ടുചെയ്‌തില്ല.\nകാരണം: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> എന്നയാളെ ഇമ്പോർട്ടുചെയ്യുന്നു."</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard ഡാറ്റ വായിക്കാനായില്ല"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard ഡാറ്റ വായിക്കുന്നത് റദ്ദാക്കി"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> ഇമ്പോർട്ടുചെയ്യൽ പൂർത്തിയായി"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> ഇമ്പോർട്ടുചെയ്യൽ റദ്ദാക്കി"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> എന്നത് ഉടൻ ഇമ്പോർട്ടുചെയ്യും."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ഈ ഫയൽ ഉടൻ ഇമ്പോർട്ടുചെയ്യും."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard ഇമ്പോർട്ടുചെയ്യൽ അഭ്യർത്ഥന നിരസിച്ചു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> എന്നത് ഉടൻ എക്‌സ്‌പോർട്ടുചെയ്യും."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ഫയൽ ഉടൻ എക്സ്പോർട്ടുചെയ്യും."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"കോൺടാക്റ്റുകൾ താമസിയാതെ എക്സ്പോർട്ടുചെയ്യും."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard എക്‌സ്‌പോർട്ടുചെയ്യൽ അഭ്യർത്ഥന നിരസിച്ചു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"കോൺടാക്റ്റ്"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"പ്രാദേശിക താൽക്കാലിക സംഭരണത്തിലേക്ക് vCard (vCard-കൾ) കാഷെ ചെയ്യുന്നു. യഥാർത്ഥ ഇമ്പോർട്ടുചെയ്യൽ ഉടൻ ആരംഭിക്കും."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard ഇമ്പോർട്ടുചെയ്യാനായില്ല."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC മുഖേന ലഭിച്ച കോൺടാക്റ്റ്"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"കോൺടാക്റ്റുകൾ എക്‌സ്‌പോർട്ടുചെയ്യണോ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"കാഷെ ചെയ്യൽ"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> ഇമ്പോർട്ടുചെയ്യുന്നു: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ഫയലിലേക്ക് എക്സ്പോർട്ട് ചെയ്യൂ"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ഇതുപ്രകാരം അടുക്കുക"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"ഫസ്റ്റ് നെയിം"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"ലാസ്റ്റ് നെയിം"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"പേരിന്റെ ഫോർമാറ്റ്"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ഫസ്റ്റ് നെയിം ആദ്യം"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"ലാസ്റ്റ് നെയിം ആദ്യം"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"അക്കൗണ്ടുകൾ"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"പുതിയ കോൺടാക്റ്റുകൾക്കായുള്ള ഡിഫോൾട്ട് അക്കൗണ്ട്"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"കോൺടാക്റ്റ് മെറ്റാഡാറ്റ സമന്വയിപ്പിക്കുക [ഡോഗ്‌ഫുഡ്]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"കോൺടാക്റ്റ് മെറ്റാഡാറ്റ സമന്വയിപ്പിക്കുക"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"എന്റെ വിവരം"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"നിങ്ങളുടെ പ്രൊഫൈൽ സജ്ജമാക്കുക"</string>
+    <string name="setting_about" msgid="3926137653588942297">"കോണ്‍ടാക്റ്റുകളെ കുറിച്ച്"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ക്രമീകരണം"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"ദൃശ്യമായ കോൺടാക്റ്റുകൾ പങ്കിടുക"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"ദൃശ്യമായ കോൺടാക്റ്റുകൾ പങ്കിടുന്നത് പരാജയപ്പെട്ടു."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"പ്രിയപ്പെട്ട കോൺടാക്റ്റുകൾ പങ്കിടുക"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"എല്ലാ കോൺടാക്റ്റുകളും പങ്കിടുക"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"കോൺടാക്റ്റുകൾ പങ്കിടുന്നത് പരാജയം."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"കോൺടാക്റ്റ് ഡൗൺലോഡ്/അപ്‌ലോഡ്"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"കോൺടാക്റ്റുകൾ ഇമ്പോർട്ടുചെയ്യുക"</string>
+    <string name="share_error" msgid="665756457151793108">"ഈ കോൺടാക്റ്റ് പങ്കിടാനാകില്ല."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"പങ്കിടാൻ കോൺടാക്റ്റുകളൊന്നും ഇല്ല."</string>
+    <string name="menu_search" msgid="7464453023659824700">"തിരയുക"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ദൃശ്യമാക്കേണ്ടവ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ദൃശ്യമാക്കേണ്ടവ"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"ഇഷ്‌ടാനുസൃതമാക്കിയ കാഴ്‌ച നിർവ്വചിക്കുക"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"സംരക്ഷിക്കുക"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"കോണ്‍‌ടാക്റ്റുകള്‍ തിരയുക"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"പ്രിയപ്പെട്ടവർ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"കോൺടാക്റ്റുകൾ ഒന്നുമില്ല."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"സ്ഥിരംവിളിക്കുന്നവരെ മായ്‌ക്കൂ"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"സിം കാർഡ് തിരഞ്ഞെടുക്കുക"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"മാനേജുചെയ്യുക"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ഡൗൺലോഡ്/അപ്‌ലോഡ്"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"ബ്ലോക്കുചെയ്ത നമ്പറുകൾ"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> വഴി"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> വഴി <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"തിരയൽ നിർത്തുക"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"തിരയുന്നത് മായ്‌ക്കുക"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"കോൺടാക്‌റ്റ് ഡിസ്പ്ലേ ഓപ്ഷനുകൾ"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"അക്കൗണ്ട്"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ഇത് എല്ലായ്‌പ്പോഴും കോളുകൾക്കായി ഉപയോഗിക്കുക"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ഇത് ഉപയോഗിച്ച് വിളിക്കുക"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"കുറിപ്പിനൊപ്പം വിളിക്കുക"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"കോളിനൊപ്പം അയയ്ക്കുന്നതിന് ഒരു കുറിപ്പ് ടൈപ്പുചെയ്യുക ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"അയയ്ക്കുക, വിളിക്കുക"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> വായിക്കാത്ത ഇനങ്ങൾ. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> വായിക്കാത്ത ഇനം. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"ബിൽഡ് പതിപ്പ്"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ഓപ്പൺ സോഴ്‌സ് ലൈസൻസ്"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്‌വെയറിനായുള്ള ലൈസൻസ് വിശദാംശങ്ങൾ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"സ്വകാര്യതാ നയം"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"സേവന നിബന്ധനകൾ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ഓപ്പൺ സോഴ്‌സ് ലൈസൻസ്"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url തുറക്കാനായില്ല."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ചെക്കുചെയ്തു"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ചെക്കുചെയ്തില്ല"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"വീഡിയോ കോൾ ചെയ്യുക"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ഇല്ലാതാക്കുക"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"എല്ലിപ്‌സിസ്"</string>
+</resources>
diff --git a/res-common/values-mn-rMN-sw600dp/strings.xml b/res-common/values-mn-rMN-sw600dp/strings.xml
new file mode 100644
index 0000000..9d51413
--- /dev/null
+++ b/res-common/values-mn-rMN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Төхөөрөмж"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Экспортлох боломжтой харилцагч байхгүй байна. Таны таблетад харилцагч байсан ч гэсэн зарим өгөгдөл нийлүүлэгчээс харилцагчдын мэдээллийг таблетаас экспортлохыг зөвшөөрдөггүй."</string>
+</resources>
diff --git a/res-common/values-mn-rMN/strings.xml b/res-common/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..102e8dd
--- /dev/null
+++ b/res-common/values-mn-rMN/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текст хуулагдав"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Түр санах ойд хуулах"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> руу залгах"</string>
+    <string name="call_home" msgid="1479549630992276827">"Гэрийн утас руу залгах"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Гар утас руу залгах"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ажил руу залгах"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ажлын факс руу залгах"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Гэрийн факс руу залгах"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Пейжер рүү залгах"</string>
+    <string name="call_other" msgid="4472141328347894937">"Залгах"</string>
+    <string name="call_callback" msgid="687494744634190411">"Дуудлага хүлээж авахаар залгах"</string>
+    <string name="call_car" msgid="9078083109758282133">"Машин руу залгах"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Компаний үндсэн дугаар руу залгах"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN руу залгах"</string>
+    <string name="call_main" msgid="4640261071249938558">"Үндсэн дугаар руу залгах"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Факс руу залгах"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Радио руу залгах"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Телекс рүү залгах"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD рүү залгах"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ажлын гар утас руу залгах"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ажлын пейжер рүү залгах"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> руу залгах"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS рүү залгах"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Залгах)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> руу зурвас илгээх"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Гэрийн утас руу зурвас илгээх"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Гар утас руу зурвас илгээх"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Ажил руу зурвас илгээх"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Ажлын факс руу зурвас илгээх"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Гэрийн факс руу зурвас илгээх"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Пейжер рүү зурвас илгээх"</string>
+    <string name="sms_other" msgid="910895193552957097">"Зурвас илгээх"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Дуудлага авах зурвас илгээх"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Машин руу зурвас илгээх"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Компаний үндсэн дугаар руу зурвас илгээх"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN рүү зурвас илгээх"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Үндсэн дугаар руу зурвас илгээх"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Факс руу зурвас илгээх"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Радио руу зурвас илгээх"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Телекс рүү зурвас илгээх"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD рүү зурвас илгээх"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Ажлын гар утас руу зурвас илгээх"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Ажлын пейжэр рүү зурвас илгээх"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> руу зурвас бичих"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS руу зурвас илгээх"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Зурвас илгээх)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Видео дуудлага хийх"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Байнга холбоо барьдаг харилцагчдын жагсаалтыг устгах уу?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Та холбоо барих хэсэг болон утасны програмд байгаа тогтмол холбоо баридаг хаягуудыг устгах ба имэйл програмуудыг таны холбоо барих хаягуудыг эрэмбэлэх үйлдлийг идэвхжүүлэх болно."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Байнга холбоо барьдаг харилцагчдын жагсаалтыг устгаж байна…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Холбогдсон"</string>
+    <string name="status_away" msgid="6267905184545881094">"Холдсон"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Завгүй"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Харилцагчид"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Бусад"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Директор"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Ажлын лавлагаа"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Бүх харилцагчид"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Хайж байна..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>-с олон олдлоо."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Харилцагч байхгүй"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> олдсон байна</item>
+      <item quantity="one">1 олдсон байна</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g>-тай шууд холбогдох"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(нэр байхгүй)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Байнга холбоо барьдаг"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Харилцагчийг харах"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Утасны дугаартай бүх харилцагчид"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Ажлын профайлын харилцагч"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Шинэчлэлтүүдийг харах"</string>
+    <string name="account_phone" msgid="325867897209266837">"Төхөөрөмж"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Нэр"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Хоч"</string>
+    <string name="full_name" msgid="885420216812981202">"Нэр"</string>
+    <string name="name_given" msgid="4153709115654909377">"Өөрийн нэр"</string>
+    <string name="name_family" msgid="5317387657540738981">"Овог"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Нэрний урьдитгал"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Дундах нэр"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Нэрний дагавар"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Авианы нэр"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Өөрийн нэрний дуудлага"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Дундах авианы нэр"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Овгийн дуудлага"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Утас"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Имэйл"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Хаяг"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Байгууллага"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Хамаарал"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Баярт өдөр"</string>
+    <string name="sms" msgid="8086289395154598654">"Зурвас"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Хаяг"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Компани"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Гарчиг"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Тэмдэглэл"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Вебсайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Шошго"</string>
+    <string name="email_home" msgid="2230967805906450693">"Гэр рүү имэйлдэх"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Гар утас руу имэйлдэх"</string>
+    <string name="email_work" msgid="7065971921227432400">"Ажил руу имэйлдэх"</string>
+    <string name="email_other" msgid="4601881243553289615">"Имэйлдэх"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> рүү имэйлдэх"</string>
+    <string name="email" msgid="5624424151176351591">"Имэйл"</string>
+    <string name="postal_street" msgid="881349814077356134">"Гудамж"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"ШХ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Хөрш"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Хот"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Муж улс"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Зип код"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Улс"</string>
+    <string name="map_home" msgid="1221397355014741634">"Гэрийн хаяг харах"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ажлын хаяг харах"</string>
+    <string name="map_other" msgid="55098598855607997">"Хаяг харах"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> хаяг харах"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM ашиглан чатлах"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live ашиглан чатлах"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo ашиглан чатлах"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype ашиглан чатлах"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ ашиглан чатлах"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk ашиглан чатлах"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ ашиглан чатлах"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber ашиглан чатлах"</string>
+    <string name="chat" msgid="6297650784873558837">"Чат"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"устгах"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Нэрийн талбаруудыг дэлгэх буюу хумих"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Нэр галиглах талбарыг дэлгэх болон хумих"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Бүх харилцагчид"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Одтой"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Тохируулах"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Харилцагч"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Бусад бүх харилцагчид"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Бүх харилцагчид"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Синк бүлгэмийг арилгах"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Синк бүлгэм нэмэх"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Өөр бүлгэмүүд…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\"-г синкээс хассанаар бүлгэмээс хасагдсан бүх харилцагчдыг мөн синкээс хасах болно."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Харуулах тохиргоог хадгалж байна…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Дууссан"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Цуцлах"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Тусгай харагдац"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Импортолсон харилцагчийн хаягийг хадгалах:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM картаас импорт хийх"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>-с импортлох"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>-с импортлох"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf файлаас импортлох"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g>-г импорт хийхийг цуцлах уу?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g>-г экспорт хийхийг цуцлах уу?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard импорт/экспорт хийхийг цуцлаж чадсангүй"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Тодорхойгүй алдаа."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\"-г нээж чадсангүй: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Экспорт хийгчийг эхлүүлж чадсангүй: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Экспорт хийж болох харилцагч байхгүй."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Та шаардлагатай зөвшөөрлийг идэвхгүй болгосон байна."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Экспорт хийх явцад алдаа гарсан: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Шаардагдах файлын нэр хэт урт (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O алдаа"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Санах ой хүрэхгүй байна. Файл хэт том байж магадгүй."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Тодорхойгүй шалтгаанаар vCard-г задлаж чадсангүй."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Формат нь дэмжигдэхгүй байна."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Өгөгдсөн vCard файлын мета мэдээллийг цуглуулж чадсангүй."</string>
+    <!-- String.format failed for translation -->
+    <!-- no translation found for fail_reason_failed_to_read_files (9213844535907986665) -->
+    <skip />
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>-г экспорт хийж дууссан."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Харилцагчийн жагсаалтыг экспортолж дууслаа."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Харилцагчдыг экспортолж дууссан. Харилцагчдыг хуваалцахын тулд мэдэгдлийг дарна уу."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Харилцагчдыг хуваалцахын тулд дарна уу."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>-г экспорт хийхийг цуцлав."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Харилцагчийн өгөгдлийг экспорт хийж байна"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Харилцагчдын өгөгдлийг экпортолсон."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Өгөгдлийн сангийн мэдээллийг авч чадсангүй"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Экспорт хийж болох харилцагчид алга байна. Хэрэв та утсандаа харилцагчидтай байгаа бол зарим өгөгдөл нийлүүлэгчээс харилцагчдын мэдээллийг утаснаас экспорт хийхийг зөвшөөрөхгүй байж магадгүй."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard бичигч зохих ёсоор эхэлсэнгүй."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Экспорт хийж чадсангүй"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Харилцагчийн өгөгдлийг экспорт хийсэнгүй.\nШалтгаан: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g>-г импорт хийж байна"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard өгөгдлийг уншиж чадсангүй"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard өгөгдөл уншихыг цуцлав"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> -г импорт хийж дууссан"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>-г импорт хийхийг цуцлав"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g>-г удахгүй импорт хийх болно."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Файлыг удахгүй импорт хийх болно."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard импорт хийх хүсэлтийг зөвшөөрсөнгүй. Дараа дахин оролдоно уу."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g>-г удахгүй экспорт хийх болно."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Энэ файлыг удахгүй экспортлох болно."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Харилцагчдыг удахгүй экспортлох болно."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard экспорт хийх хүсэлтийг зөвшөөрсөнгүй. Дараа дахин оролдоно уу."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"харилцагч"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard-г дотоод түр санд кеш хийж байна. Удахгүй бодитоор импорт хийж эхлэх болно."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard-г импорт хийж чадсангүй."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC-р хүлээн авсан харилцагч"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Харилцагчдыг экспорт хийх үү?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кеш хийж байна"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Импорт хийж байна <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf файл болгож экспортлох"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Эрэмбэлэх"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Өөрийн нэр"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Овог"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Нэрний формат"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Нэрийг эхэнд нь"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Овгийг эхэнд нь"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Бүртгэл"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Шинэ харилцагчийн өгөгдмөл бүртгэл"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Харилцагчдын мета-өгөгдлийг синк хийх [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Харилцагчдын мета-өгөгдлийг синк хийх"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Миний мэдээлэл"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Өөрийн профайлыг тохируулна уу"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Харилцагчийн хаягийн тухай"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Тохиргоо"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Харагдах харилцагчдыг хуваалцах"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Харагдаж байгаа харилцагчийн хаягийг хуваалцаж чадсангүй."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Дуртай харилцагчдаа хуваалцах"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Бүх харилцагчдыг хуваалцах"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Харилцагчдыг хуваалцаж чадсангүй."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Харилцагчид импортлох/экспортлох"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Харилцагчид импортлох"</string>
+    <string name="share_error" msgid="665756457151793108">"Энэ харилцагчийг хуваалцах боломжгүй."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Хуваалцах харилцагчийн жагсаалт алга."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Хайх"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Харуулах харилцагчид"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Харуулах харилцагчид"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Тусгай харагдацыг тодорхойлох"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Хадгалах"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Харилцагчдаас хайх"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Таалагддаг"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Харилцагч байхгүй."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Байнга харилцсаныг арилгах"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM карт сонгоно уу"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Бүртгэлийг удирдах"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Импорт/экспорт"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Хориглосон дугаар"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g>-р"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g>-н <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"хайлтыг зогсоох"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Хайлтыг цэвэрлэх"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Харилцагчийн харагдах сонголт"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Бүртгэл"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Дуудлагад байнга үүнийг ашиглах"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Залгах"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Тэмдэглэл бүхий дуудлага хийх"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Дуудлаганд илгээх тэмдэглэл бичнэ үү..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ИЛГЭЭХ &amp; ЗАЛГАХ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> уншаагүй байна. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> уншаагүй байна. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Боловсруулсан хувилбар"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Нээлттэй эхийн лиценз"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Нээлттэй эхийн програм хангамжийн лицензийн мэдээлэл"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Нууцлалын бодлого"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Үйлчилгээний нөхцөл"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Нээлттэй эхийн лиценз"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"URL-г нээж чадсангүй."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g>-г шалгасан"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g>-г шалгаагүй"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Видео дуудлага хийх"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Устгах"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Олон цэг"</string>
+</resources>
diff --git a/res-common/values-mr-rIN-sw600dp/strings.xml b/res-common/values-mr-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..44d1cc1
--- /dev/null
+++ b/res-common/values-mr-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"डिव्हाइस"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"निर्यात करण्यायोग्य संपर्क नाहीत. आपल्याकडे आपल्या टॅब्लेटवर संपर्क असल्यास, काही डेटा प्रदाते टॅब्लेटवरून संपर्क निर्यात करण्यास कदाचित अनुमती देणार नाहीत."</string>
+</resources>
diff --git a/res-common/values-mr-rIN/strings.xml b/res-common/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..767cab0
--- /dev/null
+++ b/res-common/values-mr-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"मजकूर कॉपी केला"</string>
+    <string name="copy_text" msgid="3424081789297978355">"क्लिपबोर्डवर कॉपी करा"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> ला कॉल  करा"</string>
+    <string name="call_home" msgid="1479549630992276827">"निवासस्‍थानी कॉल करा"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"मोबाईलवर कॉल करा"</string>
+    <string name="call_work" msgid="8299062439076337075">"कार्यस्‍थानी कॉल करा"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"कार्यस्‍थानी फॅक्‍स वर कॉल करा"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"निवास फॅक्‍स वर कॉल करा"</string>
+    <string name="call_pager" msgid="3038080882899955112">"पेजर वर कॉल करा"</string>
+    <string name="call_other" msgid="4472141328347894937">"कॉल करा"</string>
+    <string name="call_callback" msgid="687494744634190411">"कॉलबॅकवर कॉल करा"</string>
+    <string name="call_car" msgid="9078083109758282133">"कारला कॉल करा"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"कंपनी मुख्‍य ला कॉल करा"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN कॉल करा"</string>
+    <string name="call_main" msgid="4640261071249938558">"मुख्य वर कॉल करा"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"फॅक्स वर कॉल करा"</string>
+    <string name="call_radio" msgid="9055749313292712021">"रेडिओ वर कॉल करा"</string>
+    <string name="call_telex" msgid="2909886619224843563">"टेलेक्स वर कॉल करा"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD वर कॉल करा"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"कार्यस्‍थानी मोबाईलवर कॉल करा"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"कार्यस्‍थानी पेजरवर कॉल करा"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> ला कॉल  करा"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS वर कॉल करा"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (कॉल करा)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> मजकूर पाठवा"</string>
+    <string name="sms_home" msgid="7765831490534280540">"निवासस्थानी मजकूर पाठवा"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"मोबाईलवर मजकूर पाठवा"</string>
+    <string name="sms_work" msgid="3910570578912367742">"कार्यस्थानी मजकूर पाठवा"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"कार्य फॅक्सवर मजकूर पाठवा"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"निवासस्थान फॅक्सवर मजकूर पाठवा"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"पेजरवर मजकूर पाठवा"</string>
+    <string name="sms_other" msgid="910895193552957097">"मजकूर"</string>
+    <string name="sms_callback" msgid="728414485478941361">"कॉलबॅक वर मजकूर पाठवा"</string>
+    <string name="sms_car" msgid="8543669230270954512">"कार वर मजकूर पाठवा"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"कंपनी मुख्य वर मजकूर पाठवा"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN वर मजकूर पाठवा"</string>
+    <string name="sms_main" msgid="6815987840926184815">"मुख्य वर मजकूर पाठवा"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"फॅक्सवर मजकूर पाठवा"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"रेडिओवर मजकूर पाठवा"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"टेलेक्सवर मजकूर पाठवा"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD वर मजकूर पाठवा"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"कार्य मोबाईलवर मजकूर पाठवा"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"कार्य पेजरवर मजकूर पाठवा"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> मजकूर पाठवा"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS वर मजकूर पाठवा"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (संदेश पाठवा)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"व्‍हिडिओ कॉल करा"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"वारंवार सपर्क साधलेले साफ करायचे?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"आपण संपर्क आणि फोन अ‍ॅप्‍स मधील वारंवार संपर्क साधलेली सूची साफ कराल आणि ईमेल अ‍ॅप्‍सना सुरवातीपासून आपली पत्ता प्राधान्‍ये जाणून घेण्‍याची सक्ती कराल."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"वारंवार सपर्क साधलेले साफ करीत आहे..."</string>
+    <string name="status_available" msgid="4832569677396634846">"उपलब्ध"</string>
+    <string name="status_away" msgid="6267905184545881094">"दूर आहे"</string>
+    <string name="status_busy" msgid="7111912905211403545">"व्यस्त"</string>
+    <string name="contactsList" msgid="7140022347217602605">"संपर्क"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"इतर"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"निर्देशिका"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"कार्य निर्देशिका"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"सर्व संपर्क"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"शोधत आहे..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> पेक्षा जास्त आढळले."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"कोणतेही संपर्क नाहीत"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> आढळला</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> आढळले</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> साठी द्रुत संपर्क"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(नाव नाही)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"वारंवार संपर्क केलेले"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"संपर्क पहा"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"फोन नंबरसह सर्व संपर्क"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"कार्य प्रोफाईल संपर्क"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"अद्यतने पहा"</string>
+    <string name="account_phone" msgid="325867897209266837">"डिव्हाइस"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"नाव"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"टोपणनाव"</string>
+    <string name="full_name" msgid="885420216812981202">"नाव"</string>
+    <string name="name_given" msgid="4153709115654909377">"नाव"</string>
+    <string name="name_family" msgid="5317387657540738981">"आडनाव"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"नाव प्रत्यय"</string>
+    <string name="name_middle" msgid="3951610314424632183">"मधले नाव"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"नाव प्रत्यय"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ध्वन्यात्मक नाव"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ध्वन्यात्मक नाव"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ध्वन्यात्मक मधले नाव"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ध्वन्यात्मक आडनाव"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"फोन"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ईमेल"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"पत्ता"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"संस्था"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"नातेसंबंध"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"विशिष्ट तारीख"</string>
+    <string name="sms" msgid="8086289395154598654">"मजकूर संदेश"</string>
+    <string name="postal_address" msgid="7692926530081579786">"पत्ता"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"कंपनी"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"शीर्षक"</string>
+    <string name="label_notes" msgid="3997277594846722699">"टिपा"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"वेबसाइट"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"लेबले"</string>
+    <string name="email_home" msgid="2230967805906450693">"निवासस्‍थानी ईमेल करा"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"मोबाईलवर ईमेल करा"</string>
+    <string name="email_work" msgid="7065971921227432400">"कार्यस्‍थानावर ईमेल करा"</string>
+    <string name="email_other" msgid="4601881243553289615">"ईमेल"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> वर ईमेल करा"</string>
+    <string name="email" msgid="5624424151176351591">"ईमेल"</string>
+    <string name="postal_street" msgid="881349814077356134">"मार्ग"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO बॉक्स"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"अतिपरिचित क्षेत्र"</string>
+    <string name="postal_city" msgid="3173008531169519309">"शहर"</string>
+    <string name="postal_region" msgid="1695206048198921115">"राज्य"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"पिनकोड"</string>
+    <string name="postal_country" msgid="3988452247038791892">"देश"</string>
+    <string name="map_home" msgid="1221397355014741634">"निवास पत्ता पहा"</string>
+    <string name="map_work" msgid="9015981646907637207">"कार्य पत्ता पहा"</string>
+    <string name="map_other" msgid="55098598855607997">"पत्ता पहा"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> पत्ता पहा"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM चा वापर करून चॅट करा"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live चा वापर करून चॅट करा"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo चा वापर करून चॅट करा"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype चा वापर करून चॅट करा"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ चा वापर करून चॅट करा"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk चा वापर करून चॅट करा"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ चा वापर करून चॅट करा"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber चा वापर करून चॅट करा"</string>
+    <string name="chat" msgid="6297650784873558837">"चॅट करा"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"हटवा"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"नाव फील्‍ड विस्‍तृत करा किंवा संकुचित करा"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ध्वन्यात्मक नाव फील्ड विस्तृत करा किंवा संकुचित करा"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"सर्व संपर्क"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"तारांकित"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"सानुकूलित करा"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"संपर्क"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"इतर सर्व संपर्क"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"सर्व संपर्क"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"संकालन समूह काढून टाका"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"संकालन गट जोडा"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"अधिक गट..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"संकालन करा मधून \"<xliff:g id="GROUP">%s</xliff:g>\" हटविल्‍याने संकालन करा मधून कोणत्‍याही गटबद्ध न केलेल्‍या संपर्कांना देखील हटवेल."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"प्रदर्शन पर्याय जतन करत आहे…"</string>
+    <string name="menu_done" msgid="32470053723443112">"पूर्ण झाले"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"रद्द करा"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"सानुकूलित दृश्य"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"आयात केलेले संपर्क यावर जतन करा:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"सिमकार्डवरुन आयात करा"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> SIM वरून आयात करा"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> SIM वरून आयात करा"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf फाईल वरून आयात करा"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> चे आयात रद्द करायचे?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> चे निर्यात रद्द करायचे?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard आयात/निर्यात रद्द करू शकलो नाही"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"अज्ञात त्रुटी."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" उघडू शकलो नाही: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"निर्यातकर्ता प्रारंभ करू शकला नाही: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"कोणताही निर्यात करण्‍यायोग्‍य संपर्क नाही."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"आपण आवश्‍यक असलेली एक परवानगी अक्षम केली आहे."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"निर्यात दरम्‍यान त्रुटी आली: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"आवश्‍यक फाईल नाव (\"<xliff:g id="FILENAME">%s</xliff:g>\") खूप मोठे आहे."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O त्रुटी"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"पुरेशी मेमरी नाही. फाईल कदाचित खूप मोठी असू शकते."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"अनपेक्षित कारणासाठी vCard विश्लेषण करू शकलो नाही."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"स्वरूपन समर्थित नाही."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"दिलेल्‍या vCard फाईल(यली) ची मेटा माहिती संकलित करू शकलो नाही."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"एक किंवा अधिक फायली आयात केल्‍या जाऊ शकत नाहीत(%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> निर्यात करणे समाप्त झाले."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"संपर्क आयात करणे समाप्त झाले"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"संपर्क निर्यात करणे समाप्त झाले, संपर्क सामायिक करण्यासाठी सूचनेवर क्लिक करा."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"संपर्क सामायिक करण्यासाठी टॅप करा."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> निर्यात करणे रद्द केले."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"संपर्क डेटा निर्यात करीत आहे"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"संपर्क डेटा निर्यात केला जात आहे."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"डेटाबेस माहिती मिळवू शकलो नाही."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"निर्यात करण्‍यायोग्‍य संपर्क नाहीत. आपल्‍या फोनवर संपर्क असल्‍यास, काही डेटा प्रदाते फोनवरून संपर्क निर्यात करण्‍यास कदाचित अनुमती देणार नाहीत."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard रचनाकाराने योग्‍यरित्‍या प्रारंभ केला नाही."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"निर्यात करू शकलो नाही"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"संपर्क डेटा निर्यात केला नाही.\nकारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> आयात करीत आहे"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard डेटा वाचू शकलो नाही"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard डेटा वाचणे रद्द केले"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> आयात करणे समाप्त झाले"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> आयात करणे रद्द झाले"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> लवकरच आयात केली जाईल."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"फाईल लवकरच आयात केली जाईल."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard आयात विनंती नाकारली. नंतर पुन्हा प्रयत्न करा."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> लवकरच निर्यात केली जाईल."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"फाईल लवकरच निर्यात केली जाईल."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"संपर्क लवकरच निर्यात केले जातील."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard निर्यात विनंती नाकारली. नंतर पुन्हा प्रयत्न करा."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"संपर्क"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"स्‍थानिक तात्‍पुरत्‍या संचयनावर vCard(s) कॅशे करीत आहे. वास्‍तविक आयात लवकरच प्रारंभ होईल."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard आयात करू शकलो नाही."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC वरील संपर्काचे पुनरावलोकन केले"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"संपर्क निर्यात करायचे?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"कॅशे करीत आहे"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"आयात करत आहे <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf फाईलवर निर्यात करा"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"नुसार क्रमवारी लावा"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"नाव"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"आडनाव"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"नाव स्वरूपन"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"नाव प्रथम"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"आडनाव प्रथम"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"खाती"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"नवीन संपर्कांसाठी डीफॉल्ट खाते"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"संपर्क मेटाडेटा संकालित करा [डॉगफूड]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"संपर्क मेटाडेटा संकालित करा"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"माझी माहिती"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"आपले प्रोफाइल सेट करा"</string>
+    <string name="setting_about" msgid="3926137653588942297">"संपर्कांबद्दल"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"सेटिंग्ज"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"दृश्यमान संपर्क सामायिक करा"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"दृश्यमान संपर्क सामायिक करण्‍यात अयशस्वी झाले."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"आवडते संपर्क सामायिक करा"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"सर्व संपर्क सामायिक करा"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"संपर्क सामायिक करण्यात अयशस्वी झाले."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"संपर्क आयात/निर्यात करा"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"संपर्क आयात करा"</string>
+    <string name="share_error" msgid="665756457151793108">"हा संपर्क सामायिक केला जाऊ शकत नाही."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"सामायिक करण्यासाठी कोणतेही संपर्क नाहीत."</string>
+    <string name="menu_search" msgid="7464453023659824700">"शोधा"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"प्रदर्शित करण्यासाठी संपर्क"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"प्रदर्शित करण्यासाठी संपर्क"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"सानुकूलति दृश्य परिभाषित करा"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"जतन करा"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"संपर्क शोधा"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"आवडते"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"कोणतेही संपर्क नाहीत."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"वारंवारता साफ करा"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"सिम कार्ड निवडा"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"खाती व्यवस्थापित करा"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"आयात/निर्यात"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"अवरोधित केलेले नंबर"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> द्वारे"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> द्वारे <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"शोध थांबवा"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"शोध साफ करा"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"संपर्क प्रदर्शन पर्याय"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"खाते"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"कॉलसाठी हे नेहमी वापरा"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"यासह कॉल करा"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"टीपसह कॉल करा"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"कॉलसह पाठविण्‍यासाठी एक टीप टाइप करा..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"पाठवा आणि कॉल करा"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> न वाचलेला आयटम. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> न वाचलेले आयटम. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"बिल्ड आवृत्ती"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"मुक्त स्त्रोत परवाने"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"मुक्त स्त्रोत सॉफ्टवेअरसाठी परवाना तपशील"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"गोपनीयता धोरण"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"सेवा अटी"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"मुक्त स्त्रोत परवाने"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url उघडण्यात अयशस्वी झाले."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> चेक केले"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> चेक केले नाही"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"व्हिडिओ कॉल करा"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"हटवा"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"पदलोप"</string>
+</resources>
diff --git a/res-common/values-ms-rMY-sw600dp/strings.xml b/res-common/values-ms-rMY-sw600dp/strings.xml
new file mode 100644
index 0000000..8d8bc38
--- /dev/null
+++ b/res-common/values-ms-rMY-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Peranti"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Tiada kenalan yang dapat dieksport. Jika anda mempunyai kenalan pada tablet anda, sesetengah pembekal data mungkin tidak membenarkan kenalan itu dieksport daripada tablet."</string>
+</resources>
diff --git a/res-common/values-ms-rMY/strings.xml b/res-common/values-ms-rMY/strings.xml
new file mode 100644
index 0000000..6e3b35c
--- /dev/null
+++ b/res-common/values-ms-rMY/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teks yang disalin"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Salin ke papan keratan"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Panggil <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Panggil nombor rumah"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Panggil nombor mudah alih"</string>
+    <string name="call_work" msgid="8299062439076337075">"Panggil tempat kerja"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Panggil faks tempat kerja"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Panggil faks rumah"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Panggil alat kelui"</string>
+    <string name="call_other" msgid="4472141328347894937">"Panggil"</string>
+    <string name="call_callback" msgid="687494744634190411">"Panggil nombor panggil balik"</string>
+    <string name="call_car" msgid="9078083109758282133">"Panggil kereta"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Panggil nombor utama syarikat"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Panggil ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Panggil nombor utama"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Panggil faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Panggil radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Panggil teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Panggil TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Panggil telefon mudah alih tempat kerja"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Panggil alat kelui tempat kerja"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Panggil <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Panggil MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Panggil)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS rumah"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS telefon mudah alih"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS nombor tempat kerja"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS faks tempat kerja"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS faks rumah"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS alat kelui"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS nombor panggil balik"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS kereta"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS nombor utama syarikat"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS nombor utama"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS nombor faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS nombor teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS telefon mudah alih tempat kerja"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS alat kelui tempat kerja"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS nombor MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Hantar mesej)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Buat panggilan video"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Padam bersih senarai kerap dihubungi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Anda akan mengosongkan senarai yang kerap dihubungi dalam apl Kenalan dan Telefon serta memaksa apl e-mel untuk mempelajari pilihan alamat anda dari awal."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Memadam bersih senarai kerap dihubungi..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Ada"</string>
+    <string name="status_away" msgid="6267905184545881094">"Tiada"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Sibuk"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kenalan"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Lain-lain"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktori"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Direktori kerja"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Semua kenalan"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Mencari..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"lebih daripada <xliff:g id="COUNT">%d</xliff:g> ditemui"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Tiada kenalan"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ditemui</item>
+      <item quantity="one">1 ditemui</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Kenalan pantas untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Tiada nama)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Kerap dihubungi"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Lihat kenalan"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Semua kenalan dengan nombor telefon"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kenalan profil kerja"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Lihat kemas kini"</string>
+    <string name="account_phone" msgid="325867897209266837">"Peranti"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nama"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Nama panggilan"</string>
+    <string name="full_name" msgid="885420216812981202">"Nama"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nama pertama"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nama keluarga"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Awalan nama"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Nama tengah"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Akhiran nama"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nama fonetik"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nama pertama fonetik"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Nama tengah fonetik"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Nama keluarga fonetik"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mel"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Alamat"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisasi"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Hubungan"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Tarikh khas"</string>
+    <string name="sms" msgid="8086289395154598654">"Mesej teks"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Alamat"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Syarikat"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Jawatan"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Nota"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Tapak web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Label"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-mel rumah"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-mel telefon mudah alih"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-mel tempat kerja"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-mel"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-mel <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-mel"</string>
+    <string name="postal_street" msgid="881349814077356134">"Jalan"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Peti surat"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Kawasan kejiranan"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Bandar"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Negeri"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poskod"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Negara"</string>
+    <string name="map_home" msgid="1221397355014741634">"Lihat alamat rumah"</string>
+    <string name="map_work" msgid="9015981646907637207">"Lihat alamat tempat kerja"</string>
+    <string name="map_other" msgid="55098598855607997">"Lihat alamat"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Lihat alamat <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Sembang menggunakan AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Sembang menggunakan Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Sembang menggunakan Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Sembang menggunakan Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Sembang menggunakan QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Sembang menggunakan Bual Google"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Sembang menggunakan ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Sembang menggunakan Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Sembang"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"padam"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Kembangkan atau runtuhkan medan nama"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Kembangkan atau runtuhkan medan nama fonetik"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Semua kenalan"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Dibintangkan"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Peribadikan"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kenalan"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Semua kenalan lain"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Semua kenalan"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Alih keluar kumpulan penyegerakan"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Tambah kumpulan segerak"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Lagi kumpulan..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Mengalih keluar \"<xliff:g id="GROUP">%s</xliff:g>\" daripada penyegerakan juga akan turut mengalih keluar sebarang kenalan tanpa kumpulan dari penyegerakan."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Menyimpan pilihan paparan..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Selesai"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Batal"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Paparan yang disesuaikan"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Simpan kenalan yang diimport ke:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Import daripada kad SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Import dari SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Import dari SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Import daripada fail .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Batalkan import <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Batalkan eksport <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Tidak dapat membatalkan import/eksport vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Ralat tidak diketahui."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Tidak dapat membuka \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Tidak dapat memulakan pengeksport: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Tiada kenalan yang dapat dieksport."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Anda telah melumpuhkan kebenaran yang diperlukan."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Ralat berlaku semasa eksport: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Nama fail yang diperlukan terlalu panjang (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Ralat I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Tidak cukup memori. Fail itu mungkin terlalu besar."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Tidak dapat menghurai vCard atas sebab-sebab yang tidak dijangka."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format tidak disokong."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Tidak dapat mengumpul maklumat meta fail Vcard yang dinyatakan."</string>
+    <!-- String.format failed for translation -->
+    <!-- no translation found for fail_reason_failed_to_read_files (9213844535907986665) -->
+    <skip />
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Selesai mengeksport <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Selesai mengeksport kenalan."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Selesai mengeksport kenalan, klik pemberitahuan untuk berkongsi kenalan."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Ketik untuk berkongsi kenalan."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Mengeksport <xliff:g id="FILENAME">%s</xliff:g> dibatalkan."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Mengeksport data kenalan"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Data kenalan sedang dieksport."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Tidak boleh mendapatkan maklumat pangkalan data."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Tiada kenalan boleh dieksport. Jika anda mempunyai kenalan pada telefon anda, sesetengah pembekal data tidak boleh membenarkan kenalan dieksport dari telefon."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Komposer vCard tidak bermula dengan betul."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Tidak dapat mengeksport"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Data kenalan tidak dieksport.\nAlasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Mengimport <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Tidak dapat membaca data vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Membaca data vCard dibatalkan"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Selesai mengimport vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Pengimportan <xliff:g id="FILENAME">%s</xliff:g> dibatalkan"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> akan diimport sebentar lagi."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fail akan diimport sebentar lagi."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Permintaan import vCard telah ditolak. Cuba lagi nanti."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g>akan dieksport sebentar lagi."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fail akan dieksport sebentar lagi."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kenalan akan dieksport sebentar lagi."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Permintaan eksport vCard telah ditolak. Cuba lagi nanti."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kenalan"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Membuat cache vCard ke storan sementara setempat. Pengimportan sebenar akan bermula tidak lama lagi."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Tidak dapat mengimport vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Diterima dr NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Eksport kenalan?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Mengcache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Mengimport <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksport ke fail .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Isih mengikut"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nama pertama"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nama keluarga"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format nama"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Nama pertama dahulu"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Nama keluarga dahulu"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Akaun"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Akaun lalai untuk kenalan baharu"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Segerakkan metadata kenalan [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Segerakkan metadata kenalan"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Maklumat saya"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Sediakan profil anda"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Perihal Kenalan"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Tetapan"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Kongsi kenalan yang kelihatan"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Gagal berkongsi kenalan yang kelihatan"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Kongsi kenalan kegemaran"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Kongsi semua kenalan"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Gagal berkongsi kenalan."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Import/eksport kenalan"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Import kenalan"</string>
+    <string name="share_error" msgid="665756457151793108">"Kenalan ini tidak boleh dikongsi."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Tiada kenalan untuk dikongsi."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Cari"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kenalan untuk dipaparkan"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kenalan untuk dipaparkan"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Tentukan paparan yang disesuaikan"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Simpan"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Cari dalam kenalan"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Kegemaran"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Tiada kenalan."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Padam bersih kerap dihubungi"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Pilih kad SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Urus akaun"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Import/eksport"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Nombor yang disekat"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"melalui <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> melalui <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"berhenti mencari"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Kosongkan carian"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Pilihan paparan kenalan"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Akaun"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Sentiasa gunakan ini untuk panggilan"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Panggil dengan"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Panggilan dengan nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Taip nota untuk dihantar dengan panggilan…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"HANTAR &amp; PANGGIL"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> item belum dibaca. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> item belum dibaca. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versi binaan"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Lesen sumber terbuka"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Butiran lesen untuk perisian sumber terbuka"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Dasar privasi"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Syarat perkhidmatan"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Lesen sumber terbuka"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Gagal membuka url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> disemak"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> tidak disemak"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Buat panggilan video"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Padam"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Elipsis"</string>
+</resources>
diff --git a/res-common/values-my-rMM-sw600dp/strings.xml b/res-common/values-my-rMM-sw600dp/strings.xml
new file mode 100644
index 0000000..7bc1ad1
--- /dev/null
+++ b/res-common/values-my-rMM-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ကိရိယာ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"တင်ပို့၍ရသော အဆက်အသွယ်များမရှိပါ။ သင့်တက်ဘလက်ပေါ်တွင် အဆက်အသွယ်မရှိပါက၊  အချို့ ဒေတာထောက်ပံ့ပေးသူတို့သည် အဆက်အသွယ်များကို တက်ဘလက်မှ တင်ပို့ခွင့်ပေးမည် မဟုတ်ပါ။"</string>
+</resources>
diff --git a/res-common/values-my-rMM/strings.xml b/res-common/values-my-rMM/strings.xml
new file mode 100644
index 0000000..fbd23e2
--- /dev/null
+++ b/res-common/values-my-rMM/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"စာသားကူးယူပြီး"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ကလစ်ဘုတ်သို့ကူးယူရန်"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> ကိုခေါ်ပါ"</string>
+    <string name="call_home" msgid="1479549630992276827">"အိမ်ကိုခေါ်ပါ"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"မိုဘိုင်းကိုခေါ်ပါ"</string>
+    <string name="call_work" msgid="8299062439076337075">"အလုပ်ကိုခေါ်ပါ"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"အလုပ်ဖက်စ်ကိုခေါ်ပါ"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"အိမ်ဖက်စ်ကိုခေါ်ပါ"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ပေဂျာကိုခေါ်ပါ"</string>
+    <string name="call_other" msgid="4472141328347894937">"ခေါ်ပါ"</string>
+    <string name="call_callback" msgid="687494744634190411">"ပြန်ခေါ်ခြင်းဝန်ဆောင်မှုကို ခေါ်ပါ"</string>
+    <string name="call_car" msgid="9078083109758282133">"ကားကိုခေါ်ပါ"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ကုမ္ပဏီပင်မနံပါတ်ကို ခေါ်ပါ"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN ကိုခေါ်ပါ"</string>
+    <string name="call_main" msgid="4640261071249938558">"ပင်မနံပါတ်ကို ခေါ်ပါ"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ဖက်စ်ကိုခေါ်ပါ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ရေဒီယိုကိုခေါ်ပါ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"တဲလက်ဇ်နံပါတ်ကိုခေါ်ပါ"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD ကိုခေါ်ပါ"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"အလုပ်မိုဘိုင်းကိုခေါ်ပါ"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"အလုပ်ပေဂျာကိုခေါ်ပါ"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> ကိုခေါ်ပါ"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS ကိုခေါ်ပါ"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ခေါ်ပါ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> သို့ စာပို့ပါ"</string>
+    <string name="sms_home" msgid="7765831490534280540">"အိမ်သို့ စာပို့ပါ"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"မိုဘိုင်းသို့ စာပို့ပါ"</string>
+    <string name="sms_work" msgid="3910570578912367742">"အလုပ်နံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"အလုပ်ဖက်စ်သို့ စာပို့ပါ"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"အိမ်ဖက်စ်သို့ စာပို့ပါ"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ပေဂျာနံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_other" msgid="910895193552957097">"စာတို"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ပြန်ခေါ်မှုနံပါတ်ထံ စာပို့ပါ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ကားဆီ စာပို့ပါ"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ကုမ္ပဏီ ပင်မနံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN စာပို့ပါ"</string>
+    <string name="sms_main" msgid="6815987840926184815">"အဓိကနံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ဖက်စ်နံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ရေဒီယိုနံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"တဲလက်စ်နံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD နံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"အလုပ်မိုဘိုင်းသို့ စာပို့ပါ"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"အလုပ်ပေ့ဂျာသို့ စာပို့ပါ"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g>ထံ စာပို့ပါ"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS နံပါတ်သို့ စာပို့ပါ"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (မက်ဆေ့ဂ်ျပို့ပါ)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ဗီဒီယို ဖုန်းခေါ်ရန်"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"အသုံးများသောလိပ်စာများရှင်းပစ်မလား?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"အသုံးများသော အဆက်အသွယ်စာရင်းအား Contacts နှင့် Phone အက်ပ်များမှ သင် ရှင်းလင်းပစ်မှာဖြစ်ပြီး၊ အီးမေးလ် အက်ပ်များအား သင့်နှစ်သက်ရာ ​ပ​ြောဆိုဆက်ဆံမှုပုံစံကို အစမှပြန်လည် လေ့လာခိုင်းမည်။"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"အသုံးများသောလိပ်စာများ ရှင်းလင်းနေစဉ်"</string>
+    <string name="status_available" msgid="4832569677396634846">"ဆက်သွယ်နိုင်ပါသည်"</string>
+    <string name="status_away" msgid="6267905184545881094">"အဝေးရောက်နေပါသည်"</string>
+    <string name="status_busy" msgid="7111912905211403545">"အလုပ်များနေသည်"</string>
+    <string name="contactsList" msgid="7140022347217602605">"အဆက်အသွယ်များ"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"တစ်ခြား"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"လမ်းညွှန်"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"အလုပ်လမ်းညွှန်"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"လိပ်စာများအားလုံး"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"ရှာဖွေနေသည်…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> ထက်ပိုတွေ့ရှိသည်"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"အဆက်အသွယ်များမရှိပါ"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> တွေ့ခဲ့၏</item>
+      <item quantity="one"> ၁ ခု တွေခဲ့၏</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> အတွက် အမြန်ဆက်သွယ်လိပ်စာ"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(အမည်မရှိ)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"မကြာခဏဆက်သွယ်ရန်သူများ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"အဆက်အသွယ်အား ကြည့်ရန်"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ဖုန်းနံပါတ်ပါသော လိပ်စာများအားလုံး"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"အလုပ်ပရိုဖိုင် အဆက်အသွယ်များ"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"အဆင့်မြှင့်ခြင်းများပြရန်"</string>
+    <string name="account_phone" msgid="325867897209266837">"ကိရိယာ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"အမည်"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"နာမည်ဝှက်"</string>
+    <string name="full_name" msgid="885420216812981202">"အမည်"</string>
+    <string name="name_given" msgid="4153709115654909377">"ပထမ အမည်"</string>
+    <string name="name_family" msgid="5317387657540738981">"နောက်ဆုံး အမည်"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"နာမည်ရှေ့ဆောင်"</string>
+    <string name="name_middle" msgid="3951610314424632183">"အလယ်နာမည်"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"နာမည်နောက်စွဲ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"အသံထွက်နာမည်"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"အသံထွက် ပထမ အမည်"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"အသံထွက် အလယ်နာမည်"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"အသံထွက် နောက်ဆုံး အမည်"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ဖုန်း"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"အီးမေးလ်"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"လိပ်စာ"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"အဖွဲ့အစည်း"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ပတ်သတ်မှု"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"အထူးနေ့"</string>
+    <string name="sms" msgid="8086289395154598654">"စာတို စာပို့ခြင်း"</string>
+    <string name="postal_address" msgid="7692926530081579786">"လိပ်စာ"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"ကုမ္ပဏီ"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ခေါင်းစဉ်"</string>
+    <string name="label_notes" msgid="3997277594846722699">"မှတ်စုများ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ဝဘ်ဆိုက်"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"အညွှန်းများ"</string>
+    <string name="email_home" msgid="2230967805906450693">"အိမ်ကို အီးမေးလ် ပို့ပါ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"မိုဘိုင်း ကို အီးမေးလ် ပို့ပါ"</string>
+    <string name="email_work" msgid="7065971921227432400">"အလုပ်ကို အီးမေးလ် ပို့ပါ"</string>
+    <string name="email_other" msgid="4601881243553289615">"အီးမေးလ်"</string>
+    <string name="email_custom" msgid="5777583741581538870">"အီးမေးလ် <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"အီးမေးလ်"</string>
+    <string name="postal_street" msgid="881349814077356134">"လမ်း"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"စာတိုက်သေတ္တာ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"ပတ်ဝန်းကျင်"</string>
+    <string name="postal_city" msgid="3173008531169519309">"မြို့"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ပြည်နယ်"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"စာပို့သင်္ကေတ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"နိုင်ငံ"</string>
+    <string name="map_home" msgid="1221397355014741634">"အိမ်လိပ်စာအားကြည့်ရန်"</string>
+    <string name="map_work" msgid="9015981646907637207">"အလုပ်လိပ်စာအားကြည့်ရန်"</string>
+    <string name="map_other" msgid="55098598855607997">"လိပ်စာအားကြည့်ရန်"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> လိပ်စာအားကြည့်ရန်"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM သုံး၍ ချက်တင်လုပ်ခြင်း"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Liveသုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo သုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype သုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ သုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"ဂူးဂဲလ်တော့သုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ သုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabberသုံး၍ ချက်တင်ပြုလုပ်ခြင်း"</string>
+    <string name="chat" msgid="6297650784873558837">"ချက်တင်းပြောသည်"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ဖျက်ရန်"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"နာမည်အကွက်များအား ဖြန့်ချ သို့မဟုတ် လိပ်တင်ပါ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"အသံထွက်ဆိုင်ရာ အကွက်များကို တိုးချဲ့ သို့မဟုတ် ခေါက်သိမ်းပါ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"လိပ်စာများအားလုံး"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"စတားပေးထားသော အရာ"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"မိမိစိတ်ကြိုက်ပြုလုပ်ခြင်း"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"အဆက်အသွယ်"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"တခြားအဆက်အသွယ်များအားလုံး"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"လိပ်စာများအားလုံး"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"ထပ်တူပြုလုပ်ခြင်း အုပ်စုအား ဖယ်ရှားရန်"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"ထပ်တူပြုလုပ်မှု အုပ်စုများ ထပ်ထည့်ပါ"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"ပိုမိုသော အုပ်စုများ…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" အား ထပ်တူပြုလုပ်ခြင်းမှ ဖယ်ထုတ်ခြင်းသည် တခြား အုပ်စုမလုပ်ထားသော အဆက်အသွယ်များအားလည်း ဖယ်ထုတ်ပါလိမ့်မည်။"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ပြသမှု ရွေးချယ်ခြင်းများ သိမ်းဆည်နေစဉ်…"</string>
+    <string name="menu_done" msgid="32470053723443112">"ပြီးပါပြီ"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"မလုပ်တော့"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"စိတ်ကြိုက်ကြည့်ရှုမှုြ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"သွင်းထားသည့် အဆက်အသွယ်များကို သိမ်းဆည်းရန် −"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"ဆင်းမ်ကဒ်ထဲမှ အထဲသို့သွင်းရန်"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"ဆင်းမ်ကဒ်မှ သွင်းယူရန် <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"ဆင်းမ်ကဒ်မှ သွင်းယူရန် <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ဖိုင်မှသွင်းမည်"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> ကို အထဲသို့သွင်းခြင်းအား ရပ်တန့်မလား?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> ကိုအပြင်သို့ထုတ်ခြင်းအား ရပ်တန့်မလား?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"လိပ်စာကဒ် အသွင်း၊အထုတ်ကို ရပ်၍မရပါ"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"အမည်မသိသော မှားယွင်းမှု"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ကို ဖွင့်မရပါ: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"အပြင်ထုတ်သောစနစ်အား စတင်လို့မရပါ: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"အပြင်သို့ထုတ်ယူရနိုင်သော အဆက်အသွယ်မရှိပါ"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"လိုအပ်သည့် ခွင့်ပြုချက်ကို သင်ပိတ်လိုက်သည်။"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"အပြင်ထုတ်နေစဉ် အမှားပေါ်ပါသည်: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"လိုအပ်သောဖိုင်နာမည် အလွန်ရှည်နေပါသည် (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O အမှား"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"လုံလောက်သော မှတ်ဉာဏ်မရှိပါ။ ဖိုင်အရမ်းကြီးနေတာ ဖြစ်နိုင်ပါသည်"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"လိပ်စာကဒ်အား အမျိုးအမည်မသိအမှားကြောင့် ဖတ်လို့မရပါ"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ပံ့ပိုးမှုပေးနိုင်သော ပုံစံမဟုတ်ပါ"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"ဖော်ပြပါ လိပ်စာကဒ်ဖိုင်(များ)၏ အချက်အလက်များအား စုဆောင်းလို့မရပါ"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ဖိုင်တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ဖိုင်များအား အထဲသို့သွင်းလို့မရပါ(%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> ကို အပြင်ထုတ်ခြင်းပြီးစီးပါပြီး"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"အဆက်အသွယ်များ တင်ပို့ခြင်း ပြီးပါပြီ။"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"အဆက်အသွယ်များကို တင်ပို့၍ပြီးပါပြီ၊ အဆက်အသွယ်များကို မျှဝေရန် သတိပေးချက်ကိုနှိပ်ပါ။"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"အဆက်အသွယ်များကို မျှဝေရန်တို့ပါ။"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> ကို အပြင်ထုတ်ခြင်းအား ပယ်ဖျက်ပြီး"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"အဆက်အသွယ်ဒေတာများအား အပြင်သို့ထုတ်နေစဉ်"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"အဆက်အသွယ်ဒေတာကို တင်ပို့နေသည်။"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ဒေတာဘေ့စ်အချက်အလက်အား မရရှိနိုင်ပါ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"အပြင်သို့ထုတ်ယူရနိုင်သော လိပ်စာမရှိပါ။ သင့်ဖုန်းထဲမှာ လိပ်စာများရှိပါက တချို့ ဒေတာဝန်ဆောင်မှုက ထိုလိပ်စာများအား ဖုန်းထဲမှအပြင်သို့ ထုတ်ခွင့်ပေးခွင့် မပေးတာမျိုးဖြစ်နိုင်ပါသည်"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"လိပ်စာကဒ်ပြုလုပ်သောစန် ကောင်းမွန်စာ မစတင်ပါ"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"အပြင်ထုတ်လို့မရပါ"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"အဆက်အသွယ် အချက်အလက်ကို \nအကြောင်းပြချက်ကြောင့် မထုတ်နိုင်ပါ။  \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> အား အထဲသွင်းစဉ်"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"လိပ်စာကဒ်ဒေတာအား ဖတ်မရပါ"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"လိပ်စာကဒ်ဒေတာဖတ်ခြင်းအား ရပ်တန့်ပြီး"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> လိပ်စာကဒ် အထဲသွင်းခြင်း ပြီးပါပြီ"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> အားအထဲသွင်းခြင်း ရပ်ဆိုင်းပြီး"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ကို မကြာမှီ အထဲသို့ သွင်းပါမည်"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ဖိုင်အား မကြာမှီ အထဲသို့ သွင်းပါမည်"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"လိပ်စာကဒ်အား အထဲသွင်းရန် တောင်းဆိုမှု ငြင်းဆန်ခံရပါသည်။ နောင်မှ ပြန်လည်ကြိုးစားပါ"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ကို မကြာမီ အပြင်သို့ ထုတ်ပါမည်"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ဖိုင်အား မကြာမီ တင်ပို့ပါလိမ့်မည်။"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"အဆက်အသွယ်များကို မကြာခင်အချိန်တွင် တင်ပို့သွားပါမည်။"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"လိပ်စာကဒ်အား အပြင်ထုတ်ရန် တောင်းဆိုမှု ငြင်းဆန်ခံရပါသည်။ နောင်မှ ပြန်လည်ကြိုးစားပါ"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"အဆက်အသွယ်"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"လိပ်စာကဒ်(များ)ကို စက်တွင်း ခဏသိမ်းဆည်းရာနေရာသို့ ပို့နေပါသည်။ အမှန်တကယ် တင်သွင်းခြင်း မကြာခင် စပါမည်။"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"လိပ်စာကဒ်အား အထဲသွင်းလို့မရပါ"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFCမှရသောလိပ်စာ"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"လိပ်စာများအပြင်သို့ထုတ်မလား?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ယာယီသိမ်းထားခြင်း"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>ကို သွင်းနေစဉ်: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ဖိုင်သို့ထုတ်မည်"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"အောက်ပါအတိုင်း စီပါ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"ပထမ အမည်"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"နောက်ဆုံး အမည်"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"အမည် ချထားပုံစံ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ပထမ အမည် ဦးစွာ"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"နောက်ဆုံး အမည် ဦးစွာ"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"အကောင့်များ"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"အဆက်အသွယ် အသစ်များအတွက် မူရင်း အကောင့်"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"အဆက်အသွယ် မက်တာဒေတာကို စင့်ခ်လုပ်ပါ [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"အဆက်အသွယ် မက်တာဒေတာကို စင့်ခ်လုပ်ပါ"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ကျွန်ုပ်၏အချက်အလက်"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"သင့်ပရိုဖိုင်ကို စဖွင့်ပါ"</string>
+    <string name="setting_about" msgid="3926137653588942297">"အဆက်အသွယ်များ အကြောင်း"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ဆက်တင်များ"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"မြင်နိုင်သော အဆက်အသွယ်များအား မျှဝေပါ"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"မြင်သာသော အဆက်အသွယ်တွေကိုဝေမျှခြင်းမပြုနိုင်ခဲ့ပါ။"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"အကြိုက်ဆုံးအဆက်အသွယ်များကို မျှဝေပါ"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"အဆက်အသွယ်များအားလုံးကို မျှဝေပါ"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"အဆက်အသွယ်များကို မျှဝေခြင်းမအောင်မြင်ပါ။"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"အဆက်အသွယ်များ သွင်းယူ၊ ထုတ်ယူရန်"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"အဆက်အသွယ်များ သွင်းပါ"</string>
+    <string name="share_error" msgid="665756457151793108">"ဒီလိပ်စာအား မျှဝေလို့ မရပါ"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"မျှဝေရန် အဆက်အသွယ်များမရှိပါ။"</string>
+    <string name="menu_search" msgid="7464453023659824700">"ရှာဖွေခြင်း"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ပြရန် အဆက်အသွယ်များ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"အဆက်အသွယ်များပြရန်"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"စိတ်ကြိုက်ကြည့်ရှုမှုကို သတ်မှတ်ပါ"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"သိမ်းရန်"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"အဆက်အသွယ်များရှာပါ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"အနှစ်သက်ဆုံးများ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"အဆက်အသွယ်များမရှိပါ"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"မကြာခဏအရာများအား ဖယ်ရှားရန်"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM ကဒ်ကို ရွေးရန်"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"အကောင့်များကို စီမံကွပ်ကဲရန်"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"သွင်းယူ၊ ထုတ်ယူခြင်း"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"ပိတ်ဆို့ထားသည့် နံပါတ်များ"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> မှတဆင့်"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> မှတဆင့် <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ရှာဖွေမှုကို ရပ်ရန်"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ရှာဖွေမှုကို ရှင်းပါ"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"အဆက်အသွယ် ပြသမှု ရွေးစရာများ"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"အကောင့်"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ခေါ်ဆိုမှုများ အတွက် အမြဲတမ်း ဒါကို သုံးရန်"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ဖြင့် ခေါ်ဆိုရန်"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"မှတ်စုတစ်ခုဖြင့် ခေါ်ဆိုမည်"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"ခေါ်ဆိုမှုဖြင့် ပေးပို့ရန် မှတ်စုတစ်ခု ရိုက်ပါ ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ပေးပို့မည် &amp; ခေါ်ဆိုမည်"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>။ မဖတ်ရသေးသည့် အရာ <xliff:g id="COUNT_3">%2$d</xliff:g> ခု။ </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>။ မဖတ်ရသေးသည့် အရာ <xliff:g id="COUNT_1">%2$d</xliff:g> ခု။ </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"တည်ဆောက်မှု ဗားရှင်း"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"အခမဲ့ ရင်းမြစ် လိုင်စင်များ"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"အခမဲ့  ဆော့ဝဲအတွက် လိုင်စင် အသေးစိတ်များ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"ပုဂ္ဂိုလ်ရေးဆိုင်ရာ မူဝါဒ"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"ဝန်ဆောင်မှုဆိုင်ရာ စည်းမျဉ်းများ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"အခမဲ့ ရင်းမြစ် လိုင်စင်များ"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url ကို ဖွင့်၍မရပါ။"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ကိုစစ်ဆေးပြီးပါပြီ"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ကိုမစစ်ဆေးရသေးပါ"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ဗီဒီယို ခေါ်ဆိုမှုကို ပြုလုပ်ပါ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ဖျက်ရန်"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"အစက်သုံးစက်"</string>
+</resources>
diff --git a/res-common/values-nb-sw600dp/strings.xml b/res-common/values-nb-sw600dp/strings.xml
new file mode 100644
index 0000000..96204de
--- /dev/null
+++ b/res-common/values-nb-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Enhet"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Du har ingen kontakter som kan eksporteres. Hvis du har kontakter på nettbrettet, kan det hende at dataleverandøren din ikke tillater at kontaktene eksporteres fra nettbrettet."</string>
+</resources>
diff --git a/res-common/values-nb/strings.xml b/res-common/values-nb/strings.xml
new file mode 100644
index 0000000..74e9df1
--- /dev/null
+++ b/res-common/values-nb/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teksten er kopiert"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiér til utklippstavlen"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Ring <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Ring hjem"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Ring mobilnummer"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ring arbeidsnummer"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ring faksnummer (arbeid)"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ring faksnummer (hjemme)"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Ring personsøkernummer"</string>
+    <string name="call_other" msgid="4472141328347894937">"Ring"</string>
+    <string name="call_callback" msgid="687494744634190411">"Ring tilbakeringingsnummer"</string>
+    <string name="call_car" msgid="9078083109758282133">"Ring til bilnummer"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Ring til firma (hovednummer)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Ring ISDN-nummer"</string>
+    <string name="call_main" msgid="4640261071249938558">"Ring hovednummer"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Ring faksnummer"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Ring radionummer"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Ring teleksnummer"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Ring TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ring mobilnummer (arbeid)"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ring personsøkernummer (arbeid)"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Ring <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Ring multimediemeldingnummer"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ring)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Send tekstmelding til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Send tekstmelding til hjemmenummer"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Send tekstmelding til mobilnummer"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Send tekstmelding til arbeidsnummer"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Send tekstmelding til faksnummer (arbeid)"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Send tekstmelding til faksnummer (hjemme)"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Send tekstmelding til personsøkernummer"</string>
+    <string name="sms_other" msgid="910895193552957097">"Send tekstmelding"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Send tekstmelding til tilbakeringingsnummer"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Send tekstmelding til bilnummer"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Send tekstmelding til firma (hovednummer)"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Send tekstmelding til ISDN-nummer"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Send tekstmelding til hovednummer"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Send tekstmelding til faksnummer"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Send tekstmelding til radionummer"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Send tekstmelding til teleksnummer"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Send tekstmelding til TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Send tekstmelding til mobilnummer (arbeid)"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Send tekstmelding til personsøkernummer (arbeid)"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Send tekstmelding til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Send tekstmelding til multimediemeldingnummer"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (send en melding)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Utfør videoanrop"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vil du fjerne ofte kontaktede personer?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Du fjerner listen over ofte kontaktede personer i Kontakter- og Telefon-appene, og tvinger e-postappene til å lære seg adresseinnstillingene dine på nytt."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Fjerner ofte kontaktede personer ..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Tilgjengelig"</string>
+    <string name="status_away" msgid="6267905184545881094">"Borte"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Opptatt"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakter"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Annet"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Katalog"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Jobbkatalog"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Alle kontakter"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Søker ..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Fant mer enn <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ingen kontakter"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> er funnet</item>
+      <item quantity="one">1 er funnet</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Hurtigkontakt for <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Uten navn)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Ofte kontaktet"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Se kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Alle kontakter med telefonnumre"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Jobbprofilkontakter"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Se oppdateringer"</string>
+    <string name="account_phone" msgid="325867897209266837">"Enhet"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Navn"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Kallenavn"</string>
+    <string name="full_name" msgid="885420216812981202">"Navn"</string>
+    <string name="name_given" msgid="4153709115654909377">"Fornavn"</string>
+    <string name="name_family" msgid="5317387657540738981">"Etternavn"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Navneprefiks"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Mellomnavn"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Navnesuffiks"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetisk navn"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetisk fornavn"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetisk mellomnavn"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetisk etternavn"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-post"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresse"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Nettprat"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisasjon"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Tilknytning"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Spesialdato"</string>
+    <string name="sms" msgid="8086289395154598654">"Tekstmelding"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresse"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Firma"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Stilling"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notater"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Nettsted"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketter"</string>
+    <string name="email_home" msgid="2230967805906450693">"Send e-post (privat)"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Send e-post (mobil)"</string>
+    <string name="email_work" msgid="7065971921227432400">"Send e-post (jobb)"</string>
+    <string name="email_other" msgid="4601881243553289615">"Send e-post"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Send e-post (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="email" msgid="5624424151176351591">"E-post"</string>
+    <string name="postal_street" msgid="881349814077356134">"Gate"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postboks"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Nabolag"</string>
+    <string name="postal_city" msgid="3173008531169519309">"By"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Fylke/delstat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postnummer"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Se hjemmeadressen"</string>
+    <string name="map_work" msgid="9015981646907637207">"Se jobbadressen"</string>
+    <string name="map_other" msgid="55098598855607997">"Se adressen"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Se <xliff:g id="CUSTOM">%s</xliff:g>-adressen"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Nettprat med AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Nettprat med Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Nettprat med Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Nettprat med Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Nettprat med QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Nettprat med Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Nettprat med ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Nettprat med Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Nettprat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"slett"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Vis eller skjul navnefelt"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Vis eller skjul fonetiske navnefelt"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Alle kontakter"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Med stjerne"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Tilpass"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Alle andre kontakter"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Alle kontakter"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Fjern synkronisert gruppe"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Legg til synkronisert gruppe"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Flere grupper …"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Hvis du fjerner «<xliff:g id="GROUP">%s</xliff:g>» fra synkroniseringen, fjernes også alle ugrupperte kontakter fra synkroniseringen."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Lagrer visningsalternativer …"</string>
+    <string name="menu_done" msgid="32470053723443112">"Ferdig"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Avbryt"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Tilpasset visning"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Lagre importerte kontakter i:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importér fra SIM-kort"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importér fra SIM-kortet <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importér fra SIM-kortet <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importer fra .vcf-fil"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Vil du avbryte importeringen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Vil du avbryte eksporteringen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Kunne ikke avbryte imp./eksp. av vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Ukjent feil."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Kan ikke åpne «<xliff:g id="FILE_NAME">%s</xliff:g>»: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Kunne ikke starte eksporteringen: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Du har ingen kontakter som kan eksporteres."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Du har slått av en nødvendig tillatelse."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Det oppsto en feil under eksporteringen: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Det obligatoriske filnavnet er for langt (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Inn-/ut-feil"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Ikke nok minne. Det er mulig at filen er for stor."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Kan ikke analysere vCard pga. uventet årsak."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formatet støttes ikke."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Kunne ikke hente metainformasjon for aktuell(e) vCard-fil(er)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"En eller flere filer kan ikke importeres (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Eksporteringen av <xliff:g id="FILENAME">%s</xliff:g> er fullført."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Eksportering av kontaktene er fullført."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktdataene er eksportert. Klikk på varselet for å dele kontaktene."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Trykk for å dele kontaktene."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Eksporteringen av <xliff:g id="FILENAME">%s</xliff:g> ble avbrutt."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Eksporterer kontaktdata"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktdataene eksporteres."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Kunne ikke hente databaseinformasjon."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Du har ingen kontakter som kan eksporteres. Hvis du har kontakter på telefonen, kan det hende at dataleverandøren din ikke tillater at kontaktene eksporteres fra telefonen."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard-oppretteren startet ikke som den skulle."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Eksporten mislyktes"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontaktdataene ble ikke eksportert.\nÅrsak: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importerer <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Kunne ikke lese vCard-dataene"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lesingen av vCard-dataene ble avbrutt"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importen av vCard-filen <xliff:g id="FILENAME">%s</xliff:g> er fullført"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importeringen av <xliff:g id="FILENAME">%s</xliff:g> ble avbrutt"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> blir snart importert."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Filen importeres snart."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Forespørselen om vCard-importering ble avvist. Prøv på nytt senere."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> blir snart eksportert."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Filen eksporteres snart."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktene eksporteres snart."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Forespørselen om eksport av vCard ble avvist. Prøv på nytt senere."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Bufrer vCard for import til lokal, midlertidig lagring. Selve importeringen starter snart."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Kunne ikke importere vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt mottatt via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Vil du eksportere kontaktene?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Bufrer"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importerer <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksportér til .vcf-fil"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortér etter"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Fornavn"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Etternavn"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Navneformat"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Fornavnet først"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Etternavnet først"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Kontoer"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Standardkonto for nye kontakter"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synkroniser metadata for kontakter [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synkroniser metadata for kontakter"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Min informasjon"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Konfigurer profilen din"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Om Kontakter"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Innstillinger"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Del synlige kontakter"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Delingen av synlige kontakter mislyktes."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Del favorittkontaktene"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Del alle kontaktene"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kunne ikke dele kontaktene."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importér/eksportér kontakter"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importér kontakter"</string>
+    <string name="share_error" msgid="665756457151793108">"Denne kontakten kan ikke deles."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Det finnes ingen kontakter å dele."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Søk"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakter som skal vises"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakter som skal vises"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definer tilpasset visning"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Lagre"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Søk etter kontakter"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritter"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ingen kontakter."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Fjern ofte kontaktede personer"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Velg SIM-kort"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Administrer kontoer"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importér/eksportér"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokkerte numre"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"avslutt søket"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Slett søket"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Alternativer for visning av kontakter"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konto"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Bruk alltid dette for samtaler"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ring med"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Ring med et notat"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Skriv et notat du vil sende med anropet …"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SEND OG RING"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> uleste elementer. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> ulest element. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Delversjon"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Åpen kildekode-lisenser"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Lisensdetaljer for programvare med åpen kildekode"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Personvernregler"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Vilkår for bruk"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Lisenser for åpen kildekode"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Kunne ikke åpne nettadressen."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Det er merket av for <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Det er ikke merket av for <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Start et videoanrop"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Slett"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipse"</string>
+</resources>
diff --git a/res-common/values-ne-rNP-sw600dp/strings.xml b/res-common/values-ne-rNP-sw600dp/strings.xml
new file mode 100644
index 0000000..b616904
--- /dev/null
+++ b/res-common/values-ne-rNP-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"यन्त्र"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"कुनै पनि निर्यात गर्ने मिल्ने सम्पर्कहरू छैनन्। यदि तपाईँको ट्याब्लेटमा सच्चिकै सम्पर्कहरू छन् भने केही डेटा प्रदायकहरूले ट्याब्लेटबाट सम्पर्कहरू निर्यात गर्ने अनुमति दिँदैनन् होला।"</string>
+</resources>
diff --git a/res-common/values-ne-rNP/strings.xml b/res-common/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..694e738
--- /dev/null
+++ b/res-common/values-ne-rNP/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"पाठको प्रतिलिपि गरियो"</string>
+    <string name="copy_text" msgid="3424081789297978355">"क्लिपबोर्डमा प्रतिलिपि गर्नुहोस्"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> लाई कल गर्नुहोस्"</string>
+    <string name="call_home" msgid="1479549630992276827">"घरमा कल गर्नुहोस्"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"मोबाइलमा कल गर्नुहोस्"</string>
+    <string name="call_work" msgid="8299062439076337075">"काममा कल गर्नुहोस्"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"कामको फ्याक्समा कल गर्नुहोस्"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"घरको फ्याक्समा कल गर्नुहोस्"</string>
+    <string name="call_pager" msgid="3038080882899955112">"पेजरलाई कल गर्नुहोस्"</string>
+    <string name="call_other" msgid="4472141328347894937">"कल गर्नुहोस्"</string>
+    <string name="call_callback" msgid="687494744634190411">"कलब्याक कल गर्नुहोस्"</string>
+    <string name="call_car" msgid="9078083109758282133">"कारलाई कल गर्नुहोस्"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"कम्पनी मूललाई कल गर्नुहोस्"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN कल गर्नुहोस्"</string>
+    <string name="call_main" msgid="4640261071249938558">"मुख्यलाई कल गर्नुहोस्"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"फ्याक्सलाई कल गर्नुहोस्"</string>
+    <string name="call_radio" msgid="9055749313292712021">"रेडियोमा कल गर्नुहोस्"</string>
+    <string name="call_telex" msgid="2909886619224843563">"टेलेक्सलाई कल गर्नुहोस्"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD लाई कल गर्नुहोस्"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"काम मोबाइलमा कल गर्नुहोस्"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"काम पेजरमा कल गर्नुहोस्"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> लाई कल गर्नुहोस्"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS लाई कल गर्नुहोस्"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (फोन गर्नुहोस्)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"पाठ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"पाठ घर"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"पाठ मोबाइल"</string>
+    <string name="sms_work" msgid="3910570578912367742">"पाठ काम"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"पाठ काम फ्याक्स"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"पाठ घर फ्याक्स"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"पाठ पेजर"</string>
+    <string name="sms_other" msgid="910895193552957097">"पाठ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"पाठ कलब्याक"</string>
+    <string name="sms_car" msgid="8543669230270954512">"पाठ कार"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"पाठ कम्पनी मूल"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"पाठ ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"पाठ मुख्य"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"पाठ फ्याक्स"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"पाठ रेडियो"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"पाठ टेलेक्स"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"पाठ TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"पाठ काम मोबाइल"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"पाठ काम पेजर"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"पाठ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"पाठ MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (सन्देश पठाउनुहोस्)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"भिडियो कल बनाउनुहोस्"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"प्रायः सम्पर्क भएकालाई हटाउने?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"तपाईंले सम्पर्कहरू र फोन अनुप्रयोगहरूमा बारम्बार सम्पर्क गरेको सूची खाली गर्नुहुनेछ र स्क्रयाचबाट तपाईंको ठेगाना प्राथमिकताहरू सिक्नको लागि इमेल अनुप्रयोगहरूलाई दबाब दिनुहुनेछ।"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"बारम्बार सम्पर्क गरिएकाहरूलाई मेटाउँदै ..."</string>
+    <string name="status_available" msgid="4832569677396634846">"उपलब्ध"</string>
+    <string name="status_away" msgid="6267905184545881094">"टाढा"</string>
+    <string name="status_busy" msgid="7111912905211403545">"व्यस्त"</string>
+    <string name="contactsList" msgid="7140022347217602605">"सम्पर्कहरू"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"अन्य"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"निर्देशिका"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"कार्यको निर्देशिका"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"सबै सम्पर्कहरू"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"खोजी गरिँदै..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>भन्दा बढी पाइयो।"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"कुनै सम्पर्कहरू छैनन्।"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> फेला पर्यो</item>
+      <item quantity="one">1 फेला पर्यो</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g>लाई तत्काल सम्पर्क गर्नुहोस्"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(नाम छैन)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"लगातार सम्पर्क गरिएको"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"सम्पर्क हेर्नुहोस्"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"फोन नम्बर भएका सबै सम्पर्कहरू"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"कार्य प्रोफाइलका सम्पर्कहरू"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"अद्यावधिकहरू अवलोकन गर्नुहोस्"</string>
+    <string name="account_phone" msgid="325867897209266837">"यन्त्र"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"नाम"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"उपनाम"</string>
+    <string name="full_name" msgid="885420216812981202">"नाम"</string>
+    <string name="name_given" msgid="4153709115654909377">"नाम"</string>
+    <string name="name_family" msgid="5317387657540738981">"थर"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"नाम उपसर्ग"</string>
+    <string name="name_middle" msgid="3951610314424632183">"बिचको नाम"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"नाम प्रत्यय"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"फोनेटिक नाम"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ध्वनितात्त्विक नाम"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"फोनेटिक मध्य नाम"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"फोनेटिक थर"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"फोन"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"इमेल गर्नुहोस्"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ठेगाना"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"संगठन"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"सम्बन्ध"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"विशेष मिति"</string>
+    <string name="sms" msgid="8086289395154598654">"पाठ सन्देश"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ठेगाना"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"कम्पनी"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"शीर्षक"</string>
+    <string name="label_notes" msgid="3997277594846722699">"टिप्पणीहरू"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"वेबसाइट"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"लेबलहरू"</string>
+    <string name="email_home" msgid="2230967805906450693">"घरमा इमेल गर्नुहोस्"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"इमेल मोबाइल"</string>
+    <string name="email_work" msgid="7065971921227432400">"काममा इमेल गर्नुहोस्"</string>
+    <string name="email_other" msgid="4601881243553289615">"इमेल गर्नुहोस्"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g>लाई इमेल गर्नुहोस्"</string>
+    <string name="email" msgid="5624424151176351591">"इमेल गर्नुहोस्"</string>
+    <string name="postal_street" msgid="881349814077356134">"सडक"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO Box:"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"छिमेक"</string>
+    <string name="postal_city" msgid="3173008531169519309">"शहर"</string>
+    <string name="postal_region" msgid="1695206048198921115">"स्थिति"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ZIP कोड"</string>
+    <string name="postal_country" msgid="3988452247038791892">"देश"</string>
+    <string name="map_home" msgid="1221397355014741634">"घरको ठेगाना हेर्नुहोस्"</string>
+    <string name="map_work" msgid="9015981646907637207">"कामको ठेगाना हेर्नुहोस्"</string>
+    <string name="map_other" msgid="55098598855607997">"ठेगाना हेर्नुहोस्"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> ठेगाना हेर्नुहोस्"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM को प्रयोग गरेर च्याट गर्नुहोस्"</string>
+    <string name="chat_msn" msgid="627481952525245054">"विन्डोज लाइभ चलाई कुराकानी गर्नुहोस्"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"याहुको प्रयोग गरेर च्याट गर्नुहोस्"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"स्काइप चलाएर कुराकानी गर्नुहोस्"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ चलाएर कुराकानी गर्नुहोस्"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google टक चलाएर कुराकानी गर्नुहोस्"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQको प्रयोग गरेर च्याट गर्नुहोस्"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"जाब्बरको प्रयोग गरेर च्याट गर्नुहोस्"</string>
+    <string name="chat" msgid="6297650784873558837">"कुराकानी"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"मेटाउनुहोस्"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"नाम फिल्डहरू विस्तार गर्नुहोस् वा खुम्चाउनुहोस्"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"फोनेटिक नाम क्षेत्रहरू विस्तृत गर्नुहोस् वा संक्षिप्त गर्नुहोस्"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"सबै सम्पर्कहरू"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ताराङ्कित"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"व्यक्तिगत बनाउनुहोस्"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"ठेगाना"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"सबै अन्य सम्पर्कहरू"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"सबै सम्पर्कहरू"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"सिंक समूह हटाउनुहोस्"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"सिंक समूह थप्नुहोस्"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"अधिक समूहहरू..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" सिङ्कबाट हटाइदै,  सिङ्कबाट समूहमा विभाजन नभएका सम्पर्कहरूलाई हटाउने छ।"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"प्रदर्शन विकल्पहरू बचत गर्दै ..."</string>
+    <string name="menu_done" msgid="32470053723443112">"भयो"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"रद्द गर्नुहोस्"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"अनुकूलित दृश्य"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"आयातित् सम्पर्कहरू सुरक्षित गर्नुहोस्:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM कार्डबाट आयात गर्नुहोस्"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> बाट आयात"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> सिमबाट आयात"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf फाइलबाट आयात गर्नुहोस्"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g>को आयात रद्द गर्ने हो?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> को निर्यात रद्द गर्नहोस्?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"VCard आयात/निर्यात रद्द गर्न सकेन"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"अज्ञात त्रुटि।"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"खोल्न सकेन \" <xliff:g id="FILE_NAME">%s</xliff:g> : \" <xliff:g id="EXACT_REASON">%s</xliff:g> ."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"निर्यातकले सुरु गर्न सकेन \" <xliff:g id="EXACT_REASON">%s</xliff:g> \"।"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"निर्यात गर्न मिल्ने कुनै सम्पर्क छैन।"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"तपाईँले आवश्यक अनुमति असक्षम गर्नुभएको छ।"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"निर्यात गर्दा एउटा त्रुटि देखा पर्‍यो \" <xliff:g id="EXACT_REASON">%s</xliff:g> \"।"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"आवश्यक फाइल नाम धेरै लामो छ (\" <xliff:g id="FILENAME">%s</xliff:g> \")।"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O त्रुटि"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"अप्रयाप्त मेमोरी। फाइल धेरै ठूलो हुन सक्छ।"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"एक अप्रत्यासित कारणले गर्दा vCard पार्स गर्न सकेन।"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"स्वरूप समर्थित छैन।"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"दिइएको vCard फाइल(हरू)को अधिजानकारी जम्मा गर्न सकेन।"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"एक वा बढी फाइलहरू आयात गर्न सकिएन (%s)।"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>निर्यात सकियो।"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"सम्पर्क ठेगानाहरू निर्यात गर्ने सकियो।"</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> निर्यात रद्द गरियो।"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"सम्पर्क डेटा निर्यात हुँदै"</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"डेटाबेस जानकारी पाउन सकेन।"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"निर्यात योग्य सम्पर्कहरू छैनन्। यदि तपाईँसँग फोनमा सम्पर्कहरू छन् भने केही डेटा प्रदायकहरूले फोनबाट सम्पर्कहरू निर्यात गर्ने अनुमति दिँदैनन्।"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard रचनाकार राम्ररी सुरु भएन।"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"निर्यात गर्न सकेन"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"सम्पर्क डेटा निर्यात गरिएको थिएन \n कारण: \" <xliff:g id="FAIL_REASON">%s</xliff:g> \""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g>आयत गर्दै"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"VCard डेटा पढ्न सकेन"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard डेटा पढ्ने रद्द भयो"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard आयात गर्ने समाप्त भयो <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>आयत गर्ने रद्द भयो"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> केहीबेर मै आयात गरिने छ।"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"फाइल तुरुन्तै आयात गरिने छ।"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard आयात अनुरोध अस्वीकृत गरियो। पछि फेरि प्रयास गर्नुहोस्।"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> तुरुन्तै निर्यात गरिने छ।"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"फाइल तुरुन्तै निर्यात गरिने छ।"</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard निर्यात अनुरोध अस्वीकार गरियो। कृपया फेरि प्रयास गर्नुहोस्।"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"सम्पर्क"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"स्थानीय अस्थायी भण्डारणका लागि vCard (हरू) क्यास गर्दै ।  वास्तविक आयात छिट्टै सुरु हुने छ।"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"VCard आयात गर्न सकेन।"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFCमा प्राप्त सम्पर्क"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"सम्पर्कहरू निर्यात गर्ने?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"क्यासिङ हुँदै"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"आयात गर्दै <xliff:g id="CURRENT_NUMBER">%s</xliff:g> / <xliff:g id="TOTAL_NUMBER">%s</xliff:g> : <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf फाइलमा निर्यात गर्नुहोस्"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"क्रमवद्घ गर्नुहोस्"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"नाम"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"थर"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"नामको ढाँचा"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"नाम पहिले"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"थर पहिले"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"खाताहरू"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"नयाँ सम्पर्कहरूका लागि पूर्वनिर्धारित खाता"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"सम्पर्क मेटाडाटा [DOGFOOD]लाई सिंक गर्नुहोस्"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"सम्पर्क मेटाडाटालाई सिंक गर्नुहोस्"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"मेरो बारेमा जानकारी"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"आफ्नो प्रोफाइल सेट अप गर्नुहोस्"</string>
+    <string name="setting_about" msgid="3926137653588942297">"सम्पर्कहरूको बारेमा"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"सेटिङहरू"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"देखिने सम्पर्कहरू साझेदारी गर्नुहोस्"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"देख्न सकिने सम्पर्कहरू साझेदारी गर्न असफल भयो।"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"मनपर्ने सम्पर्क साझेदारी गर्नुहोस्"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"सबै सम्पर्क साझेदारी गर्नुहोस्"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"सम्पर्कहरू साझेदारी गर्न असफल भयो।"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"आयात/निर्यात सम्पर्कहरू"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"सम्पर्कहरूलाई आयात गर्नुहोस्"</string>
+    <string name="share_error" msgid="665756457151793108">"यस सम्पर्कलाई साझेदारी गर्न सकिँदैन।"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"साझेदारी गर्न कुनै सम्पर्क ठेगानाहरू छैनन्।"</string>
+    <string name="menu_search" msgid="7464453023659824700">"खोज्नुहोस्"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"प्रदर्शन गर्नका लागि सम्पर्कहरू"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"प्रदर्शन गर्न सम्पर्कहरू"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"अनुकूलित दृश्यलाई परिभाषित गर्नुहोस्"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"सुरक्षित गर्नुहोस्"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"सम्पर्कहरू खोज्नुहोस्"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"मनपर्नेहरू"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"कुनै सम्पर्कहरू छैनन्।"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"बारम्बारताहरू हटाउनुहोस्"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"सिम कार्ड चयन गर्नुहोस्"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"खाताहरू व्यवस्थापन गर्नुहोस्"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"आयात/निर्यात"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"रोक लगाइएका नम्बरहरू"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g>को मार्फत"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> मार्फत <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"खोजी गर्न  रोक्नुहोस्"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"खोजी खाली गर्नुहोस्"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"सम्पर्क प्रदर्शन विकल्पहरू"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"खाता"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"कल गर्नका लागि यसको प्रयोग सधैं गर्नुहोस्"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"संग कल"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"टिप्पणीसँगै कल गर्नुहोस्"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"यस कलसँग पठाउन एक टिप्पणी  टाइप गर्नुहोस्"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"पठाउनुहोस् र कल गर्नुहोस्"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> पढ्न बाँकी वस्तुहरू। </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> पढ्न बाँकी वस्तु। </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"बिल्ड संस्करण"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"खुला स्रोत इजाजतपत्रहरू"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"खुला स्रोत सफ्टवेयरका लागि इजाजतपत्रका विवरणहरू"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"गोपनीयता नीति"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"सेवा सर्तहरू"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"खुलास्रोत इजाजतपत्रहरू"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url खोल्न सकिएन।"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> जाँच गरियो"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> जाँच गरिएन"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"भिडियो कल गर्नुहोस्"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"मेट्नुहोस्"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"पदलोप चिन्ह"</string>
+</resources>
diff --git a/res-common/values-nl-sw600dp/strings.xml b/res-common/values-nl-sw600dp/strings.xml
new file mode 100644
index 0000000..b7ccbf3
--- /dev/null
+++ b/res-common/values-nl-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Apparaat"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Er zijn geen exporteerbare contacten. Als je wel contacten op je tablet hebt opgeslagen, staat je gegevensprovider het exporteren van contacten van de tablet mogelijk niet toe."</string>
+</resources>
diff --git a/res-common/values-nl/strings.xml b/res-common/values-nl/strings.xml
new file mode 100644
index 0000000..4d1a1d7
--- /dev/null
+++ b/res-common/values-nl/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekst gekopieerd"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiëren naar klembord"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> bellen"</string>
+    <string name="call_home" msgid="1479549630992276827">"Privé bellen"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Mobiel bellen"</string>
+    <string name="call_work" msgid="8299062439076337075">"Werk bellen"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Fax werk bellen"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Fax privé bellen"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Pager bellen"</string>
+    <string name="call_other" msgid="4472141328347894937">"Bellen"</string>
+    <string name="call_callback" msgid="687494744634190411">"Terugbelnummer bellen"</string>
+    <string name="call_car" msgid="9078083109758282133">"Auto bellen"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Hoofdnummer bedrijf bellen"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN bellen"</string>
+    <string name="call_main" msgid="4640261071249938558">"Hoofdnummer bellen"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Fax bellen"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Radio bellen"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Telex bellen"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD bellen"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Mobiel nummer werk bellen"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Pager werk bellen"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> bellen"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS bellen"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (bellen)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Sms\'en naar <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Sms\'en naar huis"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Sms\'en naar mobiel"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Sms\'en naar werk"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Sms\'en naar fax werk"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Sms\'en naar fax privé"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Sms\'en naar pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Sms\'en"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Sms\'en naar terugbelnummer"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Sms\'en naar auto"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Sms\'en naar hoofdnummer bedrijf"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Sms\'en naar ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Sms\'en naar hoofdnummer"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Sms\'en naar fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Sms\'en naar radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Sms\'en naar telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Sms\'en naar TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Sms\'en naar mobiel nummer werk"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Sms\'en naar pager werk"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Sms\'en naar <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Sms\'en naar MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (sms\'en)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Videogesprek starten"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Lijst regelmatige contacten wissen?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Je wist de lijst met contacten waarmee je regelmatig contact opneemt in de apps Contacten en Telefoon, en e-mailapps moeten je voorkeursadressen weer opnieuw leren."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Regelmatige contacten wissen..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Beschikbaar"</string>
+    <string name="status_away" msgid="6267905184545881094">"Niet beschikbaar"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Bezet"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contacten"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Overig"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Directory"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Zakelijke contactenlijst"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Alle contacten"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Zoeken..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Meer dan <xliff:g id="COUNT">%d</xliff:g> gevonden."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Geen contacten"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> gevonden</item>
+      <item quantity="one">1 gevonden</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Snelcontact voor <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Geen naam)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Regelmatig contact mee opgenomen"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Contact weergeven"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Alle contacten met telefoonnummers"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contacten uit werkprofiel"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Updates bekijken"</string>
+    <string name="account_phone" msgid="325867897209266837">"Apparaat"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Naam"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Bijnaam"</string>
+    <string name="full_name" msgid="885420216812981202">"Naam"</string>
+    <string name="name_given" msgid="4153709115654909377">"Voornaam"</string>
+    <string name="name_family" msgid="5317387657540738981">"Achternaam"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Voorvoegsel van naam"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Tweede voornaam"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Achtervoegsel van naam"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetische naam"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetische voornaam"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetische tweede voornaam"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetische achternaam"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefoon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adres"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisatie"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relatie"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Speciale datum"</string>
+    <string name="sms" msgid="8086289395154598654">"Sms"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adres"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Bedrijf"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titel"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Opmerkingen"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Labels"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-mailen naar huis"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-mailen naar mobiel"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-mailen naar werk"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-mailen"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-mailen naar <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-mailen"</string>
+    <string name="postal_street" msgid="881349814077356134">"Straat"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postbus"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Buurt"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Stad"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Staat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postcode"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Thuisadres weergeven"</string>
+    <string name="map_work" msgid="9015981646907637207">"Werkadres weergeven"</string>
+    <string name="map_other" msgid="55098598855607997">"Adres weergeven"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> adres weergeven"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatten via AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatten via Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatten via Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatten via Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatten via QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatten via Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatten via ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatten via Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatten"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"verwijderen"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Naamvelden uitvouwen of samenvouwen"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Fonetische naamvelden uitvouwen of samenvouwen"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Alle contacten"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Met ster"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Aanpassen"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Alle andere contacten"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Alle contacten"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Synchronisatiegroep verwijderen"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Synchronisatiegroep toevoegen"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Meer groepen…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Als je \'<xliff:g id="GROUP">%s</xliff:g>\' verwijdert uit de synchronisatie, worden ook contacten die niet bij een groep horen uit de synchronisatie verwijderd."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Weergaveopties opslaan..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Gereed"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Annuleren"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Aangepaste weergave"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Geïmporteerde contacten opslaan in:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importeren van simkaart"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importeren van simkaart <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importeren van simkaart <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importeren uit VCF-bestand"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Import van <xliff:g id="FILENAME">%s</xliff:g> annuleren?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Export van <xliff:g id="FILENAME">%s</xliff:g> annuleren?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Kan vCard-import/export niet annuleren"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Onbekende fout."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Kan \'<xliff:g id="FILE_NAME">%s</xliff:g>\' niet openen: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Kan het exportprogramma niet starten: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Er is geen contact dat kan worden geëxporteerd."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Je hebt een vereist recht uitgeschakeld."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Er is een fout opgetreden tijdens het exporteren: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Vereiste bestandsnaam is te lang (\'<xliff:g id="FILENAME">%s</xliff:g>\')."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O-fout"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Onvoldoende geheugen. Het bestand is mogelijk te groot."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Kan vCard om onverwachte reden niet parseren."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"De indeling wordt niet ondersteund."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Kan metagegevens niet verzamelen uit vCard-bestand(en)."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Kan een of meer bestanden niet importeren (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exporteren van <xliff:g id="FILENAME">%s</xliff:g> voltooid."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Contacten geëxporteerd."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"De contacten zijn geëxporteerd. Klik op de melding om contacten te delen."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tik om contacten te delen."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exporteren van <xliff:g id="FILENAME">%s</xliff:g> geannuleerd."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Contactgegevens exporteren"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Contactgegevens worden geëxporteerd."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Kan databasegegevens niet ophalen."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Er zijn geen exporteerbare contacten. Als je wel contacten op je telefoon hebt opgeslagen, staat je gegevensprovider het exporteren van contacten van de telefoon mogelijk niet toe."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"De vCard-editor is niet correct gestart."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Kan niet exporteren"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"De contactgegevens zijn niet geëxporteerd.\nReden: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\'"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> importeren"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Kan vCard-gegevens niet lezen"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Lezen van vCard-gegevens geannuleerd"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importeren van vCard <xliff:g id="FILENAME">%s</xliff:g> voltooid"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importeren van <xliff:g id="FILENAME">%s</xliff:g> geannuleerd"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> wordt binnenkort geïmporteerd."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Bestand wordt binnenkort geïmporteerd."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Verzoek voor vCard-import is geweigerd. Probeer het later opnieuw."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> wordt binnenkort geëxporteerd."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Dit bestand wordt binnenkort geëxporteerd."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Contacten worden binnenkort geëxporteerd."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Verzoek voor vCard-export is geweigerd. Probeer het later opnieuw."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Bezig met opslaan van vCard(s) in de lokale tijdelijke opslag. Het daadwerkelijke importeren begint binnenkort."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Kan vCard niet importeren."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contact via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Contacten exporteren?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"In cachegeheugen opslaan"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importeren <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exporteren naar VCF-bestand"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sorteren op"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Voornaam"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Achternaam"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Naamindeling"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Voornaam eerst"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Achternaam eerst"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Accounts"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Standaardaccount voor nieuwe contacten"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Metadata van contacten synchroniseren [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Metadata van contacten synchroniseren"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mijn info"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Je profiel instellen"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Over Contacten"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Instellingen"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Zichtbare contacten delen"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Kan zichtbare contacten niet delen."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Favoriete contacten delen"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Alle contacten delen"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kan contacten niet delen."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Contacten importeren/exporteren"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Contacten importeren"</string>
+    <string name="share_error" msgid="665756457151793108">"Dit contact kan niet worden gedeeld."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Er zijn geen contacten om te delen."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Zoeken"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Zichtbare contacten"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Zichtbare contacten"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Aangepaste weergave definiëren"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Opslaan"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Contacten zoeken"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favorieten"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Geen contacten."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Regelmatige contacten wissen"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Simkaart selecteren"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Accounts beheren"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importeren/exporteren"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Geblokkeerde nummers"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"stoppen met zoeken"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Zoekopdracht wissen"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opties voor contactweergave"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Account"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Altijd gebruiken voor oproepen"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Bellen met"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Oproep met een notitie"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Typ een notitie om te verzenden met de oproep..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"VERZENDEN EN BELLEN"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ongelezen items. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> ongelezen item. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Buildversie"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Open-sourcelicenties"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licentiedetails voor open-sourcesoftware"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Privacybeleid"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Servicevoorwaarden"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Open-sourcelicenties"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Kan de URL niet openen."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> geselecteerd"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> niet geselecteerd"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Videogesprek starten"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Verwijderen"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Weglatingsteken"</string>
+</resources>
diff --git a/res-common/values-pa-rIN-sw600dp/strings.xml b/res-common/values-pa-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..d805276
--- /dev/null
+++ b/res-common/values-pa-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"ਡੀਵਾਈਸ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ਇੱਥੇ ਕੋਈ ਵੀ ਨਿਰਯਾਤ ਕਰਨਯੋਗ ਸੰਪਰਕ ਨਹੀਂ ਹਨ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ ਵਿੱਚ ਸੰਪਰਕ ਨਹੀਂ ਹਨ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਡੈਟਾ ਪ੍ਰਦਾਤੇ ਸੰਪਰਕਾਂ ਨੂੰ ਟੈਬਲੈੱਟ ਤੋਂ ਨਿਰਯਾਤ ਕਰਨ ਦੀ ਮਨਜ਼ੂਰੀ ਨਾ ਦੇਣ।"</string>
+</resources>
diff --git a/res-common/values-pa-rIN/strings.xml b/res-common/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..c138c69
--- /dev/null
+++ b/res-common/values-pa-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"ਟੈਕਸਟ ਕਾਪੀ ਕੀਤਾ"</string>
+    <string name="copy_text" msgid="3424081789297978355">"ਕਲਿਪਬੋਰਡ ਤੇ ਕਾਪੀ ਕਰੋ"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_home" msgid="1479549630992276827">"ਘਰ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"ਮੋਬਾਈਲ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_work" msgid="8299062439076337075">"ਦਫ਼ਤਰ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"ਦਫ਼ਤਰ ਦੀ ਫੈਕਸ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ਘਰ ਦੀ ਫੈਕਸ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_pager" msgid="3038080882899955112">"ਪੇਜ਼ਰ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_other" msgid="4472141328347894937">"ਕਾਲ ਕਰੋ"</string>
+    <string name="call_callback" msgid="687494744634190411">"ਕਾਲਬੈਕ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_car" msgid="9078083109758282133">"ਕਾਰ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ਕੰਪਨੀ ਦੇ ਮੁੱਖ ਨੰਬਰ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_main" msgid="4640261071249938558">"ਮੁੱਖ ਨੰਬਰ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ਫੈਕਸ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ਰੇਡੀਓ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ਟੈਲੈਕਸ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"ਦਫ਼ਤਰ ਦੇ ਮੋਬਾਈਲ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"ਦਫ਼ਤਰ ਦੇ ਪੇਜ਼ਰ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS ਕਾਲ ਕਰੋ"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ਕਾਲ ਕਰੋ)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ਘਰ ਦੇ ਨੰਬਰ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ਮੋਬਾਈਲ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ਦਫ਼ਤਰ ਦੇ ਨੰਬਰ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ਦਫ਼ਤਰ ਦੀ ਫੈਕਸ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ਘਰ ਦੀ ਫੈਕਸ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ਪੇਜ਼ਰ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_other" msgid="910895193552957097">"ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ਕਾਲਬੈਕ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ਕਾਰ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ਕੰਪਨੀ ਦੇ ਮੁੱਖ ਨੰਬਰ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ਮੁੱਖ ਨੰਬਰ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ਫੈਕਸ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ਰੇਡੀਓ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ਟੈਲੈਕਸ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ਦਫ਼ਤਰ ਦੇ ਮੋਬਾਈਲ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ਦਫ਼ਤਰ ਦੇ ਪੇਜ਼ਰ ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> ਨੂੰ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS ਤੇ ਟੈਕਸਟ ਕਰੋ"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ਸੁਨੇਹਾ ਭੇਜੋ)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ਵੀਡੀਓ ਕਾਲ ਕਰੋ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"ਕੀ ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਹਟਾਉਣੇ ਹਨ?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"ਤੁਸੀਂ ਵਾਰੀ-ਵਾਰੀ ਸੰਪਰਕ ਅਤੇ ਫੋਨ ਐਪਸ ਵਿੱਚ ਸੰਪਰਕ ਕੀਤੀ ਸੂਚੀ ਹਟਾਓਗੇ ਅਤੇ ਈਮੇਲ ਐਪਸ ਤੇ ਸਕ੍ਰੈਚ ਨਾਲ ਤੁਹਾਡੀਆਂ ਪਤਾ ਲਗਾਉਣ ਦੀਆਂ ਤਰਜੀਹਾਂ ਜਾਣਨ ਲਈ ਜ਼ੋਰ ਪਾਓਗੇ।"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਹਟਾ ਰਿਹਾ ਹੈ…"</string>
+    <string name="status_available" msgid="4832569677396634846">"ਉਪਲਬਧ"</string>
+    <string name="status_away" msgid="6267905184545881094">"ਦੂਰ"</string>
+    <string name="status_busy" msgid="7111912905211403545">"ਰੁੱਝਾ ਹੋਇਆ ਹੈ"</string>
+    <string name="contactsList" msgid="7140022347217602605">"ਸੰਪਰਕ"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"ਹੋਰ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ਡਾਇਰੈਕਟਰੀ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ਕੰਮ ਡਾਇਰੈਕਟਰੀ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"ਖੋਜ ਰਿਹਾ ਹੈ..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> ਤੋਂ ਵੱਧ ਮਿਲੇ।"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ਮਿਲਿਆ</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਮਿਲਿਆ</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> ਲਈ ਤਤਕਾਲ ਸੰਪਰਕ"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ਕੋਈ ਨਾਮ ਨਹੀਂ)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"ਸੰਪਰਕ ਦੇਖੋ"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ਫੋਨ ਨੰਬਰਾਂ ਵਾਲੇ ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਸੰਪਰਕ"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"ਅਪਡੇਟਾਂ ਦੇਖੋ"</string>
+    <string name="account_phone" msgid="325867897209266837">"ਡੀਵਾਈਸ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"ਨਾਮ"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ਉਪਨਾਮ"</string>
+    <string name="full_name" msgid="885420216812981202">"ਨਾਮ"</string>
+    <string name="name_given" msgid="4153709115654909377">"ਪਹਿਲਾ ਨਾਮ"</string>
+    <string name="name_family" msgid="5317387657540738981">"ਆਖਰੀ ਨਾਮ"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"ਨਾਮ ਅਗੇਤਰ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"ਵਿਚਕਾਰਲਾ ਨਾਮ"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"ਨਾਮ ਪਿਛੇਤਰ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ਧੁਨੀਆਤਮਿਕ ਨਾਮ"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ਧੁਨੀਆਤਮਿਕ ਪਹਿਲਾ ਨਾਮ"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ਧੁਨੀਆਤਮਿਕ ਵਿਚਕਾਰਲਾ ਨਾਮ"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ਧੁਨੀਆਤਮਿਕ ਆਖਰੀ ਨਾਮ"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ਫੋਨ"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ਈਮੇਲ"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ਪਤਾ"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"ਕੰਪਨੀ"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ਰਿਸ਼ਤਾ"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"ਵਿਸ਼ੇਸ਼ ਮਿਤੀ"</string>
+    <string name="sms" msgid="8086289395154598654">"ਟੈਕਸਟ ਸੁਨੇਹਾ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ਪਤਾ"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"ਕੰਪਨੀ"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ਸਿਰਲੇਖ"</string>
+    <string name="label_notes" msgid="3997277594846722699">"ਸੂਚਨਾਵਾਂ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ਵੈੱਬਸਾਈਟ"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ਲੇਬਲ"</string>
+    <string name="email_home" msgid="2230967805906450693">"ਘਰ ਈਮੇਲ ਕਰੋ"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ਮੋਬਾਈਲ ਤੇ ਈਮੇਲ ਕਰੋ"</string>
+    <string name="email_work" msgid="7065971921227432400">"ਦਫ਼ਤਰ ਈਮੇਲ ਕਰੋ"</string>
+    <string name="email_other" msgid="4601881243553289615">"ਈਮੇਲ"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> ਨੂੰ ਈਮੇਲ ਕਰੋ"</string>
+    <string name="email" msgid="5624424151176351591">"ਈਮੇਲ"</string>
+    <string name="postal_street" msgid="881349814077356134">"ਗਲੀ"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO ਬੌਕਸ"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"ਗਵਾਂਢ"</string>
+    <string name="postal_city" msgid="3173008531169519309">"ਸ਼ਹਿਰ"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ਰਾਜ"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ਜ਼ਿੱਪ ਕੋਡ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ਦੇਸ਼"</string>
+    <string name="map_home" msgid="1221397355014741634">"ਘਰ ਦਾ ਪਤਾ ਦੇਖੋ"</string>
+    <string name="map_work" msgid="9015981646907637207">"ਦਫ਼ਤਰ ਦਾ ਪਤਾ ਦੇਖੋ"</string>
+    <string name="map_other" msgid="55098598855607997">"ਪਤਾ ਦੇਖੋ"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> ਪਤਾ ਦੇਖੋ"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string>
+    <string name="chat" msgid="6297650784873558837">"ਚੈਟ"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ਮਿਟਾਓ"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"ਨਾਮ ਖੇਤਰਾਂ ਦਾ ਵਿਸਤਾਰ ਕਰੋ ਜਾਂ ਨਸ਼ਟ ਕਰੋ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ਫੋਨੈਟਿਕ ਨਾਮ ਖੇਤਰਾਂ ਦਾ ਵਿਸਤਾਰ ਕਰੋ ਜਾਂ ਨਸ਼ਟ ਕਰੋ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ਸਟਾਰ ਵਾਲੇ"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਕਰੋ"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"ਸੰਪਰਕ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"ਹੋਰ ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"ਸਿੰਕ ਸਮੂਹ ਹਟਾਓ"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"ਸਿੰਕ ਸਮੂਹ ਜੋੜੋ"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"ਹੋਰ ਸਮੂਹ…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"ਸਿੰਕ ਵਿੱਚੋਂ \"<xliff:g id="GROUP">%s</xliff:g>\" ਨੂੰ ਹਟਾਉਣ ਨਾਲ ਸਿੰਕ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਅਨਗਰੁੱਪ ਕੀਤੇ ਸੰਪਰਕ ਵੀ ਹਟ ਜਾਣਗੇ।"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ਡਿਸਪਲੇ ਚੋਣਾਂ ਸੁਰੱਖਿਅਤ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="menu_done" msgid="32470053723443112">"ਹੋ ਗਿਆ"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"ਰੱਦ ਕਰੋ"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਕੀਤਾ ਦ੍ਰਿਸ਼"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"ਆਯਾਤ ਕੀਤੇ ਸੰਪਰਕਾਂ ਨੂੰ ਇਸ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰੋ:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM ਕਾਰਡ ਵਿੱਚੋਂ ਆਯਾਤ ਕਰੋ"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> ਵਿੱਚੋਂ ਆਯਾਤ ਕਰੋ"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g> ਵਿੱਚੋਂ ਆਯਾਤ ਕਰੋ"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ਫ਼ਾਈਲ ਤੋਂ ਆਯਾਤ ਕਰੋ"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"ਕੀ <xliff:g id="FILENAME">%s</xliff:g> ਦਾ ਆਯਾਤ ਰੱਦ ਕਰਨਾ ਹੈ?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"ਕੀ <xliff:g id="FILENAME">%s</xliff:g> ਦਾ ਨਿਰਯਾਤ ਰੱਦ ਕਰਨਾ ਹੈ?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard ਆਯਾਤ/ਨਿਰਯਾਤ ਰੱਦ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"ਅਗਿਆਤ ਅਸ਼ੁੱਧੀ।"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ਨੂੰ ਖੋਲ੍ਹ ਨਹੀਂ ਸਕਿਆ: <xliff:g id="EXACT_REASON">%s</xliff:g>।"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ਐਕਸਪੋਰਟ ਚਾਲੂ ਨਹੀੰ ਕਰ ਸਕਿਆ: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"।"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ਕੋਈ ਵੀ ਨਿਰਯਾਤ ਕਰਨ ਯੋਗ ਸੰਪਰਕ ਨਹੀਂ ਹਨ।"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"ਤੁਸੀਂ ਇੱਕ ਲੁੜੀਂਦੀ ਅਨੁਮਤੀ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਹੈ।"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"ਨਿਰਯਾਤ ਕਰਨ ਦੌਰਾਨ ਇੱਕ ਅਸ਼ੁੱਧੀ ਵਾਪਰੀ: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"।"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ਲੁੜੀਂਦਾ ਫਾਈਲ ਨਾਮ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡਾ ਹੈ (\"<xliff:g id="FILENAME">%s</xliff:g>\")।"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O ਅਸ਼ੁੱਧੀ"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"ਮੈਮਰੀ ਕਾਫ਼ੀ ਨਹੀਂ। ਫਾਈਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੋ ਸਕਦੀ ਹੈ।"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ਇੱਕ ਅਕਲਪਿਤ ਕਾਰਨ ਕਰਕੇ vCard ਪਾਰਸ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ਫੌਰਮੈਟ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"ਦਿੱਤੀ ਗਈ vCard ਫਾਈਲ(ਫਾਈਲਾਂ) ਦੀ meta ਜਾਣਕਾਰੀ ਇਕੱਤਰ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ਇੱਕ ਜਾਂ ਵੱਧ ਫਾਈਲਾਂ ਆਯਾਤ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ (%s)।"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> ਨੂੰ ਨਿਰਯਾਤ ਕਰਨਾ ਪੂਰਾ ਹੋਇਆ।"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"ਸੰਪਰਕਾਂ ਨੂੰ ਨਿਰਯਾਤ ਕਰਨਾ ਪੂਰਾ ਹੋਇਆ।"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"ਸੰਪਰਕਾਂ ਨੂੰ ਨਿਰਯਾਤ ਕਰਨਾ ਮੁਕੰਮਲ ਹੋਇਆ, ਸੰਪਰਕਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਸੂਚਨਾ \'ਤੇ ਕਲਿੱਕ ਕਰੋ।"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"ਸੰਪਰਕਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> ਨੂੰ ਨਿਰਯਾਤ ਕਰਨਾ ਰੱਦ ਕੀਤਾ।"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"ਸੰਪਰਕ ਡਾਟਾ ਨਿਰਯਾਤ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"ਸੰਪਰਕ ਡੈਟੇ ਨੂੰ ਨਿਰਯਾਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ਡਾਟਾਬੇਸ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ਨਿਰਯਾਤ ਕਰਨ ਯੋਗ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ। ਜੇਕਰ ਤੁਹਾਡੇ ਫੋਨ ਤੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ, ਤਾਂ ਕੁਝ ਡਾਟਾ ਪ੍ਰਦਾਤਾ ਸੰਪਰਕਾਂ ਨੂੰ ਫੋਨ ਤੋਂ ਨਿਰਯਾਤ ਕੀਤੇ ਜਾਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਵੀ ਦੇ ਸਕਦੇ।"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard ਕੰਪੋਜ਼ਰ ਸਹੀ ਢੰਗ ਨਾਲ ਚਾਲੂ ਨਹੀਂ ਹੋਇਆ।"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"ਸੰਪਰਕ ਡਾਟਾ ਨਿਰਯਾਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ।\nਕਾਰਨ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਆਯਾਤ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard ਡਾਟਾ ਨਹੀਂ ਪੜ੍ਹ ਸਕਿਆ"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard ਡਾਟਾ ਪੜ੍ਹਨਾ ਰੱਦ ਕੀਤਾ"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> ਨੂੰ ਆਯਾਤ ਕਰਨਾ ਪੂਰਾ ਹੋਇਆ"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> ਨੂੰ ਆਯਾਤ ਕਰਨਾ ਰੱਦ ਕੀਤਾ।"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> ਨੂੰ ਥੋੜ੍ਹੀ ਦੇਰ ਵਿੱਚ ਆਯਾਤ ਕੀਤਾ ਜਾਏਗਾ।"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ਫਾਈਲ ਥੋੜ੍ਹੀ ਦੇਰ ਵਿੱਚ ਆਯਾਤ ਕੀਤੀ ਜਾਏਗੀ।"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard ਆਯਾਤ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕੀਤੀ ਗਈ ਸੀ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> ਨੂੰ ਥੋੜ੍ਹੀ ਦੇਰ ਵਿੱਚ ਨਿਰਯਾਤ ਕੀਤਾ ਜਾਏਗਾ।"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ਫਾਈਲ ਥੋੜ੍ਹੀ ਦੇਰ ਵਿੱਚ ਨਿਰਯਾਤ ਕੀਤੀ ਜਾਏਗੀ।"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"ਸੰਪਰਕਾਂ ਨੂੰ ਜਲਦ ਹੀ ਨਿਰਯਾਤ ਕੀਤਾ ਜਾਵੇਗਾ।"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard ਨਿਰਯਾਤ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕੀਤੀ ਗਈ ਸੀ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"ਸੰਪਰਕ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"ਸਥਾਨਕ ਅਸਥਾਈ ਸਟੋਰੇਜ ਲਈ vCard ਕੈਚ ਕਰ ਰਿਹਾ ਹੈ। ਅਸਲੀ ਆਯਾਤ ਜਲਦੀ ਹੀ ਚਾਲੂ ਹੋਵੇਗਾ।"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard ਆਯਾਤ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC ਤੇ ਪ੍ਰਾਪਤ ਕੀਤਾ ਸੰਪਰਕ"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"ਕੀ ਸੰਪਰਕ ਨਿਰਯਾਤ ਕਰਨੇ ਹਨ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ਕੈਚ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> ਨੂੰ ਆਯਾਤ ਕਰ ਰਿਹਾ ਹੈ: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ਫ਼ਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ਇਸ ਮੁਤਾਬਕ ਛਾਂਟੋ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"ਪਹਿਲਾ ਨਾਮ"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"ਆਖਰੀ ਨਾਮ"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"ਨਾਮ ਦੀ ਵੰਨਗੀ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ਪਹਿਲਾਂ ਪਹਿਲਾ ਨਾਮ"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"ਪਹਿਲਾਂ ਆਖਰੀ ਨਾਮ"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"ਖਾਤੇ"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"ਨਵੇਂ ਸੰਪਰਕਾਂ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਖਾਤਾ"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"ਸੰਪਰਕ ਮੈਟਾਡੈਟੇ ਨੂੰ ਸਮਕਾਲੀ ਕਰੋ [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"ਸੰਪਰਕ ਮੈਟਾਡੈਟੇ ਨੂੰ ਸਮਕਾਲੀ ਕਰੋ"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ਮੇਰੀ ਜਾਣਕਾਰੀ"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"ਆਪਣੀ ਪ੍ਰੋਫਾਈਲ ਸਥਾਪਤ ਕਰੋ"</string>
+    <string name="setting_about" msgid="3926137653588942297">"ਸੰਪਰਕਾਂ ਬਾਰੇ"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ਸੈਟਿੰਗਾਂ"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"ਦਿਖਣਯੋਗ ਸੰਪਰਕ ਸਾਂਝੇ ਕਰੋ"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"ਦ੍ਰਿਸ਼ਮਾਨ ਸੰਪਰਕ ਸ਼ੇਅਰ ਕਰਨ ਵਿੱਚ ਅਸਫਲ।"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ਮਨਪਸੰਦ ਸੰਪਰਕਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰੋ"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"ਸਾਰੇ ਸੰਪਰਕ ਸਾਂਝੇ ਕਰੋ"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"ਸੰਪਰਕ ਸਾਂਝੇ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"ਸੰਪਰਕ ਆਯਾਤ/ਨਿਰਯਾਤ ਕਰੋ"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"ਸੰਪਰਕ ਆਯਾਤ ਕਰੋ"</string>
+    <string name="share_error" msgid="665756457151793108">"ਇਸ ਸੰਪਰਕ ਸ਼ੇਅਰ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"ਸ਼ੇਅਰ ਕਰਨ ਲਈ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ।"</string>
+    <string name="menu_search" msgid="7464453023659824700">"ਖੋਜੋ"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਸੰਪਰਕ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਸੰਪਰਕ"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਕੀਤੇ ਦ੍ਰਿਸ਼ ਨੂੰ ਪ੍ਰਭਾਸ਼ਿਤ ਕਰੋ"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"ਰੱਖਿਅਤ ਕਰੋ"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"ਸੰਪਰਕ ਖੋਜੋ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"ਮਨਪਸੰਦ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ।"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"ਫ੍ਰੀਕਵੈਂਟਸ ਹਟਾਓ"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM ਕਾਰਡ ਚੁਣੋ"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"ਖਾਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰੋ"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ਆਯਾਤ/ਨਿਰਯਾਤ ਕਰੋ"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰ"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> ਰਾਹੀਂ"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> ਰਾਹੀਂ <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ਖੋਜ ਕਰਨਾ ਬੰਦ ਕਰੋ"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ਖੋਜ ਹਟਾਓ"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"ਸੰਪਰਕ ਡਿਸਪਲੇ ਚੋਣਾਂ"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"ਖਾਤਾ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ਕਾਲਾਂ ਲਈ ਹਮੇਸ਼ਾਂ ਇਹ ਵਰਤੋ"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"ਇਸਦੇ ਨਾਲ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ਕੋਈ ਨੋਟ ਦੇ ਨਾਲ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"ਕਾਲ ਦੇ ਨਾਲ ਭੇਜਣ ਲਈ ਕੋਈ ਨੋਟ ਟਾਈਪ ਕਰੋ ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ਭੇਜੋ ਅਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>। <xliff:g id="COUNT_3">%2$d</xliff:g> ਬਿਨਾਂ ਪੜ੍ਹੀਆਂ ਆਈਟਮਾਂ। </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>। <xliff:g id="COUNT_3">%2$d</xliff:g> ਬਿਨਾਂ ਪੜ੍ਹੀਆਂ ਆਈਟਮਾਂ। </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"ਨਿਰਮਾਣ ਸਰੂਪ"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ਖੁੱਲ੍ਹਾ ਸ੍ਰੋਤ ਲਾਇਸੰਸ"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ਖੁੱਲ੍ਹਾ ਸ੍ਰੋਤ ਸਾਫਟਵੇਅਰ ਲਈ ਲਾਇਸੰਸ ਵੇਰਵੇ"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"ਪਰਦੇਦਾਰੀ ਨੀਤੀ"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"ਸੇਵਾ ਦੀਆਂ ਮਦਾਂ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ਖੁੱਲ੍ਹਾ ਸ੍ਰੋਤ ਲਾਇਸੰਸ"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਫਲ।"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ਜਾਂਚੀ ਗਈ"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ਜਾਂਚੀ ਨਹੀਂ ਗਈ"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ਵੀਡੀਓ ਕਾਲ ਕਰੋ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ਮਿਟਾਓ"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"ਪਦ-ਲੋਪ ਚਿੰਨ੍ਹ"</string>
+</resources>
diff --git a/res-common/values-pl-sw600dp/strings.xml b/res-common/values-pl-sw600dp/strings.xml
new file mode 100644
index 0000000..5774eda
--- /dev/null
+++ b/res-common/values-pl-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Urządzenie"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Brak kontaktów do eksportu. Jeśli masz na tablecie kontakty, być może niektórzy dostawcy danych nie zezwalają na ich eksport z tabletu."</string>
+</resources>
diff --git a/res-common/values-pl/strings.xml b/res-common/values-pl/strings.xml
new file mode 100644
index 0000000..774dacb
--- /dev/null
+++ b/res-common/values-pl/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Tekst skopiowany"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Skopiuj do schowka"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Połącz – <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Połącz – domowy"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Połącz – komórka"</string>
+    <string name="call_work" msgid="8299062439076337075">"Połącz – służbowy"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Połącz – faks służbowy"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Połącz – faks domowy"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Połącz – pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Zadzwoń"</string>
+    <string name="call_callback" msgid="687494744634190411">"Połącz – numer zwrotny"</string>
+    <string name="call_car" msgid="9078083109758282133">"Połącz – samochód"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Połącz – firmowy główny"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Połącz – ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Połącz – numer główny"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Połącz – faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Połącz – radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Połącz – teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Połącz – TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Połącz – służbowa komórka"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Połącz – służbowy pager"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Połącz – <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Połącz – MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (zadzwoń)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS – <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS – domowy"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS – komórka"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS – służbowy"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS – faks służbowy"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS – faks domowy"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS – pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS – numer zwrotny"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS – samochód"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS – firmowy główny"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS – ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS – główny"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS – faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS – radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS – teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS – TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS – służbowa komórka"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS – służbowy pager"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS – <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS – MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (wyślij wiadomość)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Rozmowa wideo"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Wyczyścić częste kontakty?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Wyczyścisz listę częstych kontaktów w aplikacjach Kontakty i Telefon. Aplikacje pocztowe będą musiały od nowa poznać Twoje preferencje adresowe."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Czyszczę częste kontakty…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Dostępny"</string>
+    <string name="status_away" msgid="6267905184545881094">"Nieobecny"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Zajęty"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakty"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Inne"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Katalog"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Katalog służbowy"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Wszystkie kontakty"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Szukam…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Znaleziono więcej niż <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Brak kontaktów"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="few">Znaleziono <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="many">Znaleziono <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Znaleziono <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Znaleziono 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Szybki kontakt dla: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Bez nazwy)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Częste kontakty"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Pokaż kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Wszystkie kontakty z numerami telefonów"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontakty w profilu służbowym"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Pokaż aktualizacje"</string>
+    <string name="account_phone" msgid="325867897209266837">"Urządzenie"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Imię i nazwisko"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Pseudonim"</string>
+    <string name="full_name" msgid="885420216812981202">"Imię i nazwisko"</string>
+    <string name="name_given" msgid="4153709115654909377">"Imię"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nazwisko"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Tytuł przed nazwiskiem"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Drugie imię"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Tytuł po nazwisku"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nazwisko fonetycznie"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Imię fonetycznie"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Drugie imię fonetycznie"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Nazwisko fonetycznie"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adres"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Komunikator"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizacja"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relacja"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Szczególna data"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adres"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Firma"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Tytuł"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Uwagi"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"Adres SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Witryna"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etykiety"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-mail – dom"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-mail – komórka"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-mail – praca"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-mail – <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulica"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Skrytka pocztowa"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Dzielnica"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Miasto"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Stan"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Kod pocztowy"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Kraj"</string>
+    <string name="map_home" msgid="1221397355014741634">"Pokaż adres domowy"</string>
+    <string name="map_work" msgid="9015981646907637207">"Pokaż adres służbowy"</string>
+    <string name="map_other" msgid="55098598855607997">"Pokaż adres"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Pokaż adres: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Czat w AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Czat w Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Czat w Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Czat w Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Czat w QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Czat w Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Czat w ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Czat w Jabberze"</string>
+    <string name="chat" msgid="6297650784873558837">"Czat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"usuń"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Rozwiń lub zwiń pola imion i nazwisk"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Rozwiń lub zwiń pola nazwisk zapisanych fonetycznie"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Wszystkie kontakty"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Oznaczone gwiazdką"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Zdefiniuj filtr"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Wszystkie inne kontakty"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Wszystkie kontakty"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Usuń grupę synchronizacji"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Dodaj grupę synchronizacji"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Więcej grup…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Usunięcie grupy „<xliff:g id="GROUP">%s</xliff:g>” z ustawień synchronizacji spowoduje też usunięcie wszelkich rozgrupowanych kontaktów z tych ustawień."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Zapisuję opcje wyświetlania…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Gotowe"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Anuluj"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Widok niestandardowy"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Zapisz zaimportowane kontakty na koncie:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importuj z karty SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importuj z karty SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importuj z karty SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importuj z pliku .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Anulować importowanie pliku <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Anulować eksportowanie pliku <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Nie można anulować importu/eksportu vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Nieznany błąd."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nie udało się otworzyć pliku „<xliff:g id="FILE_NAME">%s</xliff:g>”: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nie udało się uruchomić programu eksportującego: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Brak kontaktów, które można wyeksportować."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Wyłączyłeś wymagane uprawnienia"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Podczas eksportu wystąpił błąd: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Wymagana nazwa pliku jest zbyt długa („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Błąd wejścia/wyjścia"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Za mało pamięci. Plik może być zbyt duży."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Nie można przeanalizować pliku vCard z nieoczekiwanego powodu."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Format nie jest obsługiwany."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nie można zebrać metainformacji z podanych plików vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Nie można zaimportować co najmniej jednego pliku (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Zakończono eksportowanie pliku <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Eksportowanie kontaktów zostało zakończone."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontakty zostały wyeksportowane. Aby je udostępnić, kliknij powiadomienie."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Kliknij, by udostępnić kontakty."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Anulowano eksportowanie pliku <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Eksportowanie danych kontaktowych"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Dane kontaktów są eksportowane."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nie udało się pobrać informacji z bazy danych."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Brak kontaktów do eksportu. Jeśli masz w telefonie kontakty, być może dostawcy danych nie zezwalają na ich eksport z telefonu."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Obiekt tworzenia danych vCard nie uruchomił się poprawnie."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Eksport nieudany"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Dane kontaktów nie zostały wyeksportowane.\nPrzyczyna: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importowanie: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nie udało się odczytać danych vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Anulowano odczyt danych kart vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Zakończono importowanie pliku vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Anulowano importowanie pliku <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Plik <xliff:g id="FILENAME">%s</xliff:g> zostanie za chwilę zaimportowany."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Plik zostanie za chwilę zaimportowany."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Żądanie importu danych vCard zostało odrzucone. Spróbuj ponownie później."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Plik <xliff:g id="FILENAME">%s</xliff:g> zostanie za chwilę wyeksportowany."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Plik zostanie za chwilę wyeksportowany."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Wkrótce kontakty zostaną wyeksportowane."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Żądanie eksportu danych vCard zostało odrzucone. Spróbuj ponownie później."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Trwa buforowanie plików vCard w lokalnym obszarze tymczasowym. Właściwy import rozpocznie się za chwilę."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Nie udało się zaimportować pliku vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt odebrany przez NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Wyeksportować kontakty?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Buforowanie"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importuję <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksportuj do pliku .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortuj według"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Imię"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nazwisko"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format imienia i nazwiska"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Najpierw imię"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Najpierw nazwisko"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Konta"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Domyślne konto dla nowych kontaktów"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synchronizuj metadane kontaktów [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synchronizuj metadane kontaktów"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"O mnie"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Wypełnij swój profil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Aplikacja Kontakty"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Ustawienia"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Udostępnij widoczne kontakty"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nie udało się udostępnić widocznych kontaktów."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Udostępnij ulubione kontakty"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Udostępnij wszystkie kontakty"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Nie udało się udostępnić kontaktów."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importuj/eksportuj kontakty"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importuj kontakty"</string>
+    <string name="share_error" msgid="665756457151793108">"Tego kontaktu nie można udostępnić."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Brak kontaktów do udostępnienia."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Wyszukiwarka"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakty do wyświetlenia"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakty do wyświetlenia"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Zdefiniuj widok niestandardowy"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Zapisz"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Szukaj kontaktów"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Ulubione"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Brak kontaktów"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Wyczyść częste kontakty"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Wybierz kartę SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Zarządzaj kontami"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importuj/eksportuj"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Zablokowane numery"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"przez: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> przez: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"zatrzymaj wyszukiwanie"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Wyczyść wyszukiwanie"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opcje wyświetlania kontaktów"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konto"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Zawsze używaj do połączeń"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Zadzwoń, używając"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Połącz i wyślij notatkę"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Wpisz notatkę, którą chcesz wysłać razem z połączeniem..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"WYŚLIJ I POŁĄCZ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nieprzeczytane elementy. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nieprzeczytanych elementów. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nieprzeczytanego elementu. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> nieprzeczytany element. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Wersja kompilacji"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licencje open source"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Szczegóły licencji na oprogramowanie typu open source"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Polityka prywatności"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Warunki usługi"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licencje open source"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Nie udało się otworzyć URL-a."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> zaznaczone"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> niezaznaczone"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Rozpocznij rozmowę wideo"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Usuń"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Wielokropek"</string>
+</resources>
diff --git a/res-common/values-pt-rBR-sw600dp/strings.xml b/res-common/values-pt-rBR-sw600dp/strings.xml
new file mode 100644
index 0000000..c49c42f
--- /dev/null
+++ b/res-common/values-pt-rBR-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Não há contatos exportáveis. Se você tem contatos no seu tablet, alguns provedores de dados podem não permitir que os contatos sejam exportados a partir do tablet."</string>
+</resources>
diff --git a/res-common/values-pt-rBR/strings.xml b/res-common/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..f38c178
--- /dev/null
+++ b/res-common/values-pt-rBR/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texto copiado"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiar para a área de transferência"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Ligar para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Ligar para residência"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Ligar para celular"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ligar para trabalho"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ligar para fax comercial"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ligar para fax residencial"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Ligar para pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Ligar"</string>
+    <string name="call_callback" msgid="687494744634190411">"Retornar chamada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Ligar para carro"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Ligar para empresa (principal)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Ligar para ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Ligar para principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Ligar para fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Ligar para rádio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Ligar para telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Ligar para TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ligar para celular comercial"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ligar para pager comercial"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Ligar para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Ligar para MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (chamada)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Enviar SMS para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Enviar SMS para residência"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Enviar SMS para celular"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Enviar SMS para trabalho"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Enviar SMS para fax comercial"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Enviar SMS para fax residencial"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Enviar SMS para pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Enviar SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Enviar SMS para retorno de chamada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Enviar SMS para carro"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Enviar SMS para empresa (principal)"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Enviar SMS para ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Enviar SMS para principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Enviar SMS para fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Enviar SMS para rádio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Enviar SMS para telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Enviar SMS para TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Enviar SMS para celular comercial"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Enviar SMS para pager comercial"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Enviar SMS para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Enviar SMS para MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (mensagem)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Fazer videochamada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Apagar contatos frequentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Você apagará a lista de contatos frequentes nos apps Contatos e Telefone, fazendo com que os apps de e-mail tenham que redefinir suas preferências de endereçamento."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Apagando contatos frequentes…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponível"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ausente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupado"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contatos"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Outro"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Diretório"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Diretório de trabalho"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Todos os contatos"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Pesquisando…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Mais de <xliff:g id="COUNT">%d</xliff:g> encontrados."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nenhum contato"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> encontrados</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> encontrados</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contato rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sem nome)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contatos frequentes"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Visualizar contato"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Todos os contatos com números de telefone"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contatos do perfil de trabalho"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ver atualizações"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nome"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Apelido"</string>
+    <string name="full_name" msgid="885420216812981202">"Nome"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nome"</string>
+    <string name="name_family" msgid="5317387657540738981">"Sobrenome"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefixo do nome"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Nome do meio"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufixo do nome"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nome fonético"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nome fonético"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Nome do meio fonético"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Sobrenome fonético"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Endereço"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organização"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relacionamento"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data especial"</string>
+    <string name="sms" msgid="8086289395154598654">"Enviar SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Endereço"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Título"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Marcadores"</string>
+    <string name="email_home" msgid="2230967805906450693">"Enviar e-mail para residencial"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Enviar e-mail para celular"</string>
+    <string name="email_work" msgid="7065971921227432400">"Enviar e-mail para comercial"</string>
+    <string name="email_other" msgid="4601881243553289615">"Enviar e-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Enviar e-mail para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Enviar e-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rua"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Caixa postal"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Bairro"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Cidade"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"CEP"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ver endereço residencial"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ver endereço comercial"</string>
+    <string name="map_other" msgid="55098598855607997">"Ver endereço"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ver endereço de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Bater papo usando o AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Bater papo usando o Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Bater papo usando o Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Bater papo usando o Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Bater papo usando o QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Bater papo usando o Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Bater papo usando o ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Bater papo usando o Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Bater papo"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"excluir"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expandir ou recolher campos de nome"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expandir ou recolher campos de nome fonético"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Todos os contatos"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Com estrela"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizar"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contato"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Todos os outros contatos"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Todos os contatos"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Remover sincronização do grupo"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Adicionar grupo de sincronização"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Mais grupos…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"A remoção de \"<xliff:g id="GROUP">%s</xliff:g>\" da sincronização também removerá os contatos não agrupados da sincronização."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Salvando opções de exibição…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Concluído"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancelar"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Visualização personalizada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Salvar contatos importados em:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importar do cartão SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importar do SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importar do SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importar de arquivo .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancelar a importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancelar a exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Impossível cancelar imp./export. vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Erro desconhecido."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Não foi possível iniciar o exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Não há contato exportável."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Você desativou uma permissão obrigatória."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Ocorreu um erro ao exportar: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"O nome de arquivo exigido é muito longo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Erro E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Não há memória suficiente. O arquivo pode ser muito grande."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Não foi possível analisar o vCard por um motivo inesperado."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"O formato não é suportado."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Não foi possível coletar informações meta de determinados arquivos vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Um ou mais arquivos não puderam ser importados (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportação de <xliff:g id="FILENAME">%s</xliff:g> concluída."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"A exportação de contatos foi concluída."</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exportação de <xliff:g id="FILENAME">%s</xliff:g> cancelada."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportando dados do contato"</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Não foi possível obter as informações do banco de dados."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Não há contatos exportáveis. Se você tiver contatos em seu telefone, alguns provedores de dados podem não permitir que os contatos sejam exportados a partir do telefone."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"O criador do vCard não iniciou corretamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Impossível exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Os dados de contato não foram exportados.\nMotivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Não foi possível ler os dados do vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Leitura dos dados do vCard cancelada"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importação do vCard <xliff:g id="FILENAME">%s</xliff:g> concluída"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importação do vCard <xliff:g id="FILENAME">%s</xliff:g> cancelada"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> será importado em breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"O arquivo será importado em breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"O pedido de importação do vCard foi rejeitado. Tente novamente mais tarde."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> será exportado em breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"O arquivo será exportado em breve."</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"O pedido de exportação do vCard foi rejeitado. Tente novamente mais tarde."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contato"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Armazenando VCards em cache no armazenamento temporário local. A importação real começará em breve."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Não foi possível importar o vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contato via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportar contatos?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Armazenando em cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportar p/ arquivo .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Classificar por"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nome"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Sobrenome"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato de nome"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Primeiro o nome"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Primeiro o sobrenome"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Contas"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Conta padrão para novos contatos"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizar metadados de contatos [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizar metadados de contatos"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Minhas informações"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurar seu perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Sobre Contatos"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Config."</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Compartilhar contatos visíveis"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Falha ao compartilhar contatos visíveis."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Compartilhar contatos favoritos"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Compartilhar todos os contatos"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Falha ao compartilhar contatos."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importar/exportar contatos"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importar contatos"</string>
+    <string name="share_error" msgid="665756457151793108">"Este contato não pode ser compartilhado."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Não há contatos para compartilhar."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Pesquisar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contatos para exibição"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contatos para exibição"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definir visualização personalizada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Salvar"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Pesquisar contatos"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritos"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nenhum contato."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Apagar frequentes"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Selecionar cartão SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gerenciar contas"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importar/exportar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloqueados"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"parar de pesquisar"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Limpar pesquisa"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opções de exibição de contato"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Conta"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Sempre usar esta opção para chamadas"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ligar com"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Chamada com uma nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escreva uma nota para enviar com a chamada..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIAR E LIGAR"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> itens não lidos. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> itens não lidos. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versão"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licenças de código aberto"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalhes de licença do software de código aberto"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de Privacidade"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Termos de Serviço"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licenças de código aberto"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Falha ao abrir o URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> verificado"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> não verificado"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Realizar videochamada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Excluir"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Reticências"</string>
+</resources>
diff --git a/res-common/values-pt-rPT-sw600dp/strings.xml b/res-common/values-pt-rPT-sw600dp/strings.xml
new file mode 100644
index 0000000..8ef93d0
--- /dev/null
+++ b/res-common/values-pt-rPT-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Não existem contactos exportáveis. Se tem, efetivamente, contactos no tablet, alguns fornecedores de dados podem não permitir a exportação dos mesmos a partir do tablet."</string>
+</resources>
diff --git a/res-common/values-pt-rPT/strings.xml b/res-common/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..5ed9645
--- /dev/null
+++ b/res-common/values-pt-rPT/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texto copiado"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiar para a área de transferência"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Telefonar para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Telefonar para casa"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Telefonar para telemóvel"</string>
+    <string name="call_work" msgid="8299062439076337075">"Telefonar para o trabalho"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Telefonar para o faxe do trabalho"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Telefonar para o faxe de casa"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Telefonar para o pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Telefonar"</string>
+    <string name="call_callback" msgid="687494744634190411">"Telefonar para número de retorno de chamada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Telefonar para o telefone do carro"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Telefonar para o número geral da empresa"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Telefonar para um telefone ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Telefonar para o número geral"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Telefonar para o faxe"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Telefonar para um radiotelefone"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Telefonar para um telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Telefonar para um teletipo (TTY/TDD)"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Telefonar para o telemóvel do trabalho"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Telefonar para o pager do trabalho"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Telefonar para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Telefonar para um número MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Chamada)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Enviar mensagem de texto para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Enviar mensagem de texto para o telefone de casa"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Enviar mensagem de texto para telemóvel"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Enviar mensagem de texto para trabalho"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Enviar mensagem de texto para o faxe do trabalho"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Enviar mensagem de texto para o faxe de casa"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Enviar mensagem de texto para o pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Enviar mensagem de texto"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Enviar mensagem de texto para um número de retorno de chamada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Enviar mensagem de texto para o telefone do carro"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Enviar mensagem de texto para o número geral da empresa"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Enviar mensagem de texto para um telefone ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Enviar mensagem de texto para o número de telefone geral"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Enviar mensagem de texto para o faxe"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Enviar mensagem de texto para um radiotelefone"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Enviar mensagem de texto para o telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Enviar mensagem de texto para um teletipo (TTY/TDD)"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Enviar mensagem de texto para o telemóvel do trabalho"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Enviar mensagem de texto para o pager do trabalho"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Enviar mensagem de texto para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Enviar mensagem de texto para um número MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Mensagem)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Fazer videochamada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Limpar contactos frequentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Limpa a lista de contactos frequentes nas aplicações Contactos e Telemóvel e força as aplicações de email a aprenderem as suas preferências de endereço de raiz."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"A limpar contactos frequentes..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponível"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ausente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupado(a)"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contactos"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Outro"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Diretório"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Diretório de trabalho"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Todos os contactos"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"A pesquisar…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Foram encontrados mais de <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Sem contactos"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> encontrados</item>
+      <item quantity="one">1 encontrado</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contacto rápido para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sem nome)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contactados frequentemente"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Ver contacto"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Todos os contactos com números de telefone"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contactos do perfil de trabalho"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ver atualizações"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nome"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Pseudónimo"</string>
+    <string name="full_name" msgid="885420216812981202">"Nome"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nome próprio"</string>
+    <string name="name_family" msgid="5317387657540738981">"Apelido"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefixo do nome"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Primeiro apelido"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufixo do nome"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nome (fonética)"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nome próprio fonético"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Nome do meio fonético"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Apelido fonético"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Endereço"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Entidade"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Tipo de relação"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data especial"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Endereço"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Título"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiquetas"</string>
+    <string name="email_home" msgid="2230967805906450693">"Enviar email para residência"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Enviar email para dispositivo móvel"</string>
+    <string name="email_work" msgid="7065971921227432400">"Enviar email para emprego"</string>
+    <string name="email_other" msgid="4601881243553289615">"Enviar email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Enviar email a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Enviar email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rua"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Apartado"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Bairro"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Cidade"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Código postal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ver endereço da residência"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ver endereço do emprego"</string>
+    <string name="map_other" msgid="55098598855607997">"Ver endereço"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ver endereço de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chat através do AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chat através do Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chat através do Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chat através do Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chat através do QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chat através do Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chat através do ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chat através do Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"eliminar"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expandir ou reduzir campos dos nomes"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expandir ou reduzir campos de nomes fonéticos"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Todos os contactos"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Com estrela"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizar"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contacto"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Todos os outros contactos"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Todos os contactos"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Remover grupo de sincronização"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Adicionar grupo de sincronização"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Mais grupos..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Ao remover \"<xliff:g id="GROUP">%s</xliff:g>\" da sincronização, removerá também quaisquer contactos não agrupados."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"A guardar opções de visualização..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Concluído"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancelar"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Vista personalizada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Guardar contactos importados em:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importar do cartão SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importar do SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importar do SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importar de ficheiro .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancelar a importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancelar a exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Imposs. cancel. import./export. do vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Erro desconhecido."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Não foi possível iniciar o exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Não existe um contacto exportável."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Desativou uma autorização obrigatória."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Ocorreu um erro durante a exportação: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Nome de ficheiro demasiado longo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Erro de E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Memória insuficiente. O ficheiro pode ser demasiado grande."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Não foi possível analisar o vCard por um motivo inesperado."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"O formato não é suportado."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Não foi possível recolher meta informações de determinado(s) ficheiro(s) vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Não foi possível importar um ou mais ficheiros (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"A exportação de <xliff:g id="FILENAME">%s</xliff:g> terminou."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Exportação de contactos concluída."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Foi concluída a exportação dos contactos. Clique na notificação para partilhar contactos."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Toque para partilhar contactos."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"A exportação de <xliff:g id="FILENAME">%s</xliff:g> foi cancelada."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"A exportar dados do contacto"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Os dados de contactos estão a ser exportados."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Não foi possível obter informações da base de dados"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Não existem contactos exportáveis. Se tiver contactos no seu telemóvel, alguns fornecedores de dados podem não permitir a exportação dos contactos a partir do telemóvel."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"O compositor vCard não iniciou corretamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Impossível exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Os dados de contactos não foram exportados.\nMotivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"A importar <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Não foi possível ler dados do vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"A leitura de dados vCard foi cancelada"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"A importação do vCard terminou <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"A importação de <xliff:g id="FILENAME">%s</xliff:g> foi cancelada"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> será importado em breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"O ficheiro será importado em breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"O pedido de importação do vCard foi rejeitado. Tente novamente mais tarde."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"O <xliff:g id="FILENAME">%s</xliff:g> será exportado em breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"O ficheiro é exportado em breve."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Os contactos serão exportados brevemente."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"O pedido de exportação do vCard foi rejeitado. Tente novamente mais tarde."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contacto"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"A colocar vCard(s) em cache no armazenamento temporário local. A importação efetiva começará brevemente."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Não foi possível importar o vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contacto recebido através de NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportar contactos?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"A colocar em cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"A importar <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportar p/ ficheiro .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Ordenar por"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nome próprio"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Apelido"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato do nome"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Nome próprio em primeiro lugar"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Apelido em primeiro lugar"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Contas"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Conta predefinida para novos contactos"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizar metadados de contactos [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizar metadados de contactos"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"As minhas informações"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurar o seu perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Acerca do Contactos"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Definições"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Partilhar contactos visíveis"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Falha ao partilhar os contactos visíveis."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Partilhar contactos favoritos"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Partilhar todos os contactos"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Falha ao partilhar os contactos."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importar/exportar contactos"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importar contactos"</string>
+    <string name="share_error" msgid="665756457151793108">"Não é possível partilhar este contacto."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Não existem contactos para partilhar."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Pesquisar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contactos a apresentar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contactos a apresentar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definir vista personalizada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Guardar"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Pesquisar contactos"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritos"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Sem contactos."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Limpar frequentes"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Selecionar cartão SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gerir contas"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importar/exportar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloqueados"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"através do <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> através do <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"parar de pesquisar"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Limpar pesquisa"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opções de visualização de contactos"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Conta"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Utilizar sempre este para chamadas"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ao telefone com"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Ligar com uma nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escrever uma nota para enviar com a chamada..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIAR E LIGAR"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> itens não lidos. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> item não lido. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versão da compilação"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licenças de código aberto"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalhes da licença para software de código aberto"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de Privacidade"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Termos de Utilização"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licenças de código aberto"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Falha ao abrir o URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> verificado"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> não verificado"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Efetuar videochamada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Eliminar"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Reticências"</string>
+</resources>
diff --git a/res-common/values-pt-sw600dp/strings.xml b/res-common/values-pt-sw600dp/strings.xml
new file mode 100644
index 0000000..c49c42f
--- /dev/null
+++ b/res-common/values-pt-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispositivo"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Não há contatos exportáveis. Se você tem contatos no seu tablet, alguns provedores de dados podem não permitir que os contatos sejam exportados a partir do tablet."</string>
+</resources>
diff --git a/res-common/values-pt/strings.xml b/res-common/values-pt/strings.xml
new file mode 100644
index 0000000..f38c178
--- /dev/null
+++ b/res-common/values-pt/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texto copiado"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiar para a área de transferência"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Ligar para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Ligar para residência"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Ligar para celular"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ligar para trabalho"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ligar para fax comercial"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ligar para fax residencial"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Ligar para pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Ligar"</string>
+    <string name="call_callback" msgid="687494744634190411">"Retornar chamada"</string>
+    <string name="call_car" msgid="9078083109758282133">"Ligar para carro"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Ligar para empresa (principal)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Ligar para ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Ligar para principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Ligar para fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Ligar para rádio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Ligar para telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Ligar para TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ligar para celular comercial"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ligar para pager comercial"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Ligar para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Ligar para MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (chamada)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Enviar SMS para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Enviar SMS para residência"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Enviar SMS para celular"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Enviar SMS para trabalho"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Enviar SMS para fax comercial"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Enviar SMS para fax residencial"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Enviar SMS para pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Enviar SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Enviar SMS para retorno de chamada"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Enviar SMS para carro"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Enviar SMS para empresa (principal)"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Enviar SMS para ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Enviar SMS para principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Enviar SMS para fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Enviar SMS para rádio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Enviar SMS para telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Enviar SMS para TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Enviar SMS para celular comercial"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Enviar SMS para pager comercial"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Enviar SMS para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Enviar SMS para MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (mensagem)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Fazer videochamada"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Apagar contatos frequentes?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Você apagará a lista de contatos frequentes nos apps Contatos e Telefone, fazendo com que os apps de e-mail tenham que redefinir suas preferências de endereçamento."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Apagando contatos frequentes…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponível"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ausente"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupado"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Contatos"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Outro"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Diretório"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Diretório de trabalho"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Todos os contatos"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Pesquisando…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Mais de <xliff:g id="COUNT">%d</xliff:g> encontrados."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nenhum contato"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> encontrados</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> encontrados</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contato rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Sem nome)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contatos frequentes"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Visualizar contato"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Todos os contatos com números de telefone"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Contatos do perfil de trabalho"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ver atualizações"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispositivo"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nome"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Apelido"</string>
+    <string name="full_name" msgid="885420216812981202">"Nome"</string>
+    <string name="name_given" msgid="4153709115654909377">"Nome"</string>
+    <string name="name_family" msgid="5317387657540738981">"Sobrenome"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefixo do nome"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Nome do meio"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufixo do nome"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nome fonético"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Nome fonético"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Nome do meio fonético"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Sobrenome fonético"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefone"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Endereço"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organização"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relacionamento"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data especial"</string>
+    <string name="sms" msgid="8086289395154598654">"Enviar SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Endereço"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Empresa"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Título"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notas"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Marcadores"</string>
+    <string name="email_home" msgid="2230967805906450693">"Enviar e-mail para residencial"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Enviar e-mail para celular"</string>
+    <string name="email_work" msgid="7065971921227432400">"Enviar e-mail para comercial"</string>
+    <string name="email_other" msgid="4601881243553289615">"Enviar e-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Enviar e-mail para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Enviar e-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rua"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Caixa postal"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Bairro"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Cidade"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"CEP"</string>
+    <string name="postal_country" msgid="3988452247038791892">"País"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ver endereço residencial"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ver endereço comercial"</string>
+    <string name="map_other" msgid="55098598855607997">"Ver endereço"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Ver endereço de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Bater papo usando o AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Bater papo usando o Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Bater papo usando o Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Bater papo usando o Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Bater papo usando o QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Bater papo usando o Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Bater papo usando o ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Bater papo usando o Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Bater papo"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"excluir"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expandir ou recolher campos de nome"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expandir ou recolher campos de nome fonético"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Todos os contatos"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Com estrela"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizar"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contato"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Todos os outros contatos"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Todos os contatos"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Remover sincronização do grupo"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Adicionar grupo de sincronização"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Mais grupos…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"A remoção de \"<xliff:g id="GROUP">%s</xliff:g>\" da sincronização também removerá os contatos não agrupados da sincronização."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Salvando opções de exibição…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Concluído"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Cancelar"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Visualização personalizada"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Salvar contatos importados em:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importar do cartão SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importar do SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importar do SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importar de arquivo .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Cancelar a importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Cancelar a exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Impossível cancelar imp./export. vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Erro desconhecido."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Não foi possível iniciar o exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Não há contato exportável."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Você desativou uma permissão obrigatória."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Ocorreu um erro ao exportar: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"O nome de arquivo exigido é muito longo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Erro E/S"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Não há memória suficiente. O arquivo pode ser muito grande."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Não foi possível analisar o vCard por um motivo inesperado."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"O formato não é suportado."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Não foi possível coletar informações meta de determinados arquivos vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Um ou mais arquivos não puderam ser importados (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportação de <xliff:g id="FILENAME">%s</xliff:g> concluída."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"A exportação de contatos foi concluída."</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exportação de <xliff:g id="FILENAME">%s</xliff:g> cancelada."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Exportando dados do contato"</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Não foi possível obter as informações do banco de dados."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Não há contatos exportáveis. Se você tiver contatos em seu telefone, alguns provedores de dados podem não permitir que os contatos sejam exportados a partir do telefone."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"O criador do vCard não iniciou corretamente."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Impossível exportar"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Os dados de contato não foram exportados.\nMotivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Não foi possível ler os dados do vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Leitura dos dados do vCard cancelada"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importação do vCard <xliff:g id="FILENAME">%s</xliff:g> concluída"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importação do vCard <xliff:g id="FILENAME">%s</xliff:g> cancelada"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> será importado em breve."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"O arquivo será importado em breve."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"O pedido de importação do vCard foi rejeitado. Tente novamente mais tarde."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> será exportado em breve."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"O arquivo será exportado em breve."</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"O pedido de exportação do vCard foi rejeitado. Tente novamente mais tarde."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contato"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Armazenando VCards em cache no armazenamento temporário local. A importação real começará em breve."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Não foi possível importar o vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Contato via NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportar contatos?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Armazenando em cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportar p/ arquivo .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Classificar por"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Nome"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Sobrenome"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formato de nome"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Primeiro o nome"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Primeiro o sobrenome"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Contas"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Conta padrão para novos contatos"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizar metadados de contatos [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizar metadados de contatos"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Minhas informações"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurar seu perfil"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Sobre Contatos"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Config."</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Compartilhar contatos visíveis"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Falha ao compartilhar contatos visíveis."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Compartilhar contatos favoritos"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Compartilhar todos os contatos"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Falha ao compartilhar contatos."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importar/exportar contatos"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importar contatos"</string>
+    <string name="share_error" msgid="665756457151793108">"Este contato não pode ser compartilhado."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Não há contatos para compartilhar."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Pesquisar"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Contatos para exibição"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Contatos para exibição"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definir visualização personalizada"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Salvar"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Pesquisar contatos"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoritos"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nenhum contato."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Apagar frequentes"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Selecionar cartão SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gerenciar contas"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importar/exportar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Números bloqueados"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"parar de pesquisar"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Limpar pesquisa"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opções de exibição de contato"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Conta"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Sempre usar esta opção para chamadas"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ligar com"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Chamada com uma nota"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Escreva uma nota para enviar com a chamada..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ENVIAR E LIGAR"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> itens não lidos. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> itens não lidos. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versão"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licenças de código aberto"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalhes de licença do software de código aberto"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Política de Privacidade"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Termos de Serviço"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licenças de código aberto"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Falha ao abrir o URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> verificado"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> não verificado"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Realizar videochamada"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Excluir"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Reticências"</string>
+</resources>
diff --git a/res-common/values-ro-sw600dp/strings.xml b/res-common/values-ro-sw600dp/strings.xml
new file mode 100644
index 0000000..3bf84e0
--- /dev/null
+++ b/res-common/values-ro-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Dispozitiv"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nu există persoane de contact care să poată fi exportate. Dacă aveți persoane de contact pe tabletă, este posibil ca exportul acestora de pe tabletă să fie interzis de unii furnizori de date."</string>
+</resources>
diff --git a/res-common/values-ro/strings.xml b/res-common/values-ro/strings.xml
new file mode 100644
index 0000000..fd7258a
--- /dev/null
+++ b/res-common/values-ro/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text copiat"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Copiați în clipboard"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Apelați <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Apelați numărul de domiciliu"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Apelați numărul de mobil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Apelați numărul de serviciu"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Apelați numărul de fax de serviciu"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Apelați numărul de fax de domiciliu"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Apelați numărul de pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Apelați"</string>
+    <string name="call_callback" msgid="687494744634190411">"Apelați un număr cu apelare inversă"</string>
+    <string name="call_car" msgid="9078083109758282133">"Apelați numărul de mașină"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Apelați numărul principal al companiei"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Apelați ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Apelați numărul principal"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Apelați numărul de fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Apelați un număr radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Apelați un număr de telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Apelați TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Apelați numărul de mobil de la serviciu"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Apelați numărul de pager de serviciu"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Apelați <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Apelați MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (apelați)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Trimiteți un mesaj text către <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Trimiteți un mesaj text către telefonul de domiciliu"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Trimiteți un mesaj text către numărul de mobil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Trimiteți un mesaj text către numărul de serviciu"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Trimiteți un mesaj text către un număr de fax de serviciu"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Trimiteți un mesaj text către un număr de fax de domiciliu"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Trimiteți un mesaj text către un număr de pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Trimiteți un mesaj text"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Trimiteți un mesaj text către un număr cu apelare inversă"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Trimiteți un mesaj text către un număr de telefon de mașină"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Trimiteți un mesaj text către numărul principal al companiei"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Trimiteți un mesaj text către un număr ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Trimiteți un mesaj text către numărul principal"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Trimiteți un mesaj text către un număr de fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Trimiteți un mesaj text către un număr radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Trimiteți un mesaj text către un număr de telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Trimiteți un mesaj text către TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Trimiteți un mesaj text către numărul de mobil de serviciu"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Trimiteți un mesaj text către un număr de pager de serviciu"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Trimiteți un mesaj text către <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Trimiteți un mesaj text către un număr MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (trimiteți mesaj)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Inițiați un apel video"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Ștergeți pers. frecvent contactate?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Veți șterge lista persoanelor contactate frecvent din aplicațiile Agendă și Telefon și veți forța aplicațiile de e-mail să vă învețe preferințele pentru adrese de la zero."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Se șterg pers. frecvent contactate…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Disponibil(ă)"</string>
+    <string name="status_away" msgid="6267905184545881094">"Plecat(ă)"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ocupat(ă)"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Agendă"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Altele"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Director"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directorul de serviciu"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Toată Agenda"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Se caută…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"S-au găsit peste <xliff:g id="COUNT">%d</xliff:g> (de) persoane de contact."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nu există persoane de contact"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> găsite</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> găsite</item>
+      <item quantity="one">Una găsită</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Contact rapid pentru <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Fără nume)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Contactate frecvent"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Afișați persoana de contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Toate persoanele de contact cu numere de telefon"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Persoane de contact din profilul de serviciu"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Afișați actualizări"</string>
+    <string name="account_phone" msgid="325867897209266837">"Dispozitiv"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Nume"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Pseudonim"</string>
+    <string name="full_name" msgid="885420216812981202">"Nume"</string>
+    <string name="name_given" msgid="4153709115654909377">"Prenume"</string>
+    <string name="name_family" msgid="5317387657540738981">"Nume"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefixul numelui"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Al doilea prenume"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Sufixul numelui"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Nume fonetic"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Prenume fonetic"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Al doilea prenume fonetic"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Nume fonetic"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresă"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizație"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relație"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Dată specială"</string>
+    <string name="sms" msgid="8086289395154598654">"Mesaj text"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresă"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Companie"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titlu"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Note"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Site"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etichete"</string>
+    <string name="email_home" msgid="2230967805906450693">"Trimiteți un e-mail la o adresă de e-mail de domiciliu"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Trimiteți un e-mail către un telefon mobil"</string>
+    <string name="email_work" msgid="7065971921227432400">"Trimiteți un e-mail la o adresă de e-mail de serviciu"</string>
+    <string name="email_other" msgid="4601881243553289615">"Trimiteți un e-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Trimiteți un e-mail la <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Trimiteți un e-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Stradă"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Căsuță poștală"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Cartier"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Oraș"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Stat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Cod poștal"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Țară"</string>
+    <string name="map_home" msgid="1221397355014741634">"Vizualizați adresa de domiciliu"</string>
+    <string name="map_work" msgid="9015981646907637207">"Vizualizați adresa de serviciu"</string>
+    <string name="map_other" msgid="55098598855607997">"Vizualizați adresa poștală"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Vizualizați adresa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Conversați prin AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Conversați prin Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Conversați prin Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Conversați prin Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Conversați prin QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Conversați prin Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Conversați prin ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Conversați prin Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Conversați prin chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ștergeți"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Extindeți sau restrângeți câmpurile pentru nume"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Extindeți sau restrângeți câmpurile pentru nume fonetice"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Toată agenda"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Cu stea"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizați"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Persoana de contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Toate celelalte contacte"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Toată agenda"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Eliminați grup de sincronizare"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Adăugați grup de sincronizare"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Mai multe grupuri…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Eliminarea grupului „<xliff:g id="GROUP">%s</xliff:g>” din sincronizare va elimina, de asemenea, din sincronizare orice persoană de contact care nu face parte dintr-un grup."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Se salvează opțiunile de afișare…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Terminat"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Anulați"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Afișare personalizată"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Salvați persoanele de contact importate în:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importați de pe cardul SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importați de pe cardul SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importați de pe cardul SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importați din fișier .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Anulați importul fișierului <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Anulați exportul fișierului <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Anulare import/export vCard nereușită"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Eroare necunoscută."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Nu s-a putut deschide fișierul „<xliff:g id="FILE_NAME">%s</xliff:g>”: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nu s-a putut inițializa instrumentul de export: „<xliff:g id="EXACT_REASON">%s</xliff:g>”"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nu există persoane de contact care să poată fi exportate."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Ați dezactivat o permisiune necesară."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"A apărut o eroare în timpul exportului: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Numele de fișier solicitat este prea lung („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Eroare I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Memoria este insuficientă (probabil fișierul este prea mare)."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Nu s-au putut analiza datele de pe vCard dintr-un motiv neașteptat."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formatul nu este acceptat."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Nu s-au putut colecta metainformațiile pentru fișierele vCard indicate."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Unul sau mai multe fișiere nu s-au putut importa (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"S-a finalizat exportul fișierului <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Persoanele de contact au fost exportate."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"S-a încheiat exportul persoanelor de contact. Dați clic pe notificare pentru a trimite persoanele de contact."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Atingeți pentru a trimite persoanele de contact."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exportul fișierului <xliff:g id="FILENAME">%s</xliff:g> a fost anulat."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Se exportă datele persoanelor de contact"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Se exportă datele privind persoanele de contact."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nu s-au putut obține informații din baza de date."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nu există persoane de contact care să poată fi exportate. Dacă aveți persoane de contact pe telefon, este posibil ca exportul acestora de pe telefon să fie interzis de unii furnizori de date."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Editorul de vCard nu a pornit în mod corespunzător."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Nu s-a putut exporta"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Datele persoanelor de contact nu au fost exportate.\nMotivul: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Se importă <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nu s-au putut citi datele de pe vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Citirea datelor vCard a fost anulată"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"S-a finalizat importul fișierului vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importul <xliff:g id="FILENAME">%s</xliff:g> a fost anulat"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> va fi importat în curând."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fișierul va fi importat în curând."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Solicitarea de import a fișierului vCard a fost respinsă. Încercați din nou mai târziu."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> va fi exportat în curând."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fișierul va fi exportat în curând."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Persoanele de contact vor fi exportate în curând."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Solicitarea de export a fișierului vCard a fost respinsă. Încercați din nou mai târziu."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"persoană de contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Fișierele vCard se stochează în memoria cache într-un spațiu de stocare local temporar. Importul propriu-zis va începe în curând."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Nu s-a putut importa fișierul vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Persoană primită prin NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportați agenda?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Se stochează în cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Se importă <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportați ca fișier .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortați după"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Prenume"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Nume"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format pentru nume"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Întâi prenumele"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Întâi numele"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Conturi"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Contul prestabilit pentru persoanele de contact noi"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sincronizați metadatele pentru persoanele de contact [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sincronizați metadatele pentru persoanele de contact"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Informațiile mele"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Configurați profilul"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Despre Agendă"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Setări"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Distribuiți persoanele de contact vizibile"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Persoanele de contact vizibile nu au putut fi trimise."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Trimiteți persoanele de contact preferate"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Trimiteți toate persoanele de contact"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Persoanele de contact nu s-au trimis."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importați/exportați agenda"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importați agenda"</string>
+    <string name="share_error" msgid="665756457151793108">"Nu se poate permite accesul la această intrare."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nu există persoane de contact de trimis."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Căutați"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Agendă de afișat"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Agendă de afișat"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definiți afișarea personalizată"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Salvați"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Căutați în Agendă"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Preferate"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nicio persoană de contact."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Ștergeți contacte frecvente"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Selectați cardul SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Gestionați conturile"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importați/Exportați"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Numere blocate"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"prin <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> prin <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"nu mai căutați"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Ștergeți căutarea"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opțiuni de afișare pentru persoanele de contact"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Cont"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Utilizați mereu pentru apeluri"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Apelați cu"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Apelați împreună cu o notă"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Introduceți o notă ca să o trimiteți împreună cu apelul..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"TRIMITEȚI ȘI APELAȚI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> elemente necitite. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> de elemente necitite. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> element necitit. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versiunea"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licențe open source"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detalii privind licența pentru software-ul open source"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Politica de confidențialitate"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Termeni și condiții"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licențe open source"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Adresa URL nu a putut fi deschisă."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Contul <xliff:g id="ACCOUNT_INFO">%s</xliff:g> este selectat"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Contul <xliff:g id="ACCOUNT_INFO">%s</xliff:g> nu este selectat"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Efectuați un apel video"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Ștergeți"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Puncte de suspensie"</string>
+</resources>
diff --git a/res-common/values-ru-sw600dp/strings.xml b/res-common/values-ru-sw600dp/strings.xml
new file mode 100644
index 0000000..05c3a6e
--- /dev/null
+++ b/res-common/values-ru-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Устройство"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Нет контактов для экспорта. Возможно, поставщик услуг по передаче данных запретил экспортировать контакты с планшета."</string>
+</resources>
diff --git a/res-common/values-ru/strings.xml b/res-common/values-ru/strings.xml
new file mode 100644
index 0000000..4ff9f4b
--- /dev/null
+++ b/res-common/values-ru/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текст скопирован"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Копировать в буфер обмена"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Вызов:<xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Домашний"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Мобильный"</string>
+    <string name="call_work" msgid="8299062439076337075">"Рабочий"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Рабочий факс"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Домашний факс"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Пейджер"</string>
+    <string name="call_other" msgid="4472141328347894937">"Набор"</string>
+    <string name="call_callback" msgid="687494744634190411">"Обратный вызов"</string>
+    <string name="call_car" msgid="9078083109758282133">"Телефон в машине"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Телефон офиса"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Номер ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Основной телефон"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Факс"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Радиотелефон"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Телекс"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Телетайп"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Рабочий мобильный"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Рабочий пейджер"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Вызов: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Номер MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (вызов)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS: домашний"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS: мобильный"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS: рабочий"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS: рабочий факс"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS: домашний факс"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS: пейджер"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS: номер обратного вызова"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS: телефон в машине"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS: телефон офиса"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS: номер ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS: основной номер"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS: факс"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS: радиотелефон"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS: телекс"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS: телетайп"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS: рабочий мобильный"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS: рабочий пейджер"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS: номер MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Начать видеовстречу"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Очистить список популярных контактов?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Список популярных контактов в приложениях \"Контакты\" и \"Телефон\" будет очищен, а приложения электронной почты начнут запоминать адреса заново."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Подождите…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Доступен"</string>
+    <string name="status_away" msgid="6267905184545881094">"Отсутствует"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Не беспокоить"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Контакты"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Другое"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Каталог"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Каталог контактов из рабочего профиля"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Все контакты"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Поиск…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Найдено контактов: более <xliff:g id="COUNT">%d</xliff:g>"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ничего не найдено."</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Найден <xliff:g id="COUNT">%d</xliff:g> контакт</item>
+      <item quantity="few">Найдено <xliff:g id="COUNT">%d</xliff:g> контакта</item>
+      <item quantity="many">Найдено <xliff:g id="COUNT">%d</xliff:g> контактов</item>
+      <item quantity="other">Найдено <xliff:g id="COUNT">%d</xliff:g> контакта</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Быстрый вызов, контакт: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"Имя не указано"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Часто набираемые"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Показать сведения о контакте"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Контакты с номерами телефонов"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Контакты из рабочего профиля"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Просмотреть обновления"</string>
+    <string name="account_phone" msgid="325867897209266837">"Устройство"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Имя"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Псевдоним"</string>
+    <string name="full_name" msgid="885420216812981202">"Полное имя"</string>
+    <string name="name_given" msgid="4153709115654909377">"Имя"</string>
+    <string name="name_family" msgid="5317387657540738981">"Фамилия"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Префикс имени"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Отчество"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Суффикс имени"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Транскрипция имени"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Транскрипция имени"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Транскрипция отчества"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Транскрипция фамилии"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Эл. почта"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Адрес"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Чат"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Организация"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Связи"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Определенная дата"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Адрес"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Организация"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Должность"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Примечания"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Веб-сайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Ярлыки"</string>
+    <string name="email_home" msgid="2230967805906450693">"Написать на личный адрес"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Написать на мобильную эл. почту"</string>
+    <string name="email_work" msgid="7065971921227432400">"Написать на рабочий адрес"</string>
+    <string name="email_other" msgid="4601881243553289615">"Написать письмо"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Написать письмо (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="email" msgid="5624424151176351591">"Написать письмо"</string>
+    <string name="postal_street" msgid="881349814077356134">"Улица"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Абонентский ящик"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Район"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Город"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Регион"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Индекс"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Страна"</string>
+    <string name="map_home" msgid="1221397355014741634">"Посмотреть домашний адрес"</string>
+    <string name="map_work" msgid="9015981646907637207">"Посмотреть рабочий адрес"</string>
+    <string name="map_other" msgid="55098598855607997">"Посмотреть адрес"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Посмотреть адрес (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Чат через AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Чат через Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Чат через Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Чат через Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Чат через QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Чат через Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Чат через ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Чат через Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Чат"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"удалить"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Показать/скрыть дополнительные поля"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Показать или скрыть поля с транскрипцией имени"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Все контакты"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Помеченные"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Настроить"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Выбранный контакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Остальные контакты"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Все контакты"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Удалить группу синхронизации"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Добавить группу синхронизации"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Другие группы"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Исключение из синхронизации группы \"<xliff:g id="GROUP">%s</xliff:g>\" приведет к исключению из синхронизации всех контактов, не относящихся к какой-либо группе."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Сохранение параметров…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Готово"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Отмена"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Пользовательский режим просмотра"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Куда сохранить контакты?"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Импорт с SIM-карты"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Импорт с SIM-карты <xliff:g id="SIM_NAME">^1</xliff:g> (<xliff:g id="SIM_NUMBER">^2</xliff:g>)"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Импорт с SIM-карты <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Импорт из файла VCF"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Отменить импорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Отменить экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Не удалось отменить импорт/экспорт vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Неизвестная ошибка."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Не удалось открыть файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\". <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Не удалось запустить инструмент экспорта. <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Нет контактов для экспорта."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Отсутствует необходимое разрешение."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Произошла ошибка экспорта. <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Слишком длинное название файла (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Ошибка ввода-вывода"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Недостаточно памяти. Возможно, файл слишком большой."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Не удалось выполнить синтаксический анализ файла vCard."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Формат не поддерживается."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Не удалось собрать метаданные файлов vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Не удалось импортировать один или несколько файлов (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" завершен"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Экспорт контактов завершен."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Экспорт контактов завершен. Чтобы открыть к ним доступ, нажмите на уведомление."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Нажмите, чтобы открыть доступ к контактам."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" отменен"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Экспорт данных контакта"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Экспорт контактов…"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"База данных недоступна."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Не найдены контакты для экспорта. Возможно, экспорт контактов с телефона не поддерживается поставщиком услуг передачи данных."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Сбой при запуске редактора vCard."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Ошибка экспорта"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Не удалось экспортировать данные.\nПричина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Импорт файла \"<xliff:g id="NAME">%s</xliff:g>\"…"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Данные файла vCard не прочитаны"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Чтение данных vCard отменено"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Файл \"<xliff:g id="FILENAME">%s</xliff:g>\" импортирован"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Импорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" отменен"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Импорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" скоро начнется."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Импорт файла скоро начнется."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Запрос на импорт данных vCard отклонен. Повторите попытку позже."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" скоро начнется."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Файл будет экспортирован в ближайшее время."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Контакты скоро будут экспортированы."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Запрос на экспорт данных vCard отклонен. Повторите попытку позже."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"контакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Выполняется кеширование файлов vCard в локальное временное хранилище, после чего начнется импорт."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Не удалось импортировать данные vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Получено по NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Экспортировать контакты?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кеширование…"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Импорт <xliff:g id="CURRENT_NUMBER">%s</xliff:g> из <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>..."</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Экспорт в файл VCF"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Сортировка"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"По имени"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"По фамилии"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Формат имени"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Сначала имя"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Сначала фамилия"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Аккаунты"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Аккаунт по умолчанию для новых контактов"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Синхронизация метаданных контакта [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Синхронизация метаданных контакта"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Мои данные"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Настройте профиль"</string>
+    <string name="setting_about" msgid="3926137653588942297">"О Контактах"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Настройки"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Передать видимые контакты"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Не удалось поделиться видимыми контактами."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Отправить избранные"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Отправить все контакты"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Не удалось отправить контакты"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Импорт/экспорт контактов"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Импорт контактов"</string>
+    <string name="share_error" msgid="665756457151793108">"Не удалось передать данные"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Доступных контактов нет"</string>
+    <string name="menu_search" msgid="7464453023659824700">"Поиск"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Фильтр контактов"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Фильтр контактов"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Настроить пользовательский режим просмотра"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Сохранить"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Поиск контактов"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Избранное"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Нет контактов"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Очистить популярные"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Выбрать SIM-карту"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Управление аккаунтами"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Импорт/экспорт"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Заблокированные номера"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"в <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"прекратить поиск"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Очистить условия поиска"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Отображение контактов"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Аккаунт"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Всегда использовать для звонков"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Аккаунт для звонка"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Написать сообщение абоненту"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Введите текст…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ОТПРАВИТЬ СООБЩЕНИЕ И ПОЗВОНИТЬ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"><xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитанный элемент. </item>
+      <item quantity="few"><xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитанных элемента. </item>
+      <item quantity="many"><xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитанных элементов. </item>
+      <item quantity="other"><xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитанного элемента. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Версия сборки"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Лицензии на ПО с открытым исходным кодом"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Сведения о лицензиях на ПО с открытым исходным кодом"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Политика конфиденциальности"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Условия использования"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Лицензии открытого ПО"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Не удалось открыть URL."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Аккаунт <xliff:g id="ACCOUNT_INFO">%s</xliff:g> выбран"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Аккаунт <xliff:g id="ACCOUNT_INFO">%s</xliff:g> не выбран"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Видеовызов"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Удалить"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Многоточие"</string>
+</resources>
diff --git a/res-common/values-si-rLK-sw600dp/strings.xml b/res-common/values-si-rLK-sw600dp/strings.xml
new file mode 100644
index 0000000..3b12e0b
--- /dev/null
+++ b/res-common/values-si-rLK-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"උපාංගය"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"නිර්යාත කළ හැකි සම්බන්ධතා නැත. ඔබගේ ටැබ්ලටයේ සම්බන්ධතා තිබේ නම්, සමහර දත්ත සපයන්නන් ටැබ්ලටයෙන් සම්බන්ධතා නිර්යාත කිරීමට අවසර ලබා නොදිය හැක."</string>
+</resources>
diff --git a/res-common/values-si-rLK/strings.xml b/res-common/values-si-rLK/strings.xml
new file mode 100644
index 0000000..d672990
--- /dev/null
+++ b/res-common/values-si-rLK/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"පෙළ පිටපත් කරන ලදී"</string>
+    <string name="copy_text" msgid="3424081789297978355">"පසුරු පුවරුවට පිටපත් කරන්න"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> අමතන්න"</string>
+    <string name="call_home" msgid="1479549630992276827">"ගෙදර අමතන්න"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"ජංගම දුරකථනය අමතන්න"</string>
+    <string name="call_work" msgid="8299062439076337075">"කාර්යාලය අමතන්න"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"කාර්යාල ෆැක්ස් අමතන්න"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"නිවෙස් ෆැක්ස් අමතන්න"</string>
+    <string name="call_pager" msgid="3038080882899955112">"පේජර් අමතන්න"</string>
+    <string name="call_other" msgid="4472141328347894937">"ඇමතුම"</string>
+    <string name="call_callback" msgid="687494744634190411">"නැවත ඇමතුම අමතන්න"</string>
+    <string name="call_car" msgid="9078083109758282133">"කාරය අමතන්න"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"ආයතන මූලිකය අමතන්න"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN අමතන්න"</string>
+    <string name="call_main" msgid="4640261071249938558">"මූලිකය අමතන්න"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ෆැක්ස් අමතන්න"</string>
+    <string name="call_radio" msgid="9055749313292712021">"රේඩියෝව අමතන්න"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ටෙලෙක්ස් අමතන්න"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD අමතන්න"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"කාර්යාල ජංගම දුරකථනය අමතන්න"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"කාර්යාල පේජරය අමතන්න"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> අමතන්න"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS අමතන්න"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ඇමතුම)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> ට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_home" msgid="7765831490534280540">"නිවසට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ජංගම දුරකථනයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_work" msgid="3910570578912367742">"කාර්යාලයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"කාර්යාල ෆැක්ස් වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"නිවෙස් ෆැක්ස් වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"පේජරයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_other" msgid="910895193552957097">"කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_callback" msgid="728414485478941361">"නැවත ඇමතුමට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_car" msgid="8543669230270954512">"කාරයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ආයතනයේ මූලික එකට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_main" msgid="6815987840926184815">"මූලික අංකයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ෆැක්ස් වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"රේඩියෝවට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ටෙලෙක්ස් වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"කාර්යාල ජංගම දුරකථනයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"කාර්යාල පේජරයට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> ට කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS වෙත කෙටි පණිවිඩයක් යවන්න"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (පණිවිඩය)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"වීඩියෝ ඇමතුමක් ලබාගන්න"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"නිතරම සම්බන්ධ වන අය හිස් කරන්නද?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"ඔබ සම්බන්ධතා සහ දුරකථන යෙදුම්වලින් නිතරම සම්බන්ධ වුණු අයගේ ලැයිස්තුව හිස් කර, මුල සිටම ඔබගේ ලිපින අභිරුචි ඉගෙනීමට ඊ-තැපැල් යෙදුම්වලට බල කරයි."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"නිතරම සම්බන්ධ වන අය හිස් කරමින්…"</string>
+    <string name="status_available" msgid="4832569677396634846">"සිටියි"</string>
+    <string name="status_away" msgid="6267905184545881094">"ළඟ නැත"</string>
+    <string name="status_busy" msgid="7111912905211403545">"කාර්යබහුල"</string>
+    <string name="contactsList" msgid="7140022347217602605">"සම්බන්ධතා"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"වෙනත්"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"නාමාවලිය"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"කාර්යාල සම්බන්ධතා නාමාවලිය"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"සියලුම සම්බන්ධතා"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"සොයමින්..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> ට වඩා සොයාගන්නා ලදී."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"සම්බන්ධතා නැත"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ක් සොයා ගන්නා ලදි</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ක් සොයා ගන්නා ලදි</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> සඳහා ඉක්මන් සම්බන්ධතාව"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(නමක් නොමැත)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"නිතරම සම්බන්ධ වන"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"සම්බන්ධතාව පෙන්වන්න"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"දුරකථන අංක සහිත සම්බන්ධතා"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"කාර්යාල පැතිකඩ සම්බන්ධතා"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"යාවත්කාලීන වීම් පෙන්වන්න"</string>
+    <string name="account_phone" msgid="325867897209266837">"උපාංගය"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"නම‍"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"අපනාමය"</string>
+    <string name="full_name" msgid="885420216812981202">"නම‍"</string>
+    <string name="name_given" msgid="4153709115654909377">"පළමු නම"</string>
+    <string name="name_family" msgid="5317387657540738981">"අවසාන නම"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"නම් උපසර්ගය"</string>
+    <string name="name_middle" msgid="3951610314424632183">"මැද නම"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"නම් ප්‍රත්‍යය"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ස්වර නම"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ශබ්ද විද්‍යාත්මක මුල් නම"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ස්වර මැද නම"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ශබ්ද විද්‍යාත්මක අවසාන නම"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"දුරකථනය"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ඊ-තැපෑල"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ලිපිනය"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"සංවිධානය"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ඥාතිත්වය"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"විශේෂ දිනය"</string>
+    <string name="sms" msgid="8086289395154598654">"පෙළ පණිවුඩය"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ලිපිනය"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"සමාගම"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"මාතෘකාව"</string>
+    <string name="label_notes" msgid="3997277594846722699">"සටහන්"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"වෙබ් අඩවිය"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ලේබල"</string>
+    <string name="email_home" msgid="2230967805906450693">"නිවසට ඊ-තැපැල් කරන්න"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ජංගමයට ඊ-තැපැල් කරන්න"</string>
+    <string name="email_work" msgid="7065971921227432400">"කාර්යාලයට ඊ-තැපැල් කරන්න"</string>
+    <string name="email_other" msgid="4601881243553289615">"ඊ-තැපෑල"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> ඊ-තැපැල් කරන්න"</string>
+    <string name="email" msgid="5624424151176351591">"ඊ-තැපෑල"</string>
+    <string name="postal_street" msgid="881349814077356134">"වීථිය"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"තැපැල් පෙට්ටිය"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"අසල්වැසි ප්‍රදේශය"</string>
+    <string name="postal_city" msgid="3173008531169519309">"නගරය"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ජනපදය"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ZIP කේතය"</string>
+    <string name="postal_country" msgid="3988452247038791892">"රට"</string>
+    <string name="map_home" msgid="1221397355014741634">"නිවෙස් ලිපිනය පෙන්වන්න"</string>
+    <string name="map_work" msgid="9015981646907637207">"කාර්යාල ලිපිනය පෙන්වන්න"</string>
+    <string name="map_other" msgid="55098598855607997">"ලිපිනය පෙන්වන්න"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> ලිපිනය පෙන්වන්න"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber භාවිතයෙන් කතාබස් කරන්න"</string>
+    <string name="chat" msgid="6297650784873558837">"කතාබස්"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"මකන්න"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"නම් ක්ෂේත්‍ර විහිදන්න හෝ හකුළන්න"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ශබ්දිම නම් ක්ෂේත්‍ර විහිදීම හෝ හැකිළීම"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"සියලුම සම්බන්ධතා"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"තරුව සලකුණු කළ"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"අභිරුචිකරණය"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"සම්බන්ධතාවය"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"සියලු වෙනත් සම්බන්ධතා"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"සියලුම සම්බන්ධතා"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"සමමුහුර්ත කණ්ඩායම ඉවත් කරන්න"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"සමමුහුර්ත කණ්ඩායම එක් කරන්න"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"තවත් කණ්ඩායම්…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" සමමුහුර්ත කිරීමෙන් ඉවත් කිරීමෙන් ඕනෑම කණ්ඩායම් නොකළ සම්බන්ධතාවයක් සමමුහුර්තයෙන් ඉවත් කෙරෙනු ඇත."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"පෙන්වීම් විකල්ප සුරකිමින්…"</string>
+    <string name="menu_done" msgid="32470053723443112">"හරි"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"අවලංගු කරන්න"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"අභිරුචිකරණය කළ දසුන"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"ආයාත කළ සම්බන්ධතා මෙහි සුරකින්න:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM පතෙන් ආයාත කරන්න"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> වෙතින් ආයාත කරන්න"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g> වෙතින් ආයාත කරන්න"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ගොනු වෙතින් ආයාත කිරීම"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> ආයාත කිරීම අවලංගු කරන්නද?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> නිර්යාත කිරීම අවලංගු කරන්නද?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard ආයාත/නිර්යාත කිරීම අවලංගු කළ නොහැක"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"නොදන්නා දෝෂය."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" විවෘත කිරීමට නොහැක: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"නිර්යාතකරු පටන් ගැනීමට නොහැක: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"නිර්යාත කළ හැකි සම්බන්ධතාවයක් නොමැත."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"ඔබ අවශ්‍ය අවසරයක් අබල කර ඇත."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"නිර්යාතය අතරතුර දෝෂයක් සිදු විය: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"අවශ්‍ය කරන ගොනු නම දිග වැඩිය (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O දෝෂය"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"මතකය මදිය. ගොනුව විශාල වැඩි විය හැක."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"බලාපොරොත්තු නොවූ හේතුවක් නිසා vCard ය විග්‍රහ කළ නොහැක."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"මෙම ආකෘතිය වෙත සහාය නොදක්වයි."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"ලබාදුන් vCard ගොනු(ව) වල පාර දත්ත එකතු කළ නොහැකි විය."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ගොනු එකක් හෝ කිහිපයක් ආයාත කිරීමට නොහැකි විය (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> නිර්යාත කිරීම සම්පූර්ණ කෙරුණි."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"සම්බන්ධතා නිර්යාත කිරීම සම්පූර්ණ කෙරුණි."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"සම්බන්ධතා නිර්යාත කිරීම අවසන්ය, සම්බන්ධතා බෙදා ගැනීමට දැනුම්දීම ක්ලික් කරන්න."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"සම්බන්ධතා බෙදා ගැනීමට තට්ටු කරන්න."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> නිර්යාත කිරීම අවලංගු කෙරුණි."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"සම්බන්ධතා දත්ත නිර්යාත කිරීම"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"සම්බන්ධතා දත්ත නිර්යාත කරමින් තිබේ."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"දත්ත සමුදායේ තොරතුරු ලබාගත නොහැකි විය."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"නිර්යාත කළ හැකි සම්බන්ධතා නැත. ඔබගේ දුරකථනයේ සම්බන්ධතා තිබේ නම්, සමහර දත්ත සපයන්නන් දුරකථනයෙන් සම්බන්ධතා නිර්යාත කිරීමට අවසර ලබා නොදිය හැක."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard සකසනය නිවැරදිව පටන් ගත්තේ නැත."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"නිර්යාත කළ නොහැකි වීය"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"සම්බන්ධතා දත්ත නිර්යාත නොකරන ලදි.\nහේතුව: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> ආයාත කරමින්"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard දත්ත කියවිය නොහැක විය"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard දත්ත කියවීම අවලංගු කෙරුණි"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> ආයාත කිරීම සම්පූර්ණ විය"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> ආයාත කිරීම අවලංගු කෙරුණි"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> කෙටි වේලාවකින් ආයාත වනු ඇත."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ගොනුව කෙටි වේලාවකින් ආයාත කරනු ඇත."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard ආයාත ඉල්ලීම ප්‍රතික්ෂේප කරන ලදි. පසුව නැවත උත්සාහ කරන්න."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> කෙටි වේලාවකින් නිර්යාත කරනු ඇත."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ගොනුව කෙටි වේලාවකින් නිර්යාත කරනු ඇත."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"ටික වේලාවකින් සම්බන්ධතා නිර්යාත කරනු ඇත."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard නිර්යාත අයැදුම ප්‍රතික්ෂේප කරන ලදි. පසුව නැවත උත්සාහ කරන්න."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"සම්බන්ධතාවය"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"පෙදෙසි තාවකාලික ආචයනයට vCard(s) හැඹිලිගත කරමින් පවතී. සැබෑ ආයාත කිරීම ඉක්මනින් පටන් ගනු ඇත."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard ආයාත කිරීමට නොහැකි විය."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC හරහා සම්බන්ධතාව ලැබුණි"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"සම්බන්ධතා නිර්යාත කරන්නද?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"හැඹිලි ගත කරමින්"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g> ආයාත කරමින්"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ගොනු වෙත නිර්යාත කිරීම"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"අනුපිළිවෙලට සකසා ඇත්තේ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"පළමු නම"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"අවසාන නම"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"නමේ ආකෘතිය"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"මුල් නම මුලින්ම"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"අවසාන නම මුලින්ම"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"ගිණුම්"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"නව සම්බන්ධතා සඳහා පෙරනිමි ගිණුම"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"සම්බන්ධතා පාරදත්ත සමමුහුර්ත කරන්න [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"සම්බන්ධතා පාරදත්ත සමමුහුර්ත කරන්න"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"මගේ තොරතුරු"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"ඔබේ පැතිකඩ පිහිටුවන්න"</string>
+    <string name="setting_about" msgid="3926137653588942297">"සම්බන්ධතා ගැන"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"සැකසීම්"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"පෙනෙන සම්බන්ධතා බෙදාගන්න"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"දෘශ්‍යමාන සම්බන්ධතා බෙදා ගැනීම අසාර්ථක විය."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ප්‍රියතම සම්බන්ධතා බෙදා ගන්න"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"සියලු සම්බන්ධතා බෙදා ගන්න"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"සම්බන්ධතා බෙදා ගැනීම අසාර්ථක විය."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"සම්බන්ධතා ආයාත/නිර්යාත කිරීම"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"සම්බන්ධතා ආයාත කරන්න"</string>
+    <string name="share_error" msgid="665756457151793108">"මෙම සම්බන්ධතාව බෙදා ගත නොහැක."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"බෙදාගැනීමට සම්බන්ධතා නොමැත."</string>
+    <string name="menu_search" msgid="7464453023659824700">"සෙවීම"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"පෙන්වීමට සම්බන්ධතා"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"පෙන්වීමට සම්බන්ධතා"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"අභිරුචිකරණය කළ දසුන නිර්වචනය කිරීම"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"සුරකින්න"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"සම්බන්ධතා සොයන්න"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"ප්‍රියතම"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"සම්බන්ධතා නැත."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"නිතරමයන් හිස් කරන්න"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM කාඩ්පත තෝරන්න"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"ගිණුම් කළමනාකරණය කරන්න"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"ආයාත/නිර්යාත"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"අවහිර කළ අංක"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> හරහා"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> මඟින් <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"සෙවීම අවසන් කරන්න"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"සෙවීම හිස් කරන්න"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"දර්ශනය කිරීමේ විකල්පය සම්බන්ධ කරගන්න"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"ගිණුම"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ඇමතුම් සඳහා මෙම එක සැමවිටම භාවිතා කරන්න"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"සමඟ අමතන්න"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"සටහනක් සමගින් අමතන්න"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"ඇමතුම සමග යැවීමට සටහනක් ටයිප් කරන්න ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"යවන්න සහ අමතන්න"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. නොකියවූ අයිතම <xliff:g id="COUNT_3">%2$d</xliff:g>. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. නොකියවූ අයිතම <xliff:g id="COUNT_3">%2$d</xliff:g>. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"තැනුම් අනුවාදය"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"විවෘත මූලාශ්‍ර බලපත්‍ර"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"විවෘත මූලාශ්‍ර මෘදුකාංග සඳහා බලපත්‍ර විස්තර"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"රහස්‍යතා ප්‍රතිපත්තිය"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"සේවා නියම"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"විවෘත මූලාශ්‍ර බලපත්‍ර"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"url විවෘත කිරීමට අසමත් විය."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ලකුණු කරන ලදී"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ලකුණු කර නැත"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"වීඩියෝ ඇමතුම සිදු කිරීම"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"මකන්න"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"ලෝපය"</string>
+</resources>
diff --git a/res-common/values-sk-sw600dp/strings.xml b/res-common/values-sk-sw600dp/strings.xml
new file mode 100644
index 0000000..ef9bdc1
--- /dev/null
+++ b/res-common/values-sk-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Zariadenie"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nenašli sa žiadne kontakty, ktoré by bolo možné exportovať. Ak v tablete skutočne máte kontakty, problém môže byť spôsobený tým, že niektorí poskytovatelia údajov neumožňujú export kontaktov z tabletu."</string>
+</resources>
diff --git a/res-common/values-sk/strings.xml b/res-common/values-sk/strings.xml
new file mode 100644
index 0000000..5e65fad
--- /dev/null
+++ b/res-common/values-sk/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Text bol skopírovaný"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopírovať do schránky"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Volať kontakt <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Volať na domáci telefón"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Volať na mobil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Volať na pracovný telefón"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Volať na pracovný fax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Volať na domáci fax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Volať na pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Volať"</string>
+    <string name="call_callback" msgid="687494744634190411">"Volať na číslo spätného volania"</string>
+    <string name="call_car" msgid="9078083109758282133">"Volať na telefón v aute"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Volať firme (hlavné číslo)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Volať na číslo ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Volať na hlavné číslo"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Volať na fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Volať na rádiostanicu"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Volať na číslo Telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Volať na číslo TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Volať na pracovný mobil"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Volať na pracovný pager"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Volať kontakt <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Volať na číslo MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (hovor)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Poslať správu kontaktu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Poslať správu na domáci telefón"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Poslať správu na mobil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Poslať správu na pracovný telefón"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Poslať správu na pracovný fax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Poslať správu na domáci fax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Poslať správu na pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Poslať správu"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Poslať správu na číslo spätného volania"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Poslať správu na telefón v aute"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Poslať správu do firmy (hlavné číslo)"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Poslať správu na číslo ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Poslať správu na hlavné číslo"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Poslať správu na fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Poslať správu na rádiostanicu"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Poslať správu na číslo Telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Poslať správu na číslo TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Poslať správu na pracovný mobil"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Poslať správu na pracovný pager"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Poslať správu kontaktu <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Poslať správu na číslo MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (správa)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Uskutočniť videohovor"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vymazať často kontaktované osoby?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Vymažete zoznam často kontaktovaných osôb v aplikáciách Kontakty a Telefón a e-mailové aplikácie budú musieť odznova vytvoriť predvoľby adresátov."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Mazanie často kontaktov. osôb..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Som tu"</string>
+    <string name="status_away" msgid="6267905184545881094">"Som preč"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Nemám čas"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakty"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Iné"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Adresár"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Pracovný adresár"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Všetky kontakty"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Hľadá sa…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Našlo sa viac ako <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Žiadne kontakty"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="few">Našli sa <xliff:g id="COUNT">%d</xliff:g> kontakty</item>
+      <item quantity="many">Našlo sa <xliff:g id="COUNT">%d</xliff:g> kontaktu</item>
+      <item quantity="other">Našlo sa <xliff:g id="COUNT">%d</xliff:g> kontaktov</item>
+      <item quantity="one">Našiel sa 1 kontakt</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Rýchly kontakt pre osobu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Bez mena)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Najčastejšie používané kontakty"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Zobraziť kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Všetky kontakty s telefónnymi číslami"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontakty v pracovnom profile"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Zobraziť aktualizácie"</string>
+    <string name="account_phone" msgid="325867897209266837">"Zariadenie"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Meno"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Prezývka"</string>
+    <string name="full_name" msgid="885420216812981202">"Meno"</string>
+    <string name="name_given" msgid="4153709115654909377">"Krstné meno"</string>
+    <string name="name_family" msgid="5317387657540738981">"Priezvisko"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Titul pred menom"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Stredné meno"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Titul za menom"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Meno (foneticky)"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Krstné meno (foneticky)"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Stredné meno (foneticky)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Priezvisko (foneticky)"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefón"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-mail"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Čet"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizácia"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Vzťah"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Špeciálny dátum"</string>
+    <string name="sms" msgid="8086289395154598654">"Textová správa"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresa"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Spoločnosť"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Funkcia"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Poznámky"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Štítky"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-mail domov"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-mail na mobil"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-mail do práce"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Poslať e-mail na adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-mail"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulica"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Štvrť"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Mesto"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Štát"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"PSČ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Krajina"</string>
+    <string name="map_home" msgid="1221397355014741634">"Zobraziť adresu domov"</string>
+    <string name="map_work" msgid="9015981646907637207">"Zobraziť pracovnú adresu"</string>
+    <string name="map_other" msgid="55098598855607997">"Zobraziť adresu"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Zobraziť adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Zhovárať sa pomocou služby AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Zhovárať sa pomocou služby Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Zhovárať sa pomocou služby Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Zhovárať sa pomocou služby Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Zhovárať sa pomocou služby QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Zhovárať sa pomocou aplikácie Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Zhovárať sa pomocou služby ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Zhovárať sa pomocou služby Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Četovať"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"odstrániť"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Rozbaliť alebo zbaliť pole mena"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Rozbaliť alebo zbaliť polia foneticky zadaných mien"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Všetky kontakty"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Označené hviezdičkou"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Prispôsobiť"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Všetky ostatné kontakty"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Všetky kontakty"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Odstrániť synchronizovanú skupinu"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Pridať synchronizovanú skupinu"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Ďalšie skupiny..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Ak zo synchronizácie odstránite skupinu „<xliff:g id="GROUP">%s</xliff:g>“, odstránite zo synchronizácie aj všetky kontakty, ktoré nie sú zaradené do žiadnej skupiny."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Prebieha ukladanie možností zobrazenia..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Hotovo"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Zrušiť"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Prispôsobené zobrazenie"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Účet na ukladanie importovaných kontaktov:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importovať zo SIM karty"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importovať zo SIM karty <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importovať zo SIM karty <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importovať zo súboru .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Zrušiť importovanie súboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Zrušiť exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Import alebo export vizitky nie je možné zrušiť"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Neznáma chyba."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Súbor „<xliff:g id="FILE_NAME">%s</xliff:g>“ sa nepodarilo otvoriť: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Nástroj na exportovanie sa nepodarilo spustiť: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nedá sa exportovať žiadny kontakt."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Zakázali ste požadované povolenie."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Počas exportovania sa vyskytla chyba: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Požadovaný názov súboru (<xliff:g id="FILENAME">%s</xliff:g>) je príliš dlhý."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Chyba I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nedostatok pamäte. Súbor je možno príliš veľký."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Analýza karty vCard zlyhala z neznámeho dôvodu."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formát nie je podporovaný."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Metaúdaje daných súborov vizitiek vCard sa nepodarilo zhromaždiť."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Nepodaril sa import jedného alebo viacerých súborov (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g> bolo dokončené."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Exportovanie kontaktov bolo dokončené"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Exportovanie kontaktov sa skončilo. Zdieľajte ich kliknutím na upozornenie."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Klepnutím zdieľajte kontakty."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g> bolo zrušené."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Export údajov kontaktov"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktné informácie sa exportujú."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Nepodarilo sa získať informácie z databázy."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nenašli sa žiadne kontakty, ktoré by bolo možné exportovať. Ak v telefóne skutočne máte kontakty, problém môže byť spôsobený tým, že niektorí poskytovatelia údajov neumožňujú export kontaktov z telefónu."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Nástroj na tvorbu vizitiek vCard sa nespustil správne."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Exportovanie zlyhalo"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Údaje o kontaktoch sa neexportovali.\nDôvod: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importuje sa <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Nepodarilo sa prečítať údaje vizitky vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Čítanie údajov vizitky vCard bolo zrušené"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Import vizitky vCard <xliff:g id="FILENAME">%s</xliff:g> bol dokončený"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importovanie súboru <xliff:g id="FILENAME">%s</xliff:g> bolo zrušené"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Vizitka <xliff:g id="FILENAME">%s</xliff:g> bude čoskoro importovaná."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Súbor bude čoskoro importovaný."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Žiadosť o import vizitky vCard bola odmietnutá. Skúste to znova neskôr."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Vizitka <xliff:g id="FILENAME">%s</xliff:g> bude čoskoro exportovaná."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Súbor bude čoskoro exportovaný."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontakty budú čoskoro exportované."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Žiadosť o exportovanie vizitky vCard bola odmietnutá. Skúste to znova neskôr."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Prebieha načítavanie vizitiek vCard do vyrovnávacej pamäte miestneho dočasného úložiska. Samotné importovanie začne o chvíľu."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Vizitku vCard sa nepodarilo importovať."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt cez NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Exportovať kontakty?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Ukladanie do vyrovnávacej pamäte..."</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Import: <xliff:g id="CURRENT_NUMBER">%s</xliff:g> / <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportovať do súboru .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Zoradiť podľa"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Krstné meno"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Priezvisko"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formát mena"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Najprv meno"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Najprv priezvisko"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Účty"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Predvolený účet pre nové kontakty"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synchronizovať metadáta kontaktov [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synchronizácia metadát kontaktov"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Moje informácie"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Nastavenie profilu"</string>
+    <string name="setting_about" msgid="3926137653588942297">"O aplikácii Kontakty"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Nastavenia"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Zdieľať viditeľné kontakty"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Nepodarilo sa zdieľať viditeľné kontakty"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Zdieľať obľúbené kontakty"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Zdieľať všetky kontakty"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Nepodarilo sa zdieľať kontakty."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Import a export kontaktov"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importovať kontakty"</string>
+    <string name="share_error" msgid="665756457151793108">"Tento kontakt nie je možné zdieľať"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nemáte žiadne kontakty na zdieľanie."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Hľadať"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakty na zobrazenie"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakty na zobrazenie"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definovanie prispôsobeného zobrazenia"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Uložiť"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Hľadať v kontaktoch"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Obľúbené"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Žiadne kontakty."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Vymazať často kontaktovaných"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Vybrať SIM kartu"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Spravovať účty"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Import a export"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Zablokované čísla"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"zdroj: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>, zdroj: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"zastaviť vyhľadávanie"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Vymazať vyhľadávanie"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Možnosti zobrazenia kontaktov"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Účet"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Vždy používať pre hovory"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Volať pomocou"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Hovor s poznámkou"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Napíšte poznámku, ktorá sa odošle s hovorom..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ODOSLAŤ A VOLAŤ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprečítané položky. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprečítanej položky. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprečítaných položiek. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> neprečítaná položka. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Verzia zostavy"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licencie open source"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Podrobnosti o licencii pre softvér open source"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Pravidlá ochrany súkromia"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Zmluvné podmienky"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licencie open source"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Webovú adresu nebolo možné otvoriť"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> – skontrolované"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> – neskontrolované"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Uskutočniť videohovor"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Odstrániť"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Tri bodky"</string>
+</resources>
diff --git a/res-common/values-sl-sw600dp/strings.xml b/res-common/values-sl-sw600dp/strings.xml
new file mode 100644
index 0000000..5338f23
--- /dev/null
+++ b/res-common/values-sl-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Naprava"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Ni stikov za izvoz. Če imate v tabličnem računalniku stike, nekateri ponudniki podatkov morda ne omogočajo izvoza stikov iz njega."</string>
+</resources>
diff --git a/res-common/values-sl/strings.xml b/res-common/values-sl/strings.xml
new file mode 100644
index 0000000..559ab47
--- /dev/null
+++ b/res-common/values-sl/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Besedilo kopirano"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiraj v odložišče"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Pokliči številko <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Pokliči domov"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Pokliči mobilni telefon"</string>
+    <string name="call_work" msgid="8299062439076337075">"Pokliči v službo"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Pokliči službeni faks"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Pokliči domači faks"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Pokliči pozivnik"</string>
+    <string name="call_other" msgid="4472141328347894937">"Pokliči"</string>
+    <string name="call_callback" msgid="687494744634190411">"Pokliči številko za povratni klic"</string>
+    <string name="call_car" msgid="9078083109758282133">"Pokliči telefon v avtu"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Pokliči glavno telefonsko številko podjetja"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Pokliči številko ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Pokliči glavno telefonsko številko"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Pokliči faks"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Pokliči radijski telefon"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Pokliči teleks"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Pokliči številko TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Pokliči službeni mobilni telefon"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Pokliči službeni pozivnik"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Pokliči številko pomočnika <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Pokliči telefon MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Pokliči)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Pošlji SMS na številko <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Pošlji SMS domov"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Pošlji SMS v mobilni telefon"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Pošlji SMS v službeni telefon"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Pošlji SMS v službeni faks"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Pošlji SMS v domači faks"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Pošlji SMS v pozivnik"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Pošlji SMS na številko za povratni klic"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Pošlji SMS v telefon v avtu"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Pošlji SMS na glavno telefonsko številko podjetja"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Pošlji SMS na številko ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Pošlji SMS na glavno telefonsko številko"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Pošlji SMS v faks"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Pošlji SMS v radijski telefon"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Pošlji SMS v teleks"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Pošlji SMS na telefonsko številko TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Pošlji SMS v službeni mobilni telefon"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Pošlji SMS v službeni pozivnik"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Pošlji SMS pomočniku na številko <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Pošlji SMS na telefonsko številko MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Pošlji sporočilo)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Opravi videoklic"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Želite izbrisati seznam pog. stikov?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Izbrisali boste seznam pogostih stikov v aplikacijah Stiki in Telefon, zato bodo e-poštne aplikacije začele shranjevati pogoste naslovnike od začetka."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Brisanje seznama pogost. stikov ..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Dosegljiv"</string>
+    <string name="status_away" msgid="6267905184545881094">"Odsoten"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Zaseden"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Stiki"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Drugo"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Imenik"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Delovni imenik"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Vsi stiki"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Iskanje …"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Najdenih je bilo več kot toliko stikov: <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ni stikov"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> najden</item>
+      <item quantity="two"><xliff:g id="COUNT">%d</xliff:g> najdena</item>
+      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> najdeni</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> najdenih</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Hitri stik za <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Ni imena)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Pogosto uporabljeni stiki"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Ogled stika"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Vsi stiki s telefonskimi številkami"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Stiki za delovni profil"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Prikaži posodobitve"</string>
+    <string name="account_phone" msgid="325867897209266837">"Naprava"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ime"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Vzdevek"</string>
+    <string name="full_name" msgid="885420216812981202">"Ime"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ime"</string>
+    <string name="name_family" msgid="5317387657540738981">"Priimek"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Naziv (pred imenom)"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Drugo ime"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Naziv (za imenom)"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Ime – fonetično"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Ime – fonetično"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Drugo ime – fonetično"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Priimek – fonetično"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-poštni naslov"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Naslov"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Neposredno sporočanje"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizacija"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Razmerje"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Posebni datum"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Naslov"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Podjetje"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Naziv"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Opombe"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Spletno mesto"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Oznake"</string>
+    <string name="email_home" msgid="2230967805906450693">"Pošlji e-poštno sporočilo domov"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Pošlji e-poštno sporočilo v mobilno napravo"</string>
+    <string name="email_work" msgid="7065971921227432400">"Pošlji e-poštno sporočilo na službeni naslov"</string>
+    <string name="email_other" msgid="4601881243553289615">"Pošlji e-poštno sporočilo"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Pošlji e-poštno sporočilo na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Pošlji e-poštno sporočilo"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ulica"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Poštni predal"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Naselje"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Kraj"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Zvezna država"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Poštna številka"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Država"</string>
+    <string name="map_home" msgid="1221397355014741634">"Prikaži domači naslov"</string>
+    <string name="map_work" msgid="9015981646907637207">"Prikaži službeni naslov"</string>
+    <string name="map_other" msgid="55098598855607997">"Prikaži naslov"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Prikaži naslov <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Klepet s storitvijo AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Klepet s storitvijo Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Klepet s storitvijo Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Klepet s storitvijo Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Klepet s storitvijo QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Klepet s storitvijo Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Klepet s storitvijo ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Klepet s storitvijo Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Klepet"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"izbriši"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Razširi ali strni imenska polja"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Razširitev ali strnitev fonetičnih imenskih polj"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Vsi stiki"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Z zvezdico"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Prilagodi"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Stik"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Vsi drugi stiki"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Vsi stiki"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Odstrani skupino za sinhroniziranje"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Dodaj skupino za sinhroniziranje"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Več skupin ..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Če skupino »<xliff:g id="GROUP">%s</xliff:g>« odstranite iz sinhronizacije, boste iz sinhronizacije odstranili tudi vse nerazvrščene stike."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Shranjevanje možnosti prikaza ..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Končano"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Prekliči"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Prilagojen pogled"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Shranjevanje uvoženih stikov v račun:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Uvoz s kartice SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Uvoz s kartice SIM <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Uvoz s kartice SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Uvoz iz datoteke .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Želite preklicati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Želite preklicati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Uvoza/izvoza vCard ni mogoče preklicati"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Neznana napaka."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Datoteke »<xliff:g id="FILE_NAME">%s</xliff:g>« ni bilo mogoče odpreti: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Funkcije za izvoz ni bilo mogoče zagnati: »<xliff:g id="EXACT_REASON">%s</xliff:g>«."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Ni stikov za izvoz."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Onemogočili ste zahtevano dovoljenje."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Pri izvozu je prišlo do napake: »<xliff:g id="EXACT_REASON">%s</xliff:g>«."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Zahtevano ime datoteke je predolgo (»<xliff:g id="FILENAME">%s</xliff:g>«)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Vhodno/izhodna napaka"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Ni dovolj pomnilnika. Morda je datoteka prevelika."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Datoteke vCard iz neznanega razloga ni bilo mogoče razčleniti."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Ta oblika ni podprta."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Metapodatkov za določene datoteke vCard ni bilo mogoče zbrati."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Ene ali več datotek ni bilo mogoče uvoziti (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je končan."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Izvoz stikov je končan."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Izvoz stikov je dokončan. Kliknite obvestilo, če želite dati stike v skupno rabo."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Dotaknite se, če želite dati stike v skupno rabo."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je preklican."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Izvažanje podatkov o stikih"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Podatki o stikih se izvažajo."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Informacij o zbirki podatkov ni bilo mogoče dobiti."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Ni stikov za izvoz. Če imate v telefonu stike, nekateri ponudniki podatkov morda ne omogočajo izvoza stikov iz telefona."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Urejevalnik za vCard se ni pravilno zagnal."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Izvoz ni mogoč"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Podatki stika niso bili izvoženi.\nRazlog: »<xliff:g id="FAIL_REASON">%s</xliff:g>«"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Uvažanje <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Podatkov vCard ni bilo mogoče prebrati"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Branje podatkov vCard je preklicano"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Uvoz datoteke vCard <xliff:g id="FILENAME">%s</xliff:g> je končan"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je preklican"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> bo kmalu uvožena."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Datoteka bo kmalu uvožena."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Zahteva za uvoz datoteke vCard je bila zavrnjena. Poskusite znova pozneje."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> bo kmalu izvožena."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Datoteka bo kmalu izvožena."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Stiki bodo kmalu izvoženi."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Zahteva za izvoz datoteke vCard je bila zavrnjena. Poskusite znova pozneje."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"stik"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Predpomnjenje datotek vCard v lokalno začasno shrambo. Dejanski uvoz se bo začel kmalu."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Datoteke vCard ni mogoče uvoziti."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Stik prejet prek NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Želite izvoziti stike?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Predpomnjenje"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Uvažanje <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Izvoz v datoteko .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Razvrsti glede na"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ime"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Priimek"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Oblika imena"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Najprej ime"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Najprej priimek"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Računi"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Privzeti račun za nove stike"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinhronizacija metapodatkov stikov [PRESKUSNA INTERNA UPORABA]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinhronizacija metapodatkov stikov"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Moji podatki"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Nastavitev profila"</string>
+    <string name="setting_about" msgid="3926137653588942297">"O Stikih"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Nastavitve"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Vidne stike deli z drugimi"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Deljenje vidnih stikov z drugimi ni uspelo."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Deljenje priljubljenih stikov"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Skupna raba vseh stikov"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Dajanje stikov v skupno rabo ni uspelo."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Uvoz/izvoz stikov"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Uvozi stike"</string>
+    <string name="share_error" msgid="665756457151793108">"Tega stika ni mogoče dati v skupno rabo."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Ni stikov za deljenje z drugimi"</string>
+    <string name="menu_search" msgid="7464453023659824700">"Išči"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Stiki, ki bodo prikazani"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Stiki, ki bodo prikazani"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Določi prilagojen pogled"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Shrani"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Iskanje stikov"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Priljubljeni"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Ni stikov."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Izbriši seznam pogostih stikov"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Izberite kartico SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Upravljanje računov"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Uvozi/izvozi"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blokirane številke"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"vir: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"vir: <xliff:g id="SOURCE">%2$s</xliff:g> – <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ustavitev iskanja"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Počisti iskalno polje"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Možnosti prikaza stikov"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Račun"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Vedno uporabi to možnost za klice"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Klicanje z …"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Klic z zapiskom"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Vnesite zapisek, ki ga želite poslati s klicem ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"POŠLJI IN KLIČI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprebran element. </item>
+      <item quantity="two"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprebrana elementa. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprebrani elementi. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> neprebranih elementov. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Delovna različica"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Odprtokodne licence"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Podrobnosti o licenci za odprtokodno programsko opremo"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Pravilnik o zasebnosti"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Pogoji storitve"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Odprtokodne licence"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Naslova URL ni bilo mogoče odpreti."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> – označeno"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> – ni označeno"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Začetek videoklica"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Izbriši"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Tri pike"</string>
+</resources>
diff --git a/res-common/values-sq-rAL-sw600dp/strings.xml b/res-common/values-sq-rAL-sw600dp/strings.xml
new file mode 100644
index 0000000..99895bb
--- /dev/null
+++ b/res-common/values-sq-rAL-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Pajisja"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Nuk ka kontakte që mund të eksportohen. Nëse ke kontakte në tabletin tënd, disa ofrues të të dhënave mund të mos lejojnë që kontaktet të eksportohen nga tableti."</string>
+</resources>
diff --git a/res-common/values-sq-rAL/strings.xml b/res-common/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..694be2e
--- /dev/null
+++ b/res-common/values-sq-rAL/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teksti u kopjua"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopjo në kujtesën e fragmenteve"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Telefono <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Telefono numrin e shtëpisë"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Telefono numrin celular"</string>
+    <string name="call_work" msgid="8299062439076337075">"Telefono numrin e punës"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Telefono faksin e punës"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Telefono faksin e shtëpisë"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Telefoni numrin e biperit"</string>
+    <string name="call_other" msgid="4472141328347894937">"Telefono"</string>
+    <string name="call_callback" msgid="687494744634190411">"Telefono numrin e kthimit të telefonatave"</string>
+    <string name="call_car" msgid="9078083109758282133">"Telefono numrin e makinës"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Telefono numrin kryesor të kompanisë"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Telefono numrin ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Telefono numrin kryesor"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Telefono numrin e faksit"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Telefono numrin e radios"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Telefono numrin e teletekstit"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Telefono numrin e TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Telefono numrin celular të punës"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Telefono numrin e biperit të punës"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Telefono <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Telefono numrin MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Telefono)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Dërgo mesazh te <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Dërgo mesazh te numri i shtëpisë"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Dërgo mesazh te numri celular"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Dërgo mesazh te numri i punës"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Dërgo mesazh te faksi i punës"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Dërgo mesazh te faksi i shtëpisë"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Dërgo mesazh te biperi"</string>
+    <string name="sms_other" msgid="910895193552957097">"Dërgo mesazh"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Dërgo mesazh te numri i kthimit të telefonatave"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Dërgo mesazh te numri i makinës"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Dërgo mesazh te numri kryesor i kompanisë"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Dërgo mesazh te numri ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Dërgo mesazh te numri kryesor"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Dërgo mesazh te faksi"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Dërgo mesazh te numri i radios"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Dërgo mesazh te numri i teletekstit"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Dërgo mesazh te numri TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Dërgo mesazh te numri i celularit"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Dërgo mesazh te numri i biperit"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Dërgo mesazh te <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Dërgo mesazh te numri i MMS-së"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Mesazh)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Bëj një telefonatë me video"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Të pastrohen kontaktet e shpeshta?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Do ta pastrosh listën e kontakteve të shpeshta në aplikacionet \"Kontaktet\" dhe \"Telefoni\" dhe do t\'i detyrosh aplikacionet e mail-it të mësojnë preferencat e tua të adresimit nga e para."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Po pastron kontaktet e shpeshta…"</string>
+    <string name="status_available" msgid="4832569677396634846">"I gatshëm"</string>
+    <string name="status_away" msgid="6267905184545881094">"I larguar"</string>
+    <string name="status_busy" msgid="7111912905211403545">"I zënë"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktet"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Tjetër"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktoria"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Direktoria e punës"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Të gjitha kontaktet"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Po kërkon..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"U gjetën më shumë se <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Nuk ka asnjë kontakt"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">U gjetën <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">U gjet 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Kontakti i shpejtë për <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Pa emër)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Të kontaktuara shpesh"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Shiko kontaktin"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Të gjitha kontaktet me numra telefoni"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontaktet e profilit të punës"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Shiko përditësimet"</string>
+    <string name="account_phone" msgid="325867897209266837">"Pajisja"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Emri"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Pseudonimi"</string>
+    <string name="full_name" msgid="885420216812981202">"Emri"</string>
+    <string name="name_given" msgid="4153709115654909377">"Emri"</string>
+    <string name="name_family" msgid="5317387657540738981">"Mbiemri"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Parashtesa e emrit"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Emri i dytë"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Prapashtesa e emrit"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Emri fonetik"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Emri fonetik"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Emri i dytë fonetik"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Mbiemri fonetik"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefoni"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Mail-i"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organizata"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Marrëdhënia"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Data e veçantë"</string>
+    <string name="sms" msgid="8086289395154598654">"Mesazh me tekst"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adresa"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Kompania"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Titulli"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Shënime"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Uebsajti"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketat"</string>
+    <string name="email_home" msgid="2230967805906450693">"Dërgoji mail shtëpisë"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Dërgoji mail celularit"</string>
+    <string name="email_work" msgid="7065971921227432400">"Dërgoji mail punës"</string>
+    <string name="email_other" msgid="4601881243553289615">"Dërgo mail"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Dërgo mail në <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Mail-i"</string>
+    <string name="postal_street" msgid="881349814077356134">"Rruga"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Kutia postare"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Lagjja"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Qyteti"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Shteti"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Kodi ZIP"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Shteti"</string>
+    <string name="map_home" msgid="1221397355014741634">"Shiko adresën e shtëpisë"</string>
+    <string name="map_work" msgid="9015981646907637207">"Shiko adresën e punës"</string>
+    <string name="map_other" msgid="55098598855607997">"Shiko adresën"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Shiko adresën e <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Bisedo me AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Bisedo me Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Bisedo me Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Bisedo me Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Bisedo me QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Bisedo me \"Bisedo me Google\""</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Bisedo me ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Bisedo me Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Bisedo"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"fshi"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Zgjero ose palos fushat e emrit"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Zgjero ose palos fushat e emrit fonetik"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Të gjitha kontaktet"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Me yll"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Personalizo"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakti"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Të gjitha kontaktet e tjera"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Të gjitha kontaktet"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Hiq grupin e sinkronizimit"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Shto një grup sinkronizimi"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Më shumë grupe…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Heqja e \"<xliff:g id="GROUP">%s</xliff:g>\" nga sinkronizimi do të heqë po ashtu çdo kontakt të pagrupuar nga sinkronizimi."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Po ruan opsionet e paraqitjes…"</string>
+    <string name="menu_done" msgid="32470053723443112">"U krye!"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Anulo"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Pamje e personalizuar"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Ruaji kontaktet e importuara në:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importo nga karta SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importo nga karta SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importo nga karta SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importo nga skedar .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Të anulohet importimi i <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Të anulohet eksportimi i <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Importimi/eksportimi i vCard nuk mund të anulohej"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Gabim i panjohur."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" nuk mund të hapej: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Eksportuesi nuk mund të nisej: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Nuk ka asnjë kontakt që mund të eksportohet."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Ke çaktivizuar një leje e cila është të detyrueshme."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Ndodhi një gabim gjatë eksportimit: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Emri i kërkuar i skedarit është shumë i gjatë (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Gabim I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Nuk ka memorie të mjaftueshme. Skedari mund të jetë shumë i madh."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"vCard nuk mund të analizohej për një arsye të paparashikuar."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formati nuk mbështetet."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Informacionet e skedarit(ëve) të dhënë të vCard nuk mund të mblidheshin."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Një ose më shumë skedarë nuk mundën të importoheshin (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Eksportimi i <xliff:g id="FILENAME">%s</xliff:g> përfundoi."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Eksportimi i kontakteve përfundoi."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Eksportimi i kontakteve përfundoi, kliko njoftimin për të ndarë kontaktet."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Trokit për të ndarë kontaktet."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Eksportimi i <xliff:g id="FILENAME">%s</xliff:g> u anulua."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Po eksporton të dhënat e kontaktit"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Të dhënat e kontaktit po eksportohen."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Informacionet e bazës së të dhënave nuk mund të merreshin."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Nuk ka kontakte që mund të eksportohen. Nëse ke kontakte në telefonin tënd, disa ofrues të të dhënave mund të mos lejojnë që kontaktet të eksportohen nga telefoni."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Kompozitori i vCard nuk u nis si duhet."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Nuk mund të eksportoheshin"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Të dhënat e kontaktit nuk u eksportuan.\nArsyeja: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Po importon <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Të dhënat e vCard nuk mund të lexoheshin"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Leximi i të dhënave të vCard u anulua."</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Importimi i <xliff:g id="FILENAME">%s</xliff:g> të vCard përfundoi"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importimi i <xliff:g id="FILENAME">%s</xliff:g> u anulua"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> do të importohet së shpejti."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Skedari do të importohet së shpejti."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Kërkesa e importit të vCard u refuzua. Provo përsëri më vonë."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> do të eksportohet së shpejti."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Skedari do të eksportohet së shpejti."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktet do të eksportohen së shpejti."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Kërkesa e eksportimit të vCard u refuzua. Provo përsëri më vonë."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakti"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Po ruan vCard në hapësirën ruajtëse lokale të përkohshme. Importimi aktual do të nisë së shpejti."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard nuk mund të eksportohej."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakti u mor nëpërmjet NFC-së"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Të eksportohen kontaktet?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Po ruan memorien e përkohshme"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Po importon <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Eksporto në skedar .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Rendit sipas"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Emri"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Mbiemri"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Formati i emrit"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Emri në fillim"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Mbiemri në fillim"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Llogaritë"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Llogaria e parazgjedhur për kontaktet e reja"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sinkronizo të dhënat meta të kontakteve [TESTIM]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sinkronizo të dhënat meta të kontakteve"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Informacioni im"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Konfiguro profilin"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Rreth kontakteve"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Cilësimet"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Shpërnda kontaktet e dukshme"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Ndarja e kontakteve të dukshme dështoi."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Ndaj kontaktet e preferuara"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Ndaj të gjitha kontaktet"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Ndarja e kontakteve dështoi."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importo/eksporto kontaktet"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importo kontaktet"</string>
+    <string name="share_error" msgid="665756457151793108">"Ky kontakt nuk mund të shpërndahet"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Nuk ka kontakte për të shpërndarë"</string>
+    <string name="menu_search" msgid="7464453023659824700">"Kërko"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakte për t\'u shfaqur"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakte për t\'u shfaqur"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Përcakto pamjen e personalizuar"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Ruaj"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Kërko kontaktet"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Të preferuarat"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Nuk ka asnjë kontakt."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Pastro kontaktet e shpeshta"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Zgjidh kartën SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Menaxho llogaritë"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importo/eksporto"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Numrat e bllokuar"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"nëpërmjet <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> nëpërmjet <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ndalo kërkimin"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Pastro kërkimin"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Opsionet e paraqitjes së kontaktit"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Llogaria"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Përdor gjithmonë këtë për telefonatat"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Telefono me"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Telefono me shënim"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Shkruaj një shënim për të dërguar një telefonatë..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"DËRGO DHE TELEFONO"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> artikuj të palexuar. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> artikull i palexuar. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versioni i ndërtimit"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licencat me burim të hapur"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Detajet e licencës për softuer me burim të hapur"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Politika e privatësisë"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Kushtet e shërbimit"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licencat me burim të hapur"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Dështoi në hapjen e url-së."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> u shënua"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> nuk u shënua"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Kryej një telefonatë me video"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Fshi"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Elips"</string>
+</resources>
diff --git a/res-common/values-sr-sw600dp/strings.xml b/res-common/values-sr-sw600dp/strings.xml
new file mode 100644
index 0000000..fb130fa
--- /dev/null
+++ b/res-common/values-sr-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Уређај"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Нема контаката за извоз. Ако имате контакте на таблету, неки добављачи података можда неће дозволити извоз контаката са таблета."</string>
+</resources>
diff --git a/res-common/values-sr/strings.xml b/res-common/values-sr/strings.xml
new file mode 100644
index 0000000..8eae3b4
--- /dev/null
+++ b/res-common/values-sr/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текст је копиран"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Копирај у привремену меморију"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Позови <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Позови кућни телефон"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Позови мобилни телефон"</string>
+    <string name="call_work" msgid="8299062439076337075">"Позови пословни телефон"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Позови пословни факс"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Позови кућни факс"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Позови пејџер"</string>
+    <string name="call_other" msgid="4472141328347894937">"Позови"</string>
+    <string name="call_callback" msgid="687494744634190411">"Позови за повратни позив"</string>
+    <string name="call_car" msgid="9078083109758282133">"Позови телефон у аутомобилу"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Позови главни телефон предузећа"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Позови ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Позови главни телефон"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Позови факс"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Позови радио"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Позови телекс"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Позови TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Позови пословни мобилни телефон"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Позови пословни пејџер"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Позови <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Позови број за MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (позови)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Пошаљи SMS на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Пошаљи SMS на кућни телефон"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Пошаљи SMS на мобилни телефон"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Пошаљи SMS на пословни телефон"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Пошаљи SMS на пословни факс"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Пошаљи SMS на кућни факс"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Пошаљи SMS на пејџер"</string>
+    <string name="sms_other" msgid="910895193552957097">"Пошаљи SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Пошаљи SMS за повратни позив"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Пошаљи SMS на телефон у аутомобилу"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Пошаљи SMS на главни број телефона предузећа"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Пошаљи SMS на ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Пошаљи SMS на главни телефон"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Пошаљи SMS на факс"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Пошаљи SMS на радио"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Пошаљи SMS на телекс"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Пошаљи SMS на TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Пошаљи SMS на пословни мобилни телефон"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Пошаљи SMS на пословни пејџер"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Пошаљи SMS на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Пошаљи SMS на број за MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (пошаљи SMS)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Упути видео позив"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Бришете често контактиране?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Обрисаћете листу често контактираних у апликацијама Контакти и Телефон, па ће имејл апликације морати поново да прикупе информације о адресирању."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Брисање често контактираних..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Доступан/на"</string>
+    <string name="status_away" msgid="6267905184545881094">"Одсутан/на"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Заузет/а"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Контакти"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Друго"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Директоријум"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Директоријум за Work"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Сви контакти"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Претражује се..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Пронађено је више од <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Нема контаката"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Пронађен је <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="few">Пронађена су <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Пронађено је <xliff:g id="COUNT">%d</xliff:g></item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Брзи контакт за корисника <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Нема имена)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Често контактирани"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Приказивање контакта"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Сви контакти са бројевима телефона"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Контакти са профила за Work"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Прикажи ажурирања"</string>
+    <string name="account_phone" msgid="325867897209266837">"Уређај"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Име"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Надимак"</string>
+    <string name="full_name" msgid="885420216812981202">"Име"</string>
+    <string name="name_given" msgid="4153709115654909377">"Име"</string>
+    <string name="name_family" msgid="5317387657540738981">"Презиме"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Префикс за име"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Средње име"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Суфикс имена"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Име – фонетски"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Име – фонетски"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Средње име – фонетски"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Презиме – фонетски"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Имејл адреса"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Адреса"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Размена тренутних порука"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Организација"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Однос"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Посебан дан"</string>
+    <string name="sms" msgid="8086289395154598654">"Текстуална порука"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Адреса"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Предузеће"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Назив"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Белешке"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Веб-сајт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Ознаке"</string>
+    <string name="email_home" msgid="2230967805906450693">"Пошаљи имејл на кућну имејл адресу"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Пошаљи имејл на мобилни телефон"</string>
+    <string name="email_work" msgid="7065971921227432400">"Пошаљи имејл на пословну имејл адресу"</string>
+    <string name="email_other" msgid="4601881243553289615">"Пошаљи имејл"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Пошаљи имејл на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Пошаљи имејл"</string>
+    <string name="postal_street" msgid="881349814077356134">"Улица"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Поштански фах"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Крај"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Град"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Држава"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Поштански број"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Земља"</string>
+    <string name="map_home" msgid="1221397355014741634">"Прикажи кућну адресу"</string>
+    <string name="map_work" msgid="9015981646907637207">"Прикажи пословну адресу"</string>
+    <string name="map_other" msgid="55098598855607997">"Прикажи адресу"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Прикажи адресу <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Започни ћаскање преко AIM-а"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Започни ћаскање преко Windows Live-а"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Започни ћаскање преко Yahoo-а"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Започни ћаскање преко Skype-а"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Започни ћаскање преко QQ-а"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Започни ћаскање преко Google Talk-а"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Започни ћаскање преко ICQ-а"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Започни ћаскање преко Jabber-а"</string>
+    <string name="chat" msgid="6297650784873558837">"Ћаскање"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"избриши"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Проширивање или скупљање поља за називе"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Прошири или скупи поља за фонетско име"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Сви контакти"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Са звездицом"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Прилагоди"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Контакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Сви други контакти"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Сви контакти"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Уклони групу за синхронизацију"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Додавање групе за синхронизацију"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Још група…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Уклањањем групе „<xliff:g id="GROUP">%s</xliff:g>“ са листе за синхронизацију уклонићете и све негруписане контакте са те листе."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Чување опција приказа..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Готово"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Откажи"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Прилагођени приказ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Сачувајте увезене контакте на:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Увези са SIM картице"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Увоз са SIM картице <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Увоз са SIM картице <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Увези из .vcf датотеке"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Желите ли да откажете увоз датотеке <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Желите ли да откажете извоз датотеке <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Није могуће отказати vCard увоз/извоз"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Непозната грешка."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Није могуће отворити датотеку „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Није могуће покренути програм за извоз: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Нема контаката за извоз."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Онемогућили сте обавезну дозволу."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Дошло је до грешке при извозу: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Захтевани назив датотеке је предугачак („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"У/И грешка"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Нема довољно меморије. Датотека је можда превелика."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Из неочекиваног разлога није могуће рашчланити vCard датотеку."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Формат није подржан."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Није могуће прикупити метаподатке наведених vCard датотека."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Није могућ увоз једне или више датотека (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Извоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је завршен."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Извоз контаката је завршен."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Извожење контаката је завршено. Кликните на обавештење да бисте делили контакте."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Додирните да бисте делили контакте."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Извоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је отказан."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Извоз података о контактима је у току"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Подаци о контактима се извозе."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Преузимање информација из базе података није могуће."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Нема контаката за извоз. Ако имате контакте на телефону, неки добављачи података можда неће дозволити да се контакти извозе са телефона."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Програм за израду vCard датотека се није исправно покренуо."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Извоз није могућ"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Подаци о контактима низу извезени.\nРазлог: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Увоз контакта <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Читање vCard података није могуће"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Читање vCard података је отказано"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Увоз vCard датотеке <xliff:g id="FILENAME">%s</xliff:g> је завршен"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Увоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је отказан"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Датотека <xliff:g id="FILENAME">%s</xliff:g> ће ускоро бити увезена."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Датотека ће ускоро бити увезена."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Захтев за увоз vCard датотеке је одбијен. Покушајте поново касније."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Датотека <xliff:g id="FILENAME">%s</xliff:g> ће ускоро бити извезена."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Датотека ће ускоро бити извезена."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Контакти ће ускоро бити извезени."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Захтев за извоз vCard датотеке је одбијен. Покушајте поново касније."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"контакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Кеширање vCard датотекa у локалну привремену меморију. Увоз ће ускоро започети."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Увоз vCard датотеке није могућ."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Контакт преко NFC-а"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Желите ли да извезете контакте?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кеширање"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Увози се <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Извези у .vcf датотеку"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Сортирај према"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Имену"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Презимену"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Формат имена и презимена"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Прво име"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Прво презиме"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Налози"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Подразумевани налог за нове контакте"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Синхронизуј метаподатке контаката [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Синхронизујте метаподатке контаката"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Моје информације"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Подесите профил"</string>
+    <string name="setting_about" msgid="3926137653588942297">"О Контактима"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Подешавања"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Дели видљиве контакте"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Није успело дељење видљивих контаката."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Дели омиљене контакте"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Дели све контакте"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Дељење контаката није успело."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Увоз/извоз контаката"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Увоз контаката"</string>
+    <string name="share_error" msgid="665756457151793108">"Овај контакт не може да се дели."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Нема контаката за дељење."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Претражи"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Контакти за приказ"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Контакти за приказ"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Дефиниши прилагођени приказ"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Сачувај"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Претражите контакте"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Омиљено"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Нема контаката."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Обриши често контактиране"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Изаберите SIM картицу"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Управљај налозима"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Увези/извези"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Блокирани бројеви"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"преко <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> преко <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"заустављање претраживања"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Брисање претраге"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Опције приказивања контаката"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Налог"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Увек користи ово за позиве"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Позови помоћу"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Позив са белешком"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Унесите белешку коју ћете послати уз позив..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ПОШАЉИ И ПОЗОВИ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитана ставка. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитане ставке. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитаних ставки. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Верзија"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Лиценце отвореног кода"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Детаљи лиценце за софтвер отвореног кода"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Политика приватности"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Услови коришћења услуге"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Лиценце отвореног кода"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Отварање URL-а није успело."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Означено: <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Није означено: <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Упути видео позив"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Избришите"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Три тачке"</string>
+</resources>
diff --git a/res-common/values-sv-sw600dp/strings.xml b/res-common/values-sv-sw600dp/strings.xml
new file mode 100644
index 0000000..90affe7
--- /dev/null
+++ b/res-common/values-sv-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Enhet"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Det finns inga kontakter att exportera. Om du har kontakter på surfplattan kanske vissa dataleverantörer inte tillåter att kontakterna exporteras från surfplattan."</string>
+</resources>
diff --git a/res-common/values-sv/strings.xml b/res-common/values-sv/strings.xml
new file mode 100644
index 0000000..efc82ba
--- /dev/null
+++ b/res-common/values-sv/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texten har kopierats"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopiera till Urklipp"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Ring <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Ring hem"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Ring mobilen"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ring arbete"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ring upp arbetsfax"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ring upp hemfax"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Ring personsökare"</string>
+    <string name="call_other" msgid="4472141328347894937">"Ring"</string>
+    <string name="call_callback" msgid="687494744634190411">"Ring upp återuppringningsnummer"</string>
+    <string name="call_car" msgid="9078083109758282133">"Ring bilen"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Ring företag"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Ring upp ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Ring upp primärt nummer"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Ring upp fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Ring radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Ring upp telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Ring upp TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ring upp jobbmobil"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ring upp jobbpersonsökare"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Ring <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Ring upp MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ring)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Skicka SMS till <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Skicka SMS till hem"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Skicka SMS till mobil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Skicka SMS till arbete"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Skicka SMS till arbetsfax"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Skicka SMS till hemfax"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Skicka SMS till personsökare"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Skicka SMS till återuppringningsnummer"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Skicka SMS till bil"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Skicka SMS till företag"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Skicka SMS till ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Skicka SMS till primärt nummer"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Skicka SMS till fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Skicka SMS till radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Skicka SMS till telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Skicka SMS till TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Skicka SMS till jobbmobil"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Skicka SMS till jobbpersonsökare"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Skicka SMS till <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Skicka SMS till MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (meddelande)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Ring videosamtal"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vill du rensa listan?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Du rensar listan över personer som du kontaktar ofta i apparna Kontakter och Telefon. E-postappar tvingas lära sig dina mottagarinställningar från början."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Listan rensas …"</string>
+    <string name="status_available" msgid="4832569677396634846">"Tillgänglig"</string>
+    <string name="status_away" msgid="6267905184545881094">"Borta"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Upptagen"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontakter"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Annan"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Katalog"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Jobbkatalog"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Alla kontakter"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Söker ..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Fler än <xliff:g id="COUNT">%d</xliff:g> hittades."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Inga kontakter"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hittades</item>
+      <item quantity="one">1 hittades</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Snabbkontakt för <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Inget namn)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Kontaktar ofta"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Visa kontakt"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Alla kontakter med telefonnummer"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Kontakter i jobbprofilen"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Visa uppdateringar"</string>
+    <string name="account_phone" msgid="325867897209266837">"Enhet"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Namn"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Smeknamn"</string>
+    <string name="full_name" msgid="885420216812981202">"Namn"</string>
+    <string name="name_given" msgid="4153709115654909377">"Förnamn"</string>
+    <string name="name_family" msgid="5317387657540738981">"Efternamn"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Namnprefix"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Mellannamn"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Namnsuffix"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetiskt namn"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetiskt förnamn"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetiskt mellannamn"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetiskt efternamn"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-post"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adress"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Chatt"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Organisation"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Relation"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Särskilt datum"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adress"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Företag"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Befattning"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Kommentarer"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Webbplats"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketter"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-postadress – hem"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Skicka e-post till mobil"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-postadress – arbete"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-post"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Skicka e-post till <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"E-post"</string>
+    <string name="postal_street" msgid="881349814077356134">"Gatuadress"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Postbox"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Område"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Ort"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Delstat"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Postnummer"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Land"</string>
+    <string name="map_home" msgid="1221397355014741634">"Visa hemadress"</string>
+    <string name="map_work" msgid="9015981646907637207">"Visa jobbadress"</string>
+    <string name="map_other" msgid="55098598855607997">"Visa adress"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Visa adress, <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Chatta med AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Chatta med Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Chatta med Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Chatta med Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Chatta med QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Chatta med Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Chatta med ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Chatta med Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chatta"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ta bort"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Expandera eller komprimera namnfält"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Expandera eller komprimera fonetiska namnfält"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Alla kontakter"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Stjärnmärkta"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Anpassa"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Alla andra kontakter"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Alla kontakter"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Ta bort synkgrupp"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Lägg till synkgrupp"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Fler grupper …"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Om du tar bort <xliff:g id="GROUP">%s</xliff:g> från synkroniseringen tas även kontakter som inte tillhör grupper bort från synkroniseringen."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Sparar visningsalternativ …"</string>
+    <string name="menu_done" msgid="32470053723443112">"Klar"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Avbryt"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Anpassad vy"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Spara importerade kontakter i:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Importera från SIM-kort"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Importera från SIM-kort <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Importera från SIM-kort <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Importera från VCF-fil"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Vill du avbryta importen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Vill du avbryta exporten av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Kunde ej avbryta import/export av vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Okänt fel."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Det gick inte att öppna <xliff:g id="FILE_NAME">%s</xliff:g>: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Det gick inte att starta exportverktyget: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Det finns ingen kontakt att exportera."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Du har inaktiverat en behörighet som krävs."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Ett fel inträffade under exporten: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Det obligatoriska filnamnet är för långt (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O-fel"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Det finns inte tillräckligt med minne. Filen kan vara för stor."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Det gick inte att analysera vCard av okänd anledning."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Formatet stöds inte."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Det gick inte att samla in metainformation för de angivna vCard-filerna."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"En eller flera filer kunde inte importeras (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> har exporterats."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontakterna har exporterats."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontakterna har exporterats. Klicka på aviseringen om du vill dela kontakterna."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Tryck här om du vill dela kontakterna."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Exporten av <xliff:g id="FILENAME">%s</xliff:g> avbröts."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontaktuppgifter exporteras"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontaktuppgifterna exporteras."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Det gick inte att hämta databasinformation."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Det finns inga kontakter att exportera. Om du har kontakter på mobilen kanske vissa dataleverantörer inte tillåter att kontakterna exporteras från mobilen."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard-kompositören initierades inte korrekt."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Kunde inte exportera"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontaktuppgifterna exporterades inte.\nOrsak: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Importerar <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Det gick inte att läsa vCard-data"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Inläsningen av vCard-data avbröts"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard-filen <xliff:g id="FILENAME">%s</xliff:g> har importerats"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Importen av <xliff:g id="FILENAME">%s</xliff:g> avbröts"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> importeras snart."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Filen kommer snart att importeras."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Begäran om vCard-import avvisades. Försök igen vid ett senare tillfälle."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> exporteras snart."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Filen kommer snart att exporteras."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontakterna exporteras inom kort."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Begäran om vCard-export avvisades. Försök igen vid ett senare tillfälle."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard-fil(er) cachelagras till en lokal tillfällig lagringsenhet. Den faktiska importen börjar snart."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Det gick inte att importera vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Mott. v. NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Vill du exportera kontakter?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Cachelagrar"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Importerar <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Exportera till VCF-fil"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sortera efter"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Förnamn"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Efternamn"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Namnformat"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Förnamn först"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Efternamn först"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Konton"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Standardkonto för nya kontakter"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Synkronisera metadata för kontakter [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Synkronisera metadata för kontakter"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mina uppgifter"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Konfigurera profilen"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Om Kontakter"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Inställningar"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Dela synliga kontakter"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Det gick inte att dela synliga kontakter."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Dela favoritkontakterna"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Dela alla kontakter"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Det gick inte att dela kontakterna."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Importera/exportera kontakter"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Importera kontakter"</string>
+    <string name="share_error" msgid="665756457151793108">"Den här kontakten kan inte delas."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Det finns inga kontakter att dela."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Sök"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Kontakter som ska visas"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Kontakter som ska visas"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Definiera anpassad vy"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Spara"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Sök efter kontakter"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoriter"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Inga kontakter."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Rensa listan över kontakter"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Välj SIM-kort"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Hantera konton"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Importera/exportera"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Blockerade nummer"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"avbryt sökning"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Rensa sökning"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Visningsalternativ för kontakter"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Konto"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Använd alltid för samtal"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ring med"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Ring med anteckning"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Gör en anteckning som skickas när du ringer …"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"SKICKA OCH RING"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> olästa poster. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> oläst post. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Programversion"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Licenser för öppen källkod"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Licensinformation för programvara med öppen källkod"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Sekretesspolicy"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Användarvillkor"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Licenser för öppen källkod"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Det gick inte att öppna webbadressen."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> har markerats"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> har inte markerats"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Ring ett videosamtal"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Ta bort"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellips"</string>
+</resources>
diff --git a/res-common/values-sw-sw600dp/strings.xml b/res-common/values-sw-sw600dp/strings.xml
new file mode 100644
index 0000000..fc23eb8
--- /dev/null
+++ b/res-common/values-sw-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Kifaa"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Hakuna anwani za kuhamishwa.  Kama una anwani kwenye kompyuta yako kibao, baadhi ya watoa huduma za data huenda wasiruhusu anwani kuhamishwa kutoka kwenye kompyuta yako kibao."</string>
+</resources>
diff --git a/res-common/values-sw/strings.xml b/res-common/values-sw/strings.xml
new file mode 100644
index 0000000..7dead88
--- /dev/null
+++ b/res-common/values-sw/strings.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Maandishi yamenakiliwa"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Nakili kwenye ubao wa kunakili"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Pia simu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Piga simu nyumbani"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Pigia simu ya mkononi"</string>
+    <string name="call_work" msgid="8299062439076337075">"Piga simu kazini"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ipigie simu kipepesi cha kazini"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Ipigie simu kipepesi cha nyumbani"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Ipigie peja simu"</string>
+    <string name="call_other" msgid="4472141328347894937">"Piga simu"</string>
+    <string name="call_callback" msgid="687494744634190411">"Mpigie simu aliyepiga"</string>
+    <string name="call_car" msgid="9078083109758282133">"Piga simu ya gari"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Pigia simu kuu ya kampuni"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Piga simu kwa ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Piga simu kuu"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Ipigie kipepesi simu"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Piga simu redioni"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Piga simu kwa teleksi"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Piga simu TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ipigie simu ya mkononi ya kazini"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ipigie peja ya kazini"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Piga simu <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Piga simu kwa MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Piga)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Tumia ujumbe wa maandishi kwa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Tuma ujumbe wa maandishi nyumbani"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Tumia simu ya mkononi ujumbe wa maandishi"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Tuma ujumbe wa maandishi kazini"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Tumia ujumbe kwenda kipepesi cha kazini"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Tuma ujumbe kwenda kipepesi ch nyumbani"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Tumia peja ujumbe wa maandishi"</string>
+    <string name="sms_other" msgid="910895193552957097">"Tuma ujumbe wa maandishi"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Tuma ujumbe wa maandishi kwa aliyepiga"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Tuma ujumbe kwa gari"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Tuma ujumbe wa maandishi kwenda simu kuu ya kampuni"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Tumia ISDN ujumbe wa maandishi"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Tumia simu kuu ujumbe wa maandishi"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Tuma ujumbe kwenda katika kipepesi"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Tuma ujumbe wa maandishi redioni"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Tumia teleksi ujumbe wa maandishi"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Tumia TTY/TDD ujumbe wa maandishi"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Itumie simu ya mkononi ya kazini ujumbe"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Itumie peja ya kazini ya kazini ujumbe"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Tuma ujumbe wa maandishi kwa <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Tumia MMS ujmbe wa maandishi"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Tuma Ujumbe)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Piga Hangout ya video"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Futa unaowasiliana nao mara kwa mara?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Utafuta orodha ya unaowasiliana nao mara kwa mara katika programu za Anwani na Simu, na ulazimishe programu za barua pepe zitambue mapendeleo yako ya anwani kutoka mwanzo."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Inafuta unaowasiliana nao mara kwa mara..."</string>
+    <string name="status_available" msgid="4832569677396634846">"Inapatikana"</string>
+    <string name="status_away" msgid="6267905184545881094">"Mbali"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ana shughuli"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Anwani"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Kingine"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Saraka"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Anwani za kazi"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Anwani zote"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Inatafuta…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Zaidi ya <xliff:g id="COUNT">%d</xliff:g> zimepatikana."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Hakuna anwani"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">Zimepatikana <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Imepatikana 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Anwani ya haraka ya  <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Hakuna jina)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Unaowasiliana nao zaidi"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Angalia anwani"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Anwani zote zilizo na nambari ya simu"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Anwani za watu wa kazini"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Ona sasisho"</string>
+    <string name="account_phone" msgid="325867897209266837">"Kifaa"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Jina"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Lakabu"</string>
+    <string name="full_name" msgid="885420216812981202">"Jina"</string>
+    <string name="name_given" msgid="4153709115654909377">"Jina la kwanza"</string>
+    <string name="name_family" msgid="5317387657540738981">"Jina la mwisho"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Herufi za kwanza za jina"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Jina la kati"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Herufi za mwisho za jina"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Jina la kifonetiki"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Anza na jina kifonetiki"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Jina la kati kifonetiki"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Jina la mwisho kifonetiki"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Simu"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Barua pepe"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Anwani"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Ujumbe wa Papo Hapo"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Shirika"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Uhusiano"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Tarehe maalum"</string>
+    <string name="sms" msgid="8086289395154598654">"SMS, (Ujumbe wa maandishi)"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Anwani"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Kampuni"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Jina"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Madokezo"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Tovuti"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Lebo"</string>
+    <string name="email_home" msgid="2230967805906450693">"Tuma barua pepe nyumbani"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Tuma barua pepe kwenye simu ya mkononi"</string>
+    <string name="email_work" msgid="7065971921227432400">"Tuma barua pepe kazini"</string>
+    <string name="email_other" msgid="4601881243553289615">"Tuma barua pepe"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Tuma barua pepe kwenye <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Barua pepe"</string>
+    <string name="postal_street" msgid="881349814077356134">"Barabara"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Sanduku la posta"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Mtaa"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Mji"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Jimbo"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Msimbo wa posta"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Nchi"</string>
+    <string name="map_home" msgid="1221397355014741634">"Tazama anwani ya nyumbani"</string>
+    <string name="map_work" msgid="9015981646907637207">"Tazama anwani ya kazini"</string>
+    <string name="map_other" msgid="55098598855607997">"Tazama anwani"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Tazama anwani ya <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Piga gumzo kutumia AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Piga gumzo kutumia Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Piga gumzo kutumia Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Piga gumzo kutumia Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Piga gumzo kutumia QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Piga gumzo kutumia Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Piga gumzo kutumia ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Piga gumzo kutumia Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Gumzo"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"futa"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Panua au ukunje sehemu za jina"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Panua au ukunje sehemu za majina ya kifonetiki"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Anwani zote"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Yenye nyota"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Badilisha kukufaa"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Anwani"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Anwani zingine zote"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Anwani zote"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Ondoa kikundi cha ulinganishaji"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Ongeza kikundi kilicholinganishwa"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Vikundi zaidi..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Kuondoa \"<xliff:g id="GROUP">%s</xliff:g>\" \"kutoka kwenye ulinganishaji pia kutaondoa anwani zozote zisizo katika kundi kutoka kwenye ulinganishaji."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Inahifadhi chaguo za mwonyesho..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Umekamilisha"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Ghairi"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Mwonekano maalum"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Hifadhi anwani zinazoingizwa kwenye:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Ingiza kutoka SIM kadi"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Leta kutoka SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Leta kutoka SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Leta kutoka faili ya .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Ghairi uhamisho wa <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Ighairi uhamisho wa <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Haikuweza kughairi uingizaji/uhamishaji wa vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Hitilafu isiyojulikana."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Haikuweza kufungua \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Haikuweza kuanzisha kihamishaji: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Hakuna anwani inayoweza kuhamishwa."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Umezima idhini inayohitajika."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Hitilafu imetokea wakati wa uhamisho: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Jina la faili linalohitajika ni ndefu sana (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Hitilafu ya I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Hakuna kumbukumbu ya kutosha. Faili inaweza kuwa kubwa mno."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Haikuweza kuchanganua vCard kwa sababu isiyotarajiwa."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Muundo huu hautumiki."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Haikuweza kukusanya maelezo meta ya faili zilizotolewa za vCard."</string>
+    <!-- String.format failed for translation -->
+    <!-- no translation found for fail_reason_failed_to_read_files (9213844535907986665) -->
+    <skip />
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Imemaliza kuhamisha <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Imekamilisha kuhamisha anwani."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Imemaliza kuhamisha anwani, bofya kipengele cha arifa ili kushiriki anwani."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Gonga ili ushiriki anwani."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Kuhamisha <xliff:g id="FILENAME">%s</xliff:g> kumeghairiwa."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Inahamisha data ya anwani"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Inahamisha data ya anwani."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Haikupata maelezo ya hifadhidata."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Hakuna anwani zinazohamishika. Kama una anwani kwenye simu yako, baadhi ya watoa huduma za data hawawezi kuruhusu anwani kuhamishwa kutoka kwenye simu."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Kitunzi cha vCard hakikuanza vizuri."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Isingehamishika"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Data ya anwani haikuhamishwa.\nKwa sababu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Inaleta <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Haikuweza kusoma data ya vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Kusoma data ya VCard kumeghairiwa"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Imemaliza kuleta <xliff:g id="FILENAME">%s</xliff:g> ya vCard"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Kuleta <xliff:g id="FILENAME">%s</xliff:g> kumeghairiwa"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> italetwa hivi karibuni."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Faili italetwa hivi karibuni."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Ombi la kuleta vCard limekataliwa. Tafadhali jaribu baadaye."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> itahamishwa baada ya muda mfupi."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Faili itahamishwa baada ya dakika chache."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Itahamisha anwani baada ya muda mfupi."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Ombi la kuhamishwa kwa vCard limekataliwa. Jaribu tena baadaye."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"anwani"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Vcard Inaakibisha ndani ya hifadhi ya muda mfupi. Uhamisho halisi utaanza hivi karibuni."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Haikuweza kuleta vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Anwani imepokewa kupitia NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Anwani Zihamishwe?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Inaakibisha"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Inaleta <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Tuma kwenye faili ya .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Panga kulingana na"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Jina la kwanza"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Jina la mwisho"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Mpangilio wa majina"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Anza na jina la kwanza"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Anza na jina la mwisho"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Akaunti"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Akaunti ya msingi ya anwani mpya"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Sawazisha metadata ya anwani [SHIRIKI KATIKA JARIBIO LA KINDANI]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Sawazisha metadata ya anwani"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Maelezo yangu"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Weka wasifu wako"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Kuhusu Anwani"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Mipangilio"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Shiriki anwani zinazoonekana"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Imeshindwa kushiriki anwani zinazoonekana."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Shiriki anwani unazopenda"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Shiriki anwani zote"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Imeshindwa kushiriki anwani."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Ingiza au uhamishe anwani"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Ingiza anwani"</string>
+    <string name="share_error" msgid="665756457151793108">"Anwani hii haiwezi kushirikiwa."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Hakuna anwani za kushiriki."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Tafuta"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Anwani za kuonyesha"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Anwani za kuonyesha"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Bainisha mwonekano maalum"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Hifadhi"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Tafuta anwani"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Vipendwa"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Hakuna anwani."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Futa za mara kwa mara"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Chagua SIM kadi"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Dhibiti akaunti"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Ingiza au uhamishe"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Nambari zilizozuiwa"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"kupitia <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> kupitia <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"acha kutafuta"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Futa utafutaji"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Chaguo za onyesho la anwani"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Akaunti"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Tumia hii kwa simu wakati wote"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Piga simu ukitumia"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Piga simu inayoambatana na dokezo"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Andika dokezo litakaloambatana na simu utakayopiga ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"TUMA na UPIGE SIMU"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. Ujumbe <xliff:g id="COUNT_3">%2$d</xliff:g> ambao haujasomwa. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. Ujumbe <xliff:g id="COUNT_1">%2$d</xliff:g> ambao haujasomwa. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Nambari ya toleo"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Leseni za programu huria"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Maelezo ya leseni ya programu huria"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Sera ya faragha"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Sheria na masharti"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Leseni za programu huria"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Imeshindwa kufungua url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> imeteuliwa"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> haijateuliwa"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Anzisha Hangout ya Video"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Futa"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Alama ya Dukuduku"</string>
+</resources>
diff --git a/res-common/values-sw600dp-land/integers.xml b/res-common/values-sw600dp-land/integers.xml
new file mode 100644
index 0000000..bd9eb0e
--- /dev/null
+++ b/res-common/values-sw600dp-land/integers.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2012 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>
+    <integer name="contact_tile_column_count_in_favorites">3</integer>
+
+    <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
+    <integer name="snippet_length_before_tokenize">20</integer>
+</resources>
diff --git a/res-common/values-sw600dp/dimens.xml b/res-common/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..8a6f799
--- /dev/null
+++ b/res-common/values-sw600dp/dimens.xml
@@ -0,0 +1,35 @@
+<!--
+  ~ Copyright (C) 2012 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>
+    <dimen name="detail_item_side_margin">0dip</dimen>
+
+    <dimen name="contact_browser_list_header_left_margin">@dimen/list_visible_scrollbar_padding</dimen>
+    <dimen name="contact_browser_list_header_right_margin">24dip</dimen>
+    <dimen name="contact_browser_list_top_margin">16dip</dimen>
+
+    <!-- End margin of the account filter header icon -->
+    <dimen name="contact_browser_list_header_icon_right_margin">22dp</dimen>
+    <dimen name="contact_browser_list_header_icon_right_margin_alt">24dp</dimen>
+
+    <dimen name="contact_filter_list_item_padding_start">24dp</dimen>
+    <dimen name="contact_filter_left_margin">16dp</dimen>
+
+    <!-- Right margin of the floating action button -->
+    <dimen name="floating_action_button_margin_right">32dp</dimen>
+    <!-- Bottom margin of the floating action button -->
+    <dimen name="floating_action_button_margin_bottom">32dp</dimen>
+</resources>
diff --git a/res-common/values-sw600dp/integers.xml b/res-common/values-sw600dp/integers.xml
new file mode 100644
index 0000000..5b1c92b
--- /dev/null
+++ b/res-common/values-sw600dp/integers.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2012 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>
+    <integer name="contact_tile_column_count_in_favorites">3</integer>
+
+    <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
+    <!-- Yikes, there is less space on a tablet!  This makes the search experience rather
+         poor. Another reason to get rid of the exist tablet layout. -->
+    <integer name="snippet_length_before_tokenize">15</integer>
+</resources>
diff --git a/res-common/values-sw600dp/strings.xml b/res-common/values-sw600dp/strings.xml
new file mode 100644
index 0000000..c9946f9
--- /dev/null
+++ b/res-common/values-sw600dp/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2012 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">
+
+    <!-- Title for data source when creating or editing a contact that doesn't
+         belong to a specific account.  This contact will only exist on the phone
+         and will not be synced. [CHAR LIMIT=20] -->
+    <string name="account_phone">Device</string>
+
+    <!-- This error message shown when the user actually have no contact
+         (e.g. just after data-wiping), or, data providers of the contact list prohibits their
+         contacts from being exported to outside world via vcard exporter, etc. [CHAR LIMIT=NONE] -->
+    <string name="composer_has_no_exportable_contact">There are no exportable contacts. If you do have contacts on your tablet, some data providers may not allow the contacts to be exported from the tablet.</string>
+
+</resources>
diff --git a/res-common/values-sw720dp-land/integers.xml b/res-common/values-sw720dp-land/integers.xml
new file mode 100644
index 0000000..a83cdff
--- /dev/null
+++ b/res-common/values-sw720dp-land/integers.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2012 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>
+    <integer name="contact_tile_column_count_in_favorites">4</integer>
+
+    <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
+    <integer name="snippet_length_before_tokenize">30</integer>
+</resources>
diff --git a/res-common/values-sw720dp/integers.xml b/res-common/values-sw720dp/integers.xml
new file mode 100644
index 0000000..930adb3
--- /dev/null
+++ b/res-common/values-sw720dp/integers.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2012 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>
+    <integer name="contact_tile_column_count_in_favorites">2</integer>
+
+    <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
+    <integer name="snippet_length_before_tokenize">20</integer>
+</resources>
diff --git a/res-common/values-ta-rIN-sw600dp/strings.xml b/res-common/values-ta-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..82ad885
--- /dev/null
+++ b/res-common/values-ta-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"சாதனம்"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ஏற்றுமதி செய்யத்தக்க தொடர்புகள் இல்லை. டேப்லெட்டில் தொடர்புகள் இருந்தால், டேப்லெட்டிலிருந்து தொடர்புகளை ஏற்றுமதி செய்வதற்குச் சில தரவு வழங்குநர்கள் அனுமதிக்காமல் போகலாம்."</string>
+</resources>
diff --git a/res-common/values-ta-rIN/strings.xml b/res-common/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..e433cf1
--- /dev/null
+++ b/res-common/values-ta-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"உரை நகலெடுக்கப்பட்டது"</string>
+    <string name="copy_text" msgid="3424081789297978355">"கிளிப்போர்டுக்கு நகலெடு"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> மொபைல் எண்ணில் அழை"</string>
+    <string name="call_home" msgid="1479549630992276827">"வீட்டு தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"மொபைல் எண்ணில் அழை"</string>
+    <string name="call_work" msgid="8299062439076337075">"பணியிடத் தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"பணியிடத்தின் தொலைநகல் எண்ணில் அழை"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"வீட்டின் தொலைநகல் எண்ணில் அழை"</string>
+    <string name="call_pager" msgid="3038080882899955112">"பேஜர் எண்ணில் அழை"</string>
+    <string name="call_other" msgid="4472141328347894937">"அழை"</string>
+    <string name="call_callback" msgid="687494744634190411">"திரும்ப அழை"</string>
+    <string name="call_car" msgid="9078083109758282133">"காரின் மொபைல் எண்ணில் அழை"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"நிறுவனத்தின் முதன்மை மொபைல் எண்ணில் அழை"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_main" msgid="4640261071249938558">"முதன்மைத் தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"தொலைநகல் எண்ணில் அழை"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ரேடியோ தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_telex" msgid="2909886619224843563">"டெலக்ஸ் எண்ணில் அழை"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"பணியிட மொபைல் எண்ணில் அழை"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"பணியிடத்தின் பேஜர் எண்ணில் அழை"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> ஐ அழை"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS தொலைபேசி எண்ணில் அழை"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (அழை)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> க்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_home" msgid="7765831490534280540">"வீட்டு தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"மொபைல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_work" msgid="3910570578912367742">"பணியிட தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"பணியிட தொலைநகல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"வீட்டு தொலைநகல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"பேஜர் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_other" msgid="910895193552957097">"உரை"</string>
+    <string name="sms_callback" msgid="728414485478941361">"அழைத்த எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_car" msgid="8543669230270954512">"காரின் தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"நிறுவனத்தின் முதன்மை மொபைல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_main" msgid="6815987840926184815">"முதன்மைத் தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"தொலைநகல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ரேடியோ தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"டெலக்ஸ் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD தொலைபேசி எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"பணியிட மொபைல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"பணியிட பேஜர் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> க்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS மொபைல் எண்ணிற்கு உரைச்செய்தி அனுப்பு"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (செய்தி அனுப்பு)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"வீடியோவில் அழை"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"அடிக்கடி தொடர்புகொண்ட தொடர்பை அழிக்கவா?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"தொடர்புகள் மற்றும் ஃபோன் பயன்பாடுகளில் உள்ள அடிக்கடி தொடர்பு கொண்டவர்களின் பட்டியல் அழிக்கப்பட்டு, தொடக்கத்திலிருந்து மீண்டும் உங்கள் முகவரியிடல் விருப்பத்தேர்வுகளை மின்னஞ்சல் பயன்பாடுகள் அறியும்படி செய்யப்படும்."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"அடிக்கடித் தொடர்புகொண்ட தொடர்பை அழிக்கிறது…"</string>
+    <string name="status_available" msgid="4832569677396634846">"இருக்கிறார்"</string>
+    <string name="status_away" msgid="6267905184545881094">"வெளியே"</string>
+    <string name="status_busy" msgid="7111912905211403545">"பணிமிகுதி"</string>
+    <string name="contactsList" msgid="7140022347217602605">"தொடர்புகள்"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"பிற"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"கோப்பகம்"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"பணிக் கோப்பகம்"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"எல்லா தொடர்புகளும்"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"தேடுகிறது..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> க்கும் மேற்பட்டவை கண்டறியப்பட்டன."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"தொடர்புகள் இல்லை"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> தொடர்புகள் உள்ளன</item>
+      <item quantity="one">1 தொடர்பு உள்ளது</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> க்கான விரைவு தொடர்பு"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(பெயர் இல்லை)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"அடிக்கடி தொடர்புகொண்டவர்கள்"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"தொடர்பைக் காட்டு"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"மொபைல் எண்களுடனான எல்லா தொடர்புகளும்"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"பணிச் சுயவிவரத் தொடர்புகள்"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"புதுப்பிப்புகளைக் காட்டு"</string>
+    <string name="account_phone" msgid="325867897209266837">"சாதனம்"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"பெயர்"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"செல்லப்பெயர்"</string>
+    <string name="full_name" msgid="885420216812981202">"பெயர்"</string>
+    <string name="name_given" msgid="4153709115654909377">"முதல் பெயர்"</string>
+    <string name="name_family" msgid="5317387657540738981">"இறுதிப் பெயர்"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"பெயரின் முன்னொட்டு"</string>
+    <string name="name_middle" msgid="3951610314424632183">"பெயரின் நடுப்பகுதி"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"பெயரின் பின்னொட்டு"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ஒலிப்புமுறை பெயர்"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ஒலிப்புமுறை முதல் பெயர்"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ஒலிப்புமுறையில் பெயரின் நடுப்பகுதி"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ஒலிப்புமுறை இறுதிப் பெயர்"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"தொலைபேசி"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"மின்னஞ்சல்"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"முகவரி"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"நிறுவனம்"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"உறவுமுறை"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"சிறப்புத் தேதி"</string>
+    <string name="sms" msgid="8086289395154598654">"உரைச் செய்தி"</string>
+    <string name="postal_address" msgid="7692926530081579786">"முகவரி"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"நிறுவனம்"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"தலைப்பு"</string>
+    <string name="label_notes" msgid="3997277594846722699">"குறிப்புகள்"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"இணையதளம்"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"லேபிள்கள்"</string>
+    <string name="email_home" msgid="2230967805906450693">"வீட்டு மின்னஞ்சல் முகவரிக்கு மின்னஞ்சல் அனுப்பு"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"மொபைல் மின்னஞ்சல் முகவரிக்கு மின்னஞ்சல் அனுப்பு"</string>
+    <string name="email_work" msgid="7065971921227432400">"பணியிட மின்னஞ்சல் முகவரிக்கு மின்னஞ்சல் அனுப்பு"</string>
+    <string name="email_other" msgid="4601881243553289615">"மின்னஞ்சல்"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g> க்கு மின்னஞ்சல் அனுப்பு"</string>
+    <string name="email" msgid="5624424151176351591">"மின்னஞ்சல்"</string>
+    <string name="postal_street" msgid="881349814077356134">"தெரு"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"அஞ்சல் பெட்டி"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"சுற்றுப்புறங்கள்"</string>
+    <string name="postal_city" msgid="3173008531169519309">"நகரம்"</string>
+    <string name="postal_region" msgid="1695206048198921115">"மாநிலம்"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ஜிப் குறியீடு"</string>
+    <string name="postal_country" msgid="3988452247038791892">"நாடு"</string>
+    <string name="map_home" msgid="1221397355014741634">"வீட்டு முகவரியைக் காட்டு"</string>
+    <string name="map_work" msgid="9015981646907637207">"பணியிட முகவரியைக் காட்டு"</string>
+    <string name="map_other" msgid="55098598855607997">"முகவரியைக் காட்டு"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> முகவரியைக் காட்டு"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM இல் அரட்டையடி"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live இல் அரட்டையடி"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo இல் அரட்டையடி"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype இல் அரட்டையடி"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ இல் அரட்டையடி"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk இல் அரட்டையடி"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ இல் அரட்டையடி"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber இல் அரட்டையடி"</string>
+    <string name="chat" msgid="6297650784873558837">"அரட்டை"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"நீக்கு"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"பெயர் புலங்களை விரிவுப்படுத்து அல்லது சுருக்கு"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ஒலிப்புமுறை பெயர் புலங்களை விரி அல்லது சுருக்கு"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"எல்லா தொடர்புகளும்"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"நட்சத்திரமிட்டது"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"தனிப்பயனாக்கு"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"தொடர்பு"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"பிற எல்லா தொடர்புகளும்"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"எல்லா தொடர்புகளும்"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"ஒத்திசைவுக் குழுவை அகற்று"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"ஒத்திசைவு குழுவைச் சேர்"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"மேலும் குழுக்கள்…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"ஒத்திசைவிலிருந்து \"<xliff:g id="GROUP">%s</xliff:g>\" ஐ அகற்றுவது ஒத்திசைவில் உள்ள குழுவாக்கப்படாத தொடர்புகளும் எதையும் அகற்றும்."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"காட்சி விருப்பங்களைச் சேமிக்கிறது…"</string>
+    <string name="menu_done" msgid="32470053723443112">"முடிந்தது"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"ரத்துசெய்"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"தனிப்பயனாக்கிய காட்சி"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"இறக்கிய தொடர்புகளை இதில் சேமி:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"சிம் கார்டிலிருந்து இறக்குமதிசெய்"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> என்ற SIM இல் இருந்து இறக்குமதிசெய்"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> என்ற SIM இல் இருந்து இறக்குமதிசெய்"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf கோப்பிலிருந்து இறக்கு"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> இன் இறக்குமதியை ரத்துசெய்யவா?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> இன் ஏற்றுமதியை ரத்துசெய்யவா?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard இன் இறக்குமதி/ஏற்றுமதியை ரத்துசெய்ய முடியவில்லை"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"தெரியாத பிழை."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ஐத் திறக்க முடியவில்லை: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ஏற்றுமதியைத் தொடங்க முடியவில்லை: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ஏற்றுமதி செய்யக்கூடிய தொடர்பு இல்லை."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"தேவைப்படும் அனுமதியை முடக்கியுள்ளீர்கள்."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"ஏற்றுமதி செய்யும்போது பிழை: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"தேவையான கோப்பின் பெயர் மிகவும் நீளமாக உள்ளது (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O பிழை"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"போதுமான நினைவகம் இல்லை. கோப்பு மிகவும் பெரியதாக இருக்கலாம்."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"எதிர்பாராதவிதமாக vCard ஐப் பாகுபடுத்த முடியவில்லை."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"வடிவம் ஆதரிக்கப்படவில்லை."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"வழங்கப்பட்ட vCard கோப்பின்(களின்) மெட்டா தகவலைச் சேகரிக்க முடியவில்லை."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ஒன்று அல்லது அதற்கு மேற்பட்ட கோப்புகளை ஏற்றுமதி செய்ய முடியவில்லை (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> ஐ ஏற்றுமதி செய்வது முடிந்தது."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"தொடர்புகளை ஏற்றுவது முடிந்தது."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"தொடர்புகள் ஏற்றப்பட்டன. தொடர்புகளைப் பகிர, அறிவிப்பைக் கிளிக் செய்யவும்."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"தொடர்புகளைப் பகிர, தட்டவும்."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> ஐ ஏற்றுமதி செய்வது ரத்துசெய்யப்பட்டது."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"தொடர்பு தரவை ஏற்றுமதி செய்கிறது"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"தொடர்புத் தரவு ஏற்றப்படுகிறது."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"தரவுத்தளத் தகவலைப் பெற முடியவில்லை."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ஏற்றுமதி செய்யத்தக்க தொடர்புகள் இல்லை. மொபைலில் தொடர்புகள் இல்லை எனில், மொபைலிலிருந்து தொடர்புகளை ஏற்றுமதி செய்வதற்குச் சில தரவு வழங்குநர்கள் அனுமதிக்காமல் போகலாம்."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard தொகுப்பான் முறையாகத் தொடங்கவில்லை."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ஏற்றுமதி செய்ய முடியவில்லை"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"தொடர்பு தரவு ஏற்றுமதி செய்யப்படவில்லை.\nகாரணம்: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> ஐ இறக்குமதி செய்கிறது"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard தரவைப் படிக்க முடியவில்லை"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard தரவைப் படிப்பது ரத்துசெய்யப்பட்டது"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> ஐ இறக்குமதிசெய்வது முடிந்தது"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> ஐ இறக்குமதிசெய்வது ரத்துசெய்யப்பட்டது"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> விரைவில் இறக்குமதி செய்யப்படும்."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"கோப்பு விரைவில் இறக்குமதி செய்யப்படும்."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard இன் இறக்குமதி கோரிக்கை நிராகரிக்கப்பட்டது. பிறகு முயற்சிக்கவும்."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> விரைவில் ஏற்றுமதி செய்யப்படும்."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"கோப்பு விரைவில் ஏற்றப்படும்."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"கூடிய விரைவில் தொடர்புகள் ஏற்றப்படும்."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard இன் ஏற்றுமதி கோரிக்கை நிராகரிக்கப்பட்டது. பிறகு முயற்சிக்கவும்."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"தொடர்பு"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(களை) ஐ அகச் சேமிப்பிடத்தில் தற்காலிகமாகச் சேமிக்கிறது. அசல் இறக்குமதி உடனடியாக தொடங்கப்படும்."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard ஐ இறக்குமதி செய்ய முடியவில்லை."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"NFC வழியாக தொடர்பு பெறப்பட்டது"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"தொடர்புகளை இறக்கவா?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"தற்காலிகமாகச் சேமித்தல்"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> ஐ இறக்குமதி செய்கிறது: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf கோப்பிற்கு ஏற்று"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"வரிசைப்படுத்து"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"முதல் பெயர்"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"இறுதிப் பெயர்"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"பெயர் வடிவம்"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"முதல் பெயர் முதலில்"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"இறுதிப் பெயர் முதலில்"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"கணக்குகள்"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"புதிய தொடர்புகளுக்கான இயல்பு கணக்கு"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"தொடர்பின் மீத்தரவை ஒத்திசை [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"தொடர்பின் மீத்தரவை ஒத்திசை"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"எனது தகவல்"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"உங்கள் சுயவிவரத்தை அமைக்கவும்"</string>
+    <string name="setting_about" msgid="3926137653588942297">"தொடர்புகள் விவரம்"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"அமைப்புகள்"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"தெரியும் தொடர்புகளைப் பகிர்"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"தெரியும் தொடர்புகளைப் பகிர்வதில் தோல்வி."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"பிடித்த தொடர்புகளைப் பகிர்"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"எல்லா தொடர்புகளையும் பகிர்"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"தொடர்புகளைப் பகிர முடியவில்லை."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"தொடர்புகளை இறக்கு/ஏற்று"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"தொடர்புகளை இறக்குமதி செய்தல்"</string>
+    <string name="share_error" msgid="665756457151793108">"தொடர்பைப் பகிர முடியவில்லை."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"பகிர்வதற்குத் தொடர்புகள் இல்லை."</string>
+    <string name="menu_search" msgid="7464453023659824700">"தேடு"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"காட்டுவதற்கான தொடர்புகள்"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"காட்டுவதற்கான தொடர்புகள்"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"தனிப்பயனாக்கிய காட்சியை வரையறை"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"சேமி"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"தொடர்புகளில் தேடுக"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"பிடித்தவை"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"தொடர்புகள் இல்லை."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"அடிக்கடி தொடர்புகொண்டவர்களை அழி"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"சிம் ஐத் தேர்ந்தெடுக்கவும்"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"கணக்குகளை நிர்வகி"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"இறக்கு/ஏற்று"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"தடுத்த எண்கள்"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> வழியாக"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> வழியாக <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"தேடுவதை நிறுத்து"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"தேடலை அழி"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"தொடர்பின் காட்சி விருப்பத்தேர்வு"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"கணக்கு"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"அழைப்புகளுக்கு எப்போதும் இதைப் பயன்படுத்து"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"இதன் மூலம் அழை"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"குறிப்புடன் அழைக்கவும்"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"அழைப்புடன் சேர்த்து அனுப்ப, குறிப்பை உள்ளிடவும்..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"அனுப்பு &amp; அழை"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. படிக்காதவை (<xliff:g id="COUNT_3">%2$d</xliff:g>). </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. படிக்காதது (<xliff:g id="COUNT_1">%2$d</xliff:g>). </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"பதிப்பு எண்"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ஓப்பன் சோர்ஸ் உரிமங்கள்"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ஓப்பன் சோர்ஸ் மென்பொருளுக்கான உரிம விவரங்கள்"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"தனியுரிமைக் கொள்கை"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"சேவை விதிமுறைகள்"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ஓப்பன் சோர்ஸ் உரிமங்கள்"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"urlஐத் திறக்க முடியவில்லை."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> தேர்ந்தெடுக்கப்பட்டது"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> தேர்ந்தெடுக்கப்படவில்லை"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"வீடியோ அழைப்பைச் செய்"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"நீக்கும் பொத்தான்"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"முப்புள்ளி"</string>
+</resources>
diff --git a/res-common/values-te-rIN-sw600dp/strings.xml b/res-common/values-te-rIN-sw600dp/strings.xml
new file mode 100644
index 0000000..acacbe5
--- /dev/null
+++ b/res-common/values-te-rIN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"పరికరం"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ఎగుమతి చేయదగిన పరిచయాలు ఏవీ లేవు. మీరు మీ టాబ్లెట్‌లో పరిచయాలు కలిగి ఉన్నప్పటికీ, కొందరు డేటా ప్రదాతలు పరిచయాలను టాబ్లెట్ నుండి ఎగుమతి చేయడానికి అనుమతించకపోవచ్చు."</string>
+</resources>
diff --git a/res-common/values-te-rIN/strings.xml b/res-common/values-te-rIN/strings.xml
new file mode 100644
index 0000000..c2bafa3
--- /dev/null
+++ b/res-common/values-te-rIN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"వచనం కాపీ చేయబడింది"</string>
+    <string name="copy_text" msgid="3424081789297978355">"క్లిప్‌బోర్డ్‌కు కాపీ చేయి"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g>కు కాల్ చేయండి"</string>
+    <string name="call_home" msgid="1479549630992276827">"ఇంటికి కాల్ చేయండి"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"మొబైల్‌కు కాల్ చేయండి"</string>
+    <string name="call_work" msgid="8299062439076337075">"కార్యాలయానికి కాల్ చేయండి"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"కార్యాలయ ఫ్యాక్స్‌కు కాల్ చేయండి"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"ఇంటి ఫ్యాక్స్‌కు కాల్ చేయండి"</string>
+    <string name="call_pager" msgid="3038080882899955112">"పేజర్‌కు కాల్ చేయండి"</string>
+    <string name="call_other" msgid="4472141328347894937">"కాల్ చేయండి"</string>
+    <string name="call_callback" msgid="687494744634190411">"కాల్‌బ్యాక్‌కు కాల్ చేయండి"</string>
+    <string name="call_car" msgid="9078083109758282133">"కారుకు కాల్ చేయండి"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"కంపెనీ ప్రధాన నంబర్‌కు కాల్ చేయండి"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDNకి కాల్ చేయండి"</string>
+    <string name="call_main" msgid="4640261071249938558">"ప్రధాన నంబర్‌కు కాల్ చేయండి"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"ఫ్యాక్స్‌కు కాల్ చేయండి"</string>
+    <string name="call_radio" msgid="9055749313292712021">"రేడియోకు కాల్ చేయండి"</string>
+    <string name="call_telex" msgid="2909886619224843563">"టెలెక్స్‌కు కాల్ చేయండి"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDDకి కాల్ చేయండి"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"కార్యాలయ మొబైల్‌కు కాల్ చేయండి"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"కార్యాలయ పేజర్‌కు కాల్ చేయండి"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g>కు కాల్ చేయండి"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMSకు కాల్ చేయండి"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (కాల్ చేయి)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g>కు వచనం పంపండి"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ఇంటికి వచనం పంపండి"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"మొబైల్‌కు వచనం పంపండి"</string>
+    <string name="sms_work" msgid="3910570578912367742">"కార్యాలయానికి వచనం పంపండి"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"కార్యాలయం ఫ్యాక్స్‌కు వచనం పంపండి"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ఇంటి ఫ్యాక్స్‌కు వచనం పంపండి"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"పేజర్‌కు వచనం పంపండి"</string>
+    <string name="sms_other" msgid="910895193552957097">"వచనం పంపండి"</string>
+    <string name="sms_callback" msgid="728414485478941361">"కాల్‌బ్యాక్‌కు వచనం పంపండి"</string>
+    <string name="sms_car" msgid="8543669230270954512">"కారుకు వచనం పంపండి"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"కంపెనీ ప్రధాన నంబర్‌కు వచనం పంపండి"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDNకి వచనం పంపండి"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ప్రధాన నంబర్‌కు వచనం పంపండి"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ఫ్యాక్స్‌కు వచనం పంపండి"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"రేడియోకు వచనం పంపండి"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"టెలెక్స్‌కు వచనం పంపండి"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDDకి వచనం పంపండి"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"కార్యాలయ మొబైల్‌కు వచనం పంపండి"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"కార్యాలయ పేజర్‌కు వచనం పంపండి"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g>కు వచనం పంపండి"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMSకు వచనం పంపండి"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (సందేశం పంపు)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"వీడియో కాల్ చేయి"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"తరచుగా సంప్రదించినవాటిని క్లియర్ చేయాలా?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"మీరు పరిచయాలు మరియు ఫోన్ అనువర్తనాల్లో తరచుగా సంప్రదించిన పరిచయాల జాబితాను తీసివేస్తారు మరియు స్క్రాచ్ నుండి మీ చిరునామా ప్రాధాన్యతలను తెలుసుకునేలా ఇమెయిల్ అనువర్తనాలను నిర్బంధిస్తారు."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"తరచుగా సంప్రదించినవాటిని క్లియర్ చేస్తోంది…"</string>
+    <string name="status_available" msgid="4832569677396634846">"అందుబాటులో ఉన్నారు"</string>
+    <string name="status_away" msgid="6267905184545881094">"దూరంగా ఉన్నారు"</string>
+    <string name="status_busy" msgid="7111912905211403545">"బిజీగా ఉన్నారు"</string>
+    <string name="contactsList" msgid="7140022347217602605">"పరిచయాలు"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"ఇతరం"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"డైరెక్టరీ"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"కార్యాలయ డైరెక్టరీ"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"అన్ని పరిచయాలు"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"శోధిస్తోంది..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> కంటే ఎక్కువ కనుగొనబడ్డాయి."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"పరిచయాలు లేవు"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> కనుగొనబడ్డాయి</item>
+      <item quantity="one">1 కనుగొనబడింది</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> కోసం శీఘ్ర సంప్రదింపు"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(పేరు లేదు)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"తరచుగా సంప్రదించబడినవి"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"పరిచయాన్ని వీక్షించండి"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"ఫోన్ నంబర్‌లు గల అన్ని పరిచయాలు"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"కార్యాలయ ప్రొఫైల్ పరిచయాలు"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"నవీకరణలను వీక్షించండి"</string>
+    <string name="account_phone" msgid="325867897209266837">"పరికరం"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"పేరు"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"మారుపేరు"</string>
+    <string name="full_name" msgid="885420216812981202">"పేరు"</string>
+    <string name="name_given" msgid="4153709115654909377">"మొదటి పేరు"</string>
+    <string name="name_family" msgid="5317387657540738981">"చివరి పేరు"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"పేరు ఆదిప్రత్యయం"</string>
+    <string name="name_middle" msgid="3951610314424632183">"మధ్య పేరు"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"పేరు అంత్యప్రత్యయం"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"ఫొనెటిక్ పేరు"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"ఫొనెటిక్ మొదటి పేరు"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ఫొనెటిక్ మధ్య పేరు"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"ఫొనెటిక్ చివరి పేరు"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"ఫోన్"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ఇమెయిల్"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"చిరునామా"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"సంస్థ"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"సంబంధం"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"ప్రత్యేక తేదీ"</string>
+    <string name="sms" msgid="8086289395154598654">"వచన సందేశం"</string>
+    <string name="postal_address" msgid="7692926530081579786">"చిరునామా"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"కంపెనీ"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"శీర్షిక"</string>
+    <string name="label_notes" msgid="3997277594846722699">"గమనికలు"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"వెబ్‌సైట్"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"లేబుల్‌లు"</string>
+    <string name="email_home" msgid="2230967805906450693">"ఇంటికి ఇమెయిల్ చేయండి"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"మొబైల్‌కు ఇమెయిల్ చేయండి"</string>
+    <string name="email_work" msgid="7065971921227432400">"కార్యాలయానికి ఇమెయిల్ చేయండి"</string>
+    <string name="email_other" msgid="4601881243553289615">"ఇమెయిల్ చేయండి"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g>కు ఇమెయిల్ చేయండి"</string>
+    <string name="email" msgid="5624424151176351591">"ఇమెయిల్ చేయండి"</string>
+    <string name="postal_street" msgid="881349814077356134">"వీధి"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO పెట్టె"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"పరిసరాలు"</string>
+    <string name="postal_city" msgid="3173008531169519309">"నగరం"</string>
+    <string name="postal_region" msgid="1695206048198921115">"రాష్ట్రం"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"జిప్ కోడ్"</string>
+    <string name="postal_country" msgid="3988452247038791892">"దేశం"</string>
+    <string name="map_home" msgid="1221397355014741634">"ఇంటి చిరునామాను వీక్షించండి"</string>
+    <string name="map_work" msgid="9015981646907637207">"కార్యాలయ చిరునామాను వీక్షించండి"</string>
+    <string name="map_other" msgid="55098598855607997">"చిరునామాను వీక్షించండి"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> చిరునామాను వీక్షించండి"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIMని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Liveని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahooని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skypeని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talkని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabberని ఉపయోగించి చాట్ చేయండి"</string>
+    <string name="chat" msgid="6297650784873558837">"చాట్ చేయండి"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"తొలగించు"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"పేరు ఫీల్డ్‌లను విస్తరింపజేయి లేదా కుదించు"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ఫొనెటిక్ పేరు ఫీల్డ్‌లను విస్తరింపజేస్తుంది లేదా కుదిస్తుంది"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"అన్ని పరిచయాలు"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"నక్షత్రం గుర్తు ఉన్నవి"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"అనుకూలీకరించండి"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"పరిచయం"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"అన్ని ఇతర పరిచయాలు"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"అన్ని పరిచయాలు"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"సమకాలీకరణ సమూహాన్ని తీసివేయి"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"సమకాలీకరణ సమూహాన్ని జోడించండి"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"మరిన్ని సమూహాలు…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"సమకాలీకరణ నుండి \"<xliff:g id="GROUP">%s</xliff:g>\"ని తీసివేయడం వలన సమకాలీకరణ నుండి సమూహం చేయబడని పరిచయాలు కూడా తీసివేయబడతాయి."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ప్రదర్శన ఎంపికలను సేవ్ చేస్తోంది…"</string>
+    <string name="menu_done" msgid="32470053723443112">"పూర్తయింది"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"రద్దు చేయి"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"అనుకూలీకృత వీక్షణ"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"దిగుమతి చేసిన పరిచయాలను దీనికి సేవ్ చేయి:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"సిమ్ కార్డు నుండి దిగుమతి చేయండి"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> SIM నుండి దిగుమతి చేయండి"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"<xliff:g id="SIM_NAME">%1$s</xliff:g> SIM నుండి దిగుమతి చేయండి"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf ఫైల్ నుండి దిగుమతి చేయి"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> యొక్క దిగుమతిని రద్దు చేయాలా?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> యొక్క ఎగుమతిని రద్దు చేయాలా?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"vCard దిగుమతి/ఎగుమతిని రద్దు చేయడం సాధ్యపడలేదు"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"తెలియని లోపం."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\"ని తెరవడం సాధ్యపడలేదు: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"ఎక్స్‌పోర్టర్‌ను ప్రారంభించడం సాధ్యపడలేదు: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ఎగమతి చేయగల పరిచయం లేదు."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"మీరు అవసరమయ్యే అనుమతిని నిలిపివేసారు."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"ఎగుమతి సమయంలో లోపం సంభవించింది: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"అవసరమైన ఫైల్ పేరు (\"<xliff:g id="FILENAME">%s</xliff:g>\") చాలా పెద్దదిగా ఉంది."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O లోపం"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"తగినంత మెమరీ లేదు. ఫైల్ చాలా పెద్దదిగా ఉండవచ్చు."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ఊహించని కారణంగా vCardను అన్వయించడం సాధ్యపడలేదు."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ఆకృతికి మద్దతు లేదు."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"అందించిన vCard ఫైల్(లు) యొక్క మెటా డేటా సమాచారాన్ని సేకరించడం సాధ్యపడలేదు."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ఒకటి లేదా అంతకంటే ఎక్కువ ఫైల్‌లను (%s) దిగుమతి చేయడం సాధ్యపడలేదు."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>ని ఎగుమతి చేయడం పూర్తయింది."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"పరిచయాలను ఎగుమతి చేయడం పూర్తయింది."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"పరిచయాలను ఎగుమతి చేయడం పూర్తయింది, పరిచయాలను భాగస్వామ్యం చేయడానికి నోటిఫికేషన్‌ను క్లిక్ చేయండి."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"పరిచయాలను భాగస్వామ్యం చేయడానికి నొక్కండి."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>ని ఎగుమతి చేయడం రద్దు చేయబడింది."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"పరిచయ డేటాను ఎగుమతి చేస్తోంది"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"పరిచయ డేటా ఎగుమతి చేయబడుతోంది."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"డేటాబేస్ సమాచారాన్ని పొందడం సాధ్యపడలేదు."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ఎగుమతి చేయదగిన పరిచయాలు ఏవీ లేవు. మీరు మీ ఫోన్‌లో పరిచయాలు కలిగి ఉన్నప్పటికీ, కొందరు డేటా ప్రదాతలు పరిచయాలను ఫోన్ నుండి ఎగుమతి చేయడానికి అనుమతించకపోవచ్చు."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard కంపోజర్ సరిగ్గా ప్రారంభించబడలేదు."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ఎగుమతి చేయడం సాధ్యపడలేదు"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"పరిచయ డేటా ఎగుమతి చేయబడలేదు.\nకారణం: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g>ని దిగుమతి చేస్తోంది"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard డేటాను చదవడం సాధ్యపడలేదు"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard డేటాను చదవడం రద్దయింది"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g>ని దిగుమతి చేయడం పూర్తయింది"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>ని దిగుమతి చేయడం రద్దయింది"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> కొద్దిసేపట్లో దిగుమతి చేయబడుతుంది."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ఫైల్ కొద్దిసేపట్లో దిగుమతి చేయబడుతుంది."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard దిగుమతి అభ్యర్థన తిరస్కరించబడింది. తర్వాత మళ్లీ ప్రయత్నించండి."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> కొద్దిసేపట్లో ఎగుమతి చేయబడుతుంది."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ఫైల్ కాసేపట్లో ఎగుమతి చేయబడుతుంది."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"పరిచయాలు త్వరలో ఎగుమతి చేయబడతాయి."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard ఎగుమతి అభ్యర్థన తిరస్కరించబడింది. తర్వాత మళ్లీ ప్రయత్నించండి."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"పరిచయం"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard(ల)ను స్థానిక తాత్కాలిక నిల్వకు కాష్ చేస్తోంది. అసలు దిగుమతి కొద్దిసేపట్లో ప్రారంభమవుతుంది."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCardని దిగుమతి చేయడం సాధ్యపడలేదు."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"పరిచయం NFC ద్వారా స్వీకరించబడింది"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"పరిచయాలను ఎగుమతి చేయాలా?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"కాష్ చేస్తోంది"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="TOTAL_NUMBER">%s</xliff:g>లో <xliff:g id="CURRENT_NUMBER">%s</xliff:g> దిగుమతి చేయబడుతోంది: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf ఫైల్‌కు ఎగుమతి చేయి"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ఇలా క్రమబద్ధీకరించు"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"మొదటి పేరు"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"చివరి పేరు"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"పేరు ఆకృతి"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ముందుగా మొదటి పేరు"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"ముందుగా చివరి పేరు"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"ఖాతాలు"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"కొత్త పరిచయాల కోసం డిఫాల్ట్ ఖాతా"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"పరిచయ మెటాడేటాను సమకాలీకరించు [డాగ్‌ఫుడ్]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"పరిచయ మెటాడేటాను సమకాలీకరించు"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"నా సమాచారం"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"మీ ప్రొఫైల్‌ను సెటప్ చేయండి"</string>
+    <string name="setting_about" msgid="3926137653588942297">"పరిచయాల గురించి"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"సెట్టింగ్‌లు"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"కనిపించే పరిచయాలను భాగస్వామ్యం చేయండి"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"కనిపించే పరిచయాలను భాగస్వామ్యం చేయడం విఫలమైంది."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"ఇష్టమైన పరిచయాలను భాగస్వామ్యం చేయి"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"పరిచయాలన్నీ భాగస్వామ్యం చేయి"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"పరిచయాలను భాగస్వామ్యం చేయడం విఫలమైంది."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"పరిచయాలను దిగుమతి/ఎగుమతి చేయండి"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"పరిచయాలను దిగుమతి చేయండి"</string>
+    <string name="share_error" msgid="665756457151793108">"ఈ పరిచయాన్ని భాగస్వామ్యం చేయడం సాధ్యపడదు."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"భాగస్వామ్యం చేయడానికి పరిచయాలు ఏవీ లేవు."</string>
+    <string name="menu_search" msgid="7464453023659824700">"శోధించు"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ప్రదర్శించాల్సిన పరిచయాలు"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ప్రదర్శించాల్సిన పరిచయాలు"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"అనుకూలీకృత వీక్షణను నిర్వచించండి"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"సేవ్ చేయి"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"పరిచయాలను శోధించండి"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"ఇష్టమైనవి"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"పరిచయాలు లేవు."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"తరచుగా ఉన్నవాటిని క్లియర్ చేయి"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"సిమ్ కార్డును ఎంచుకోండి"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"ఖాతాలను నిర్వహించు"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"దిగుమతి చేయి/ఎగుమతి చేయి"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"బ్లాక్ చేయబడిన నంబర్‌లు"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> ద్వారా"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> ద్వారా <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"శోధించడం ఆపివేయి"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"శోధనను క్లియర్ చేయండి"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"పరిచయ ప్రదర్శన ఎంపికలు"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"ఖాతా"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"కాల్‌ల కోసం ఎల్లప్పుడూ దీన్ని ఉపయోగించు"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"దీనితో కాల్ చేయండి"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"గమనికతో కాల్ చేయి"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"కాల్‌తో పాటు పంపడానికి గమనికను టైప్ చేయండి ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"పంపు &amp; కాల్ చేయి"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> చదవని అంశాలు. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> చదవని అంశం. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"బిల్డ్ సంస్కరణ"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ఓపెన్ సోర్స్ లైసెన్స్‌లు"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్ కోసం లైసెన్స్ వివరాలు"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"గోప్యతా విధానం"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"సేవా నిబంధనలు"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ఓపెన్ సోర్స్ లైసెన్స్‌లు"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"urlని తెరవడంలో విఫలమైంది."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ఎంచుకోబడింది"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> ఎంచుకోబడలేదు"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"వీడియో కాల్ చేస్తుంది"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"తొలగిస్తుంది"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"అధ్యాహారం"</string>
+</resources>
diff --git a/res-common/values-th-sw600dp/strings.xml b/res-common/values-th-sw600dp/strings.xml
new file mode 100644
index 0000000..b162527
--- /dev/null
+++ b/res-common/values-th-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"อุปกรณ์"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"ไม่มีรายชื่อติดต่อที่สามารถส่งออกได้ หากคุณมีรายชื่อติดต่ออยู่ในแท็บเล็ตของคุณจริงๆ อาจเป็นเพราะผู้ให้บริการข้อมูลบางรายไม่อนุญาตให้ส่งออกรายชื่อติดต่อจากแท็บเล็ต"</string>
+</resources>
diff --git a/res-common/values-th/strings.xml b/res-common/values-th/strings.xml
new file mode 100644
index 0000000..a2a5c4f
--- /dev/null
+++ b/res-common/values-th/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"คัดลอกข้อความแล้ว"</string>
+    <string name="copy_text" msgid="3424081789297978355">"คัดลอกไปยังคลิปบอร์ด"</string>
+    <string name="call_custom" msgid="2786306789889210756">"โทรหา <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"โทรเข้าบ้าน"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"โทรเข้ามือถือ"</string>
+    <string name="call_work" msgid="8299062439076337075">"โทรหาที่ทำงาน"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"โทรหาแฟกซ์ที่ทำงาน"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"โทรเข้าหมายเลขแฟกซ์ที่บ้าน"</string>
+    <string name="call_pager" msgid="3038080882899955112">"โทรหาเพจเจอร์"</string>
+    <string name="call_other" msgid="4472141328347894937">"โทร"</string>
+    <string name="call_callback" msgid="687494744634190411">"โทรหาหมายเลขติดต่อกลับ"</string>
+    <string name="call_car" msgid="9078083109758282133">"โทรเข้าโทรศัพท์ในรถ"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"โทรหาโทรศัพท์หลักของบริษัท"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"โทรหา ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"โทรเข้าโทรศัพท์หลัก"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"โทรเข้าหมายเลขแฟกซ์"</string>
+    <string name="call_radio" msgid="9055749313292712021">"โทรเข้าวิทยุ"</string>
+    <string name="call_telex" msgid="2909886619224843563">"โทรเข้าหมายเลขเทเล็กซ์"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"โทรหา TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"โทรเข้ามือถือที่ทำงาน"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"โทรเข้าเพจเจอร์ที่ทำงาน"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"โทรหา <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"โทรหา MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (โทร)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"ส่งข้อความถึง <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"ส่งข้อความเข้าโทรศัพท์บ้าน"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"ส่งข้อความเข้ามือถือ"</string>
+    <string name="sms_work" msgid="3910570578912367742">"ส่งข้อความถึงโทรศัพท์ที่ทำงาน"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"ส่งข้อความถึงแฟกซ์ที่ทำงาน"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"ส่งข้อความเข้าหมายเลขแฟกซ์บ้าน"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"ส่งข้อความถึงเพจเจอร์"</string>
+    <string name="sms_other" msgid="910895193552957097">"ข้อความ"</string>
+    <string name="sms_callback" msgid="728414485478941361">"ส่งข้อความถึงหมายเลขติดต่อกลับ"</string>
+    <string name="sms_car" msgid="8543669230270954512">"ส่งข้อความถึงรถยนต์"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"ส่งข้อความเข้าโทรศัพท์หลักของบริษัท"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ส่งข้อความถึง ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"ส่งข้อความถึงโทรศัพท์หลัก"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"ส่งข้อความถึงหมายเลขแฟกซ์"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ส่งข้อความถึงวิทยุ"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ส่งข้อความถึงเทเล็กซ์"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"ส่งข้อความถึง TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"ส่งข้อความถึงโทรศัพท์มือถือที่ทำงาน"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"ส่งข้อความเข้าเพจเจอร์ที่ทำงาน"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"ส่งข้อความถึง <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"ส่งข้อความถึง MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (ข้อความ)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ใช้แฮงเอาท์วิดีโอ"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"ล้างรายชื่อที่ติดต่อบ่อยไหม"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"คุณจะล้างรายชื่อของผู้ที่ติดต่อด้วยบ่อยๆ ในแอปพลิเคชัน Contacts  และ Phone และบังคับให้แอปพลิเคชันอีเมลเรียนรู้ค่ากำหนดที่อยู่ของคุณใหม่ตั้งแต่ต้น"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"กำลังล้างรายชื่อที่ติดต่อบ่อย…"</string>
+    <string name="status_available" msgid="4832569677396634846">"พร้อมใช้งาน"</string>
+    <string name="status_away" msgid="6267905184545881094">"ไม่อยู่"</string>
+    <string name="status_busy" msgid="7111912905211403545">"ไม่ว่าง"</string>
+    <string name="contactsList" msgid="7140022347217602605">"สมุดโทรศัพท์"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"อื่นๆ"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ไดเรกทอรี"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"ไดเรกทอรีที่ทำงาน"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"รายชื่อติดต่อทั้งหมด"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"กำลังค้นหา…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"พบมากกว่า <xliff:g id="COUNT">%d</xliff:g> รายการ"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"ไม่มีรายชื่อติดต่อ"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">พบ <xliff:g id="COUNT">%d</xliff:g> รายการ</item>
+      <item quantity="one">พบ 1 รายการ</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"สมุดโทรศัพท์ด่วนสำหรับ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(ไม่มีชื่อ)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"ติดต่อบ่อยครั้ง"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"ดูรายชื่อติดต่อ"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"รายชื่อติดต่อทั้งหมดที่มีหมายเลขโทรศัพท์"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"รายชื่อติดต่อในโปรไฟล์งาน"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"ดูการอัปเดต"</string>
+    <string name="account_phone" msgid="325867897209266837">"อุปกรณ์"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"ชื่อ"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"ชื่อเล่น"</string>
+    <string name="full_name" msgid="885420216812981202">"ชื่อ"</string>
+    <string name="name_given" msgid="4153709115654909377">"ชื่อ"</string>
+    <string name="name_family" msgid="5317387657540738981">"นามสกุล"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"คำนำหน้าชื่อ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"ชื่อกลาง"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"คำต่อท้ายชื่อ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"คำอ่านชื่อ"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"การออกเสียงชื่อ"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"ชื่อกลางแบบออกเสียง"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"การออกเสียงนามสกุล"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"โทรศัพท์"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"อีเมล"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"ที่อยู่"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"องค์กร"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"ความเกี่ยวข้อง"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"วันที่พิเศษ"</string>
+    <string name="sms" msgid="8086289395154598654">"ข้อความ"</string>
+    <string name="postal_address" msgid="7692926530081579786">"ที่อยู่"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"บริษัท"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"ชื่อ"</string>
+    <string name="label_notes" msgid="3997277594846722699">"หมายเหตุ"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"เว็บไซต์"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"ป้ายกำกับ"</string>
+    <string name="email_home" msgid="2230967805906450693">"ส่งไปที่อีเมลส่วนตัว"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"ส่งอีเมลเข้ามือถือ"</string>
+    <string name="email_work" msgid="7065971921227432400">"ส่งอีเมลถึงที่ทำงาน"</string>
+    <string name="email_other" msgid="4601881243553289615">"อีเมล"</string>
+    <string name="email_custom" msgid="5777583741581538870">"ส่งอีเมลถึง <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"อีเมล"</string>
+    <string name="postal_street" msgid="881349814077356134">"ถนน"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"ตู้ ปณ."</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"ย่านใกล้เคียง"</string>
+    <string name="postal_city" msgid="3173008531169519309">"เมือง"</string>
+    <string name="postal_region" msgid="1695206048198921115">"รัฐ"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"รหัสไปรษณีย์"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ประเทศ"</string>
+    <string name="map_home" msgid="1221397355014741634">"ดูที่อยู่บ้าน"</string>
+    <string name="map_work" msgid="9015981646907637207">"ดูที่อยู่ที่ทำงาน"</string>
+    <string name="map_other" msgid="55098598855607997">"ดูที่อยู่"</string>
+    <string name="map_custom" msgid="4943554530347163288">"ดูที่อยู่ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"แชทโดยใช้ AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"แชทโดยใช้ Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"แชทโดยใช้ Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"แชทโดยใช้ Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"แชทโดยใช้ QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"แชทโดยใช้ Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"แชทโดยใช้ ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"แชทโดยใช้ Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"แชท"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"ลบ"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"ขยายหรือยุบฟิลด์ชื่อ"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"ขยายหรือยุบช่องคำอ่านชื่อ"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"รายชื่อติดต่อทั้งหมด"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ที่ติดดาว"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"กำหนดค่า"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"รายชื่อติดต่อ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"รายชื่อติดต่ออื่นทั้งหมด"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"รายชื่อติดต่อทั้งหมด"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"นำกลุ่มที่ซิงค์ออก"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"เพิ่มกลุ่มที่ซิงค์"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"กลุ่มเพิ่มเติม…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"การนำ \"<xliff:g id="GROUP">%s</xliff:g>\" ออกจากการซิงค์จะนำรายชื่อติดต่อที่ไม่ได้จัดกลุ่มไว้ออกจากการซิงค์ด้วย"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"กำลังบันทึกตัวเลือกการแสดงผล..."</string>
+    <string name="menu_done" msgid="32470053723443112">"เสร็จสิ้น"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"ยกเลิก"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"มุมมองที่กำหนดเอง"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"บันทึกรายชื่อติดต่อที่นำเข้าลงใน:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"นำเข้าจากซิมการ์ด"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"นำเข้าจากซิม <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"นำเข้าจากซิม <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"นำเข้าจากไฟล์ .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"ยกเลิกการนำเข้า <xliff:g id="FILENAME">%s</xliff:g> หรือไม่"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"ยกเลิกการส่งออก <xliff:g id="FILENAME">%s</xliff:g> หรือไม่"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"ไม่สามารถยกเลิกการนำเข้า/ส่งออก vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"ข้อผิดพลาดที่ไม่ทราบสาเหตุ"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"ไม่สามารถเปิด \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"เริ่มใช้งานโปรแกรมส่งออกไม่ได้: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"ไม่มีรายชื่อติดต่อที่สามารถส่งออกได้"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"คุณได้ปิดใช้สิทธิ์ที่จำเป็น"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"เกิดข้อผิดพลาดระหว่างส่งออก: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"ชื่อไฟล์ที่ต้องระบุยาวเกินไป (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"ข้อผิดพลาด I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"หน่วยความจำไม่เพียงพอ ไฟล์อาจใหญ่เกินไป"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ไม่สามารถแยกวิเคราะห์ vCard ด้วยเหตุผลที่ไม่คาดคิด"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"ไม่สนับสนุนรูปแบบนี้"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"ไม่สามารถรวบรวมข้อมูลเมตาของ vCard ที่ระบุ"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"ไม่สามารถนำเข้าไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไป (%s)"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"ส่งออก <xliff:g id="FILENAME">%s</xliff:g> เสร็จแล้ว"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"ส่งออกรายชื่อติดต่อเรียบร้อยแล้ว"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"ส่งออกรายชื่อติดต่อเสร็จแล้ว คลิกการแจ้งเตือนเพื่อแชร์รายชื่อติดต่อ"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"แตะเพื่อแชร์รายชื่อติดต่อ"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"ยกเลิกการส่งออก <xliff:g id="FILENAME">%s</xliff:g> แล้ว"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"กำลังส่งออกข้อมูลสมุดโทรศัพท์"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"กำลังส่งออกข้อมูลรายชื่อติดต่อ"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ไม่สามารถดึงข้อมูลจากฐานข้อมูล"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"ไม่มีรายชื่อติดต่อที่สามารถส่งออกได้ หากคุณมีรายชื่อติดต่ออยู่ในโทรศัพท์ของคุณจริงๆ อาจเป็นเพราะผู้ให้บริการข้อมูลบางรายไม่อนุญาตให้ส่งออกรายชื่อติดต่อจากโทรศัพท์"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"โปรแกรมเขียนข้อความ vCard เริ่มการทำงานไม่ถูกต้อง"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"ไม่สามารถส่งออก"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"ไม่ได้ส่งออกข้อมูลรายชื่อติดต่อ\nสาเหตุ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"กำลังนำเข้า <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"ไม่สามารถอ่านข้อมูล vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"ยกเลิกการอ่านข้อมูล vCard แล้ว"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"นำเข้า vCard <xliff:g id="FILENAME">%s</xliff:g> เรียบร้อยแล้ว"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"ยกเลิกการนำเข้า <xliff:g id="FILENAME">%s</xliff:g> แล้ว"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"การนำเข้า <xliff:g id="FILENAME">%s</xliff:g> จะเกิดขึ้นในไม่ช้า"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"ไฟล์จะถูกนำเข้าในไม่ช้า"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"คำขอนำเข้า vCard ถูกปฏิเสธ ลองใหม่ภายหลัง"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"การส่งออก <xliff:g id="FILENAME">%s</xliff:g> จะเกิดขึ้นในไม่ช้า"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"ระบบจะส่งออกไฟล์ในอีกสักครู่"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"ระบบจะส่งออกรายชื่อติดต่อในไม่ช้า"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"คำขอส่งออก vCard ถูกปฏิเสธ ลองใหม่ภายหลัง"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"รายชื่อติดต่อ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"กำลังแคช vCard ไปยังที่จัดเก็บข้อมูลชั่วคราวในตัวเครื่อง การนำเข้าจริงจะเริ่มต้นในอีกสักครู่"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"ไม่สามารถนำเข้า vCard"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"รับรายชื่อผ่าน NFC แล้ว"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"ส่งออกรายชื่อติดต่อ"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"กำลังแคช"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"กำลังนำเข้า <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"ส่งออกเป็นไฟล์ .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"จัดเรียงตาม"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"ชื่อ"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"นามสกุล"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"รูปแบบชื่อ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"ชื่อขึ้นก่อน"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"นามสกุลขึ้นก่อน"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"บัญชี"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"บัญชีเริ่มต้นสำหรับรายชื่อติดต่อใหม่"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"ซิงค์ข้อมูลเมตาของรายชื่อติดต่อ [การลองใช้]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"ซิงค์ข้อมูลเมตาของรายชื่อติดต่อ"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"ข้อมูลของฉัน"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"ตั้งค่าโปรไฟล์ของคุณ"</string>
+    <string name="setting_about" msgid="3926137653588942297">"เกี่ยวกับ \"รายชื่อติดต่อ\""</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"การตั้งค่า"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"แชร์รายชื่อติดต่อที่มองเห็น"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"ไม่สามารถแชร์รายชื่อติดต่อที่มองเห็นได้"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"แชร์รายชื่อติดต่อโปรด"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"แชร์รายชื่อติดต่อทั้งหมด"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"ไม่สามารถแชร์รายชื่อติดต่อ"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"นำเข้า/ส่งออกรายชื่อติดต่อ"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"นำเข้ารายชื่อติดต่อ"</string>
+    <string name="share_error" msgid="665756457151793108">"ไม่สามารถแชร์รายชื่อติดต่อนี้ได้"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"ไม่มีรายชื่อติดต่อที่จะแชร์"</string>
+    <string name="menu_search" msgid="7464453023659824700">"ค้นหา"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"รายชื่อติดต่อที่จะแสดง"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"รายชื่อติดต่อที่จะแสดง"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"กำหนดมุมมองที่กำหนดเอง"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"บันทึก"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"ค้นหารายชื่อติดต่อ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"รายการโปรด"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"ไม่มีรายชื่อติดต่อ"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"ล้างรายชื่อที่ติดต่อบ่อย"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"เลือกซิมการ์ด"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"จัดการบัญชี"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"นำเข้า/ส่งออก"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"หมายเลขที่ถูกบล็อก"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"ผ่านทาง <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> ผ่านทาง <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"หยุดการค้นหา"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"ล้างการค้นหา"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"ตัวเลือกการแสดงรายชื่อผู้ติดต่อ"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"บัญชี"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"ใช้ในการโทรทุกครั้ง"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"โทรด้วย"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"โทรพร้อมโน้ต"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"พิมพ์โน้ตเพื่อส่งพร้อมการโทร ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ส่งและโทร"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g> ยังไม่อ่าน <xliff:g id="COUNT_3">%2$d</xliff:g> รายการ </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g> ยังไม่อ่าน <xliff:g id="COUNT_1">%2$d</xliff:g> รายการ </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"เวอร์ชันบิวด์"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"ใบอนุญาตโอเพนซอร์ส"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"รายละเอียดใบอนุญาตสำหรับซอฟต์แวร์โอเพนซอร์ส"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"นโยบายส่วนบุคคล"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"ข้อกำหนดในการให้บริการ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"ใบอนุญาตโอเพนซอร์ส"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"เปิด URL ไม่สำเร็จ"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"เลือก <xliff:g id="ACCOUNT_INFO">%s</xliff:g> แล้ว"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"ไม่ได้เลือก <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"เริ่มแฮงเอาท์วิดีโอ"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"ลบ"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"จุดไข่ปลา"</string>
+</resources>
diff --git a/res-common/values-tl-sw600dp/strings.xml b/res-common/values-tl-sw600dp/strings.xml
new file mode 100644
index 0000000..ac43747
--- /dev/null
+++ b/res-common/values-tl-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Device"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Walang mga nae-export na contact. Kung mayroon kang mga contact sa iyong tablet, maaaring hindi pahintulutan ng ilang data provider na i-export ang mga contact na iyon mula sa tablet."</string>
+</resources>
diff --git a/res-common/values-tl/strings.xml b/res-common/values-tl/strings.xml
new file mode 100644
index 0000000..945e0d5
--- /dev/null
+++ b/res-common/values-tl/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Kinopya ang teksto"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopyahin sa clipboard"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Tawagan sa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Tawagan sa bahay"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Tawagan sa mobile"</string>
+    <string name="call_work" msgid="8299062439076337075">"Tawagan sa trabaho"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Tawagan sa fax sa trabaho"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Tawagan sa fax sa bahay"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Tawagan sa pager"</string>
+    <string name="call_other" msgid="4472141328347894937">"Tawagan"</string>
+    <string name="call_callback" msgid="687494744634190411">"Tawagan sa callback"</string>
+    <string name="call_car" msgid="9078083109758282133">"Tawagan sa kotse"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Tawagan sa pangunahing kumpanya"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Tawagan sa ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Tawagan sa pangunahin"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Tawagan sa fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Tawagan sa radyo"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Tawagan sa telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Tawagan sa TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Tawagan sa mobile sa trabaho"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Tawagan sa pager sa trabaho"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Tawagan sa <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Tawagan sa MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Tawagan)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"I-text sa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"I-text sa bahay"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"I-text sa mobile"</string>
+    <string name="sms_work" msgid="3910570578912367742">"I-text sa trabaho"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"I-text sa fax sa trabaho"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"I-text sa fax sa bahay"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"I-text sa pager"</string>
+    <string name="sms_other" msgid="910895193552957097">"Mag-text"</string>
+    <string name="sms_callback" msgid="728414485478941361">"I-text sa callback"</string>
+    <string name="sms_car" msgid="8543669230270954512">"I-text sa kotse"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"I-text sa pangunahing kumpanya"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"I-text sa ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"I-text sa pangunahin"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"I-text sa fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"I-text sa radyo"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"I-text sa telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"I-text sa TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"I-text sa mobile sa trabaho"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"I-text sa pager sa trabaho"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"I-text sa <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"I-text sa MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Imensahe)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Gumawa ng video call"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"I-clear ang madalas na kinontak"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Iki-clear mo ang listahan ng mga madalas na nakakaugnay sa mga app ng Mga Contact at Telepono at pupuwersahin mo ang mga app ng email na matutunan ang iyong mga kagustuhan sa pag-a-address mula sa simula."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Kini-clear madalas na inuugnayan…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Available"</string>
+    <string name="status_away" msgid="6267905184545881094">"Wala"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Abala"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Mga Contact"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Iba pa"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktoryo"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Directory sa trabaho"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Lahat ng contact"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Naghahanap…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Higit sa <xliff:g id="COUNT">%d</xliff:g> ang nakita."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Walang mga contact"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ang nahanap</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ang nahanap</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Mabilisang contact para kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Walang pangalan)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Madalas na kino-contact"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Tingnan ang contact"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Lahat ng contact na may mga numero ng telepono"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Mga contact ng profile sa trabaho"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Tingnan ang mga update"</string>
+    <string name="account_phone" msgid="325867897209266837">"Device"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Pangalan"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Palayaw"</string>
+    <string name="full_name" msgid="885420216812981202">"Pangalan"</string>
+    <string name="name_given" msgid="4153709115654909377">"Pangalan"</string>
+    <string name="name_family" msgid="5317387657540738981">"Apelyido"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Prefix ng pangalan"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Gitnang pangalan"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Suffix ng pangalan"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Phonetic na pangalan"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Phonetic na pangalan"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Phonetic na gitnang pangalan"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Phonetic na apelyido"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telepono"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Address"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Samahan"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Kaugnayan"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Espesyal na petsa"</string>
+    <string name="sms" msgid="8086289395154598654">"Text message"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Address"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Kumpanya"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Pamagat"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Mga Tala"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Website"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Mga Label"</string>
+    <string name="email_home" msgid="2230967805906450693">"Mag-email sa bahay"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Mag-email sa mobile"</string>
+    <string name="email_work" msgid="7065971921227432400">"Mag-email sa trabaho"</string>
+    <string name="email_other" msgid="4601881243553289615">"Mag-email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Mag-email sa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Mag-email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Kalye"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Kapitbahayan"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Lungsod"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Estado"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ZIP code"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Bansa"</string>
+    <string name="map_home" msgid="1221397355014741634">"Tingnan ang address ng tahanan"</string>
+    <string name="map_work" msgid="9015981646907637207">"Tingnan ang address sa trabaho"</string>
+    <string name="map_other" msgid="55098598855607997">"Tingnan ang address"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Tingnan ang <xliff:g id="CUSTOM">%s</xliff:g> na address"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Makipag-chat gamit ang AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Makipag-chat gamit ang Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Makipag-chat gamit ang Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Makipag-chat gamit ang Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Makipag-chat gamit ang QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Makipag-chat gamit ang Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Makipag-chat gamit ang ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Makipag-chat gamit ang Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Chat"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"tanggalin"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Palawakin o tiklupin ang mga field ng pangalan"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Palakihin o i-collapse ang mga field ng phonetic na pangalan"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Lahat ng contact"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Naka-star"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"I-customize"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Contact"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Lahat ng iba pang contact"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Lahat ng contact"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Alisin ang pangkat sa pag-sync"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Magdagdag ng pangkat sa pag-sync"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Higit pang mga pangkat…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Aalisin din ng pag-alis sa \"<xliff:g id="GROUP">%s</xliff:g>\" mula sa sync ang anumang mga hindi nakapangkat na contact mula sa sync."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Sine-save ang mga pagpipilian sa pagpapakita…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Tapos na"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Kanselahin"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Naka-customize na view"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"I-save ang mga ii-import na contact sa:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"I-import mula sa SIM card"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"I-import mula sa SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"I-import mula sa SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Mag-import mula sa .vcf file"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Kanselahin ang pag-import ng <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Kanselahin ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Di makansela pag-import/pag-export vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Hindi alam na error."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Hindi mabuksan ang \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Hindi masimulan ang exporter: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Walang na-e-export na contact."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Na-disable mo ang isang kinakailangang pahintulot."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"May naganap na error habang nag-e-export: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Masyadong mahaba ang kinakailangang filename (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O na error"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Walang sapat na memory. Maaaring masyadong malaki ang file."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Hindi ma-parse ang vCard dahil sa isang hindi inaasahang dahilan."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Hindi sinusuportahan ang format."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Hindi makakolekta ng impormasyon ng meta ng ibinigay na (mga) vCard file."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Hindi ma-import ang isa o higit pang mga file (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Tapos na ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Tapos nang i-export ang mga contact."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Tapos nang ma-export ang mga contact, i-click ang notification upang ibahagi ang mga contact."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"I-tap upang ibahagi ang mga contact."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Kinansela ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Ine-export ang data ng contact"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Ine-export ang data ng contact."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Hindi makuha ang impormasyon ng database."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Walang mga na-e-export na contact. Kung mayroon kang mga contact sa iyong telepono, maaaring hindi payagan ng ilang provider ng data na ma-export mula sa telepono ang mga contact."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Hindi nagsimula nang maayos ang composer ng vCard."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Hindi ma-export"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Hindi na-export ang data ng contact.\nDahilan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Ini-import ang <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Hindi mabasa ang data ng vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Kinansela ang pagbabasa ng data ng vCard"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Tapos na ang pag-import ng vCard na <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Kinansela ang pag-import ng <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Ii-import ang <xliff:g id="FILENAME">%s</xliff:g> sa ilang sandali."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Ii-import ang file sa ilang sandali."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Tinanggihan ang kahilingan sa pag-import ng vCard. Subukang muli sa ibang pagkakataon."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"I-e-export ang <xliff:g id="FILENAME">%s</xliff:g> sa ilang sandali."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Ie-export ang file sa ilang sandali."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Ie-export ang mga contact sa ilang sandali."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Tinanggihan ang kahilingan sa pag-export ng vCard. Subukang muli sa ibang pagkakataon."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"contact"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Kina-cache ang (mga) vCard sa lokal na pansamantalang storage. Magsisimula sa lalong madaling panahon ang aktwal na pag-import."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Hindi ma-import ang vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Natanggap contact sa NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"I-export ang mga contact?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Nagka-cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Nag-i-import ng <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"I-export sa .vcf file"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Uriin ayon sa"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Pangalan"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Apelyido"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Format ng pangalan"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Pangalan muna"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Apelyido muna"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Mga Account"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Default na account para sa mga bagong contact"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"I-sync ang metadata ng contact [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"I-sync ang metadata ng contact"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Aking impormasyon"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"I-set up ang iyong profile"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Tungkol sa Mga Contact"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Mga Setting"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Magbahagi ng mga nakikitang contact"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Hindi naibahagi ang mga nakikitang contact."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Ibahagi ang mga paboritong contact"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Ibahagi ang lahat ng contact"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Hindi naibahagi ang mga contact."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Mag-import/mag-export ng mga contact"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Mag-import ng mga contact"</string>
+    <string name="share_error" msgid="665756457151793108">"Hindi maibabahagi ang contact na ito."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Walang ibabahaging mga contact."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Hanapin"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Mga contact na ipapakita"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Mga contact na ipapakita"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Tukuyin ang naka-customize na view"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"I-save"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Maghanap ng mga contact"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Mga Paborito"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Walang mga contact."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"I-clear ang mga frequent"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Pumili ng SIM card"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Pamahalaan ang mga account"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Mag-import/mag-export"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Mga naka-block na numero"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"sa pamamagitan ng <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> sa pamamagitan ng <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ihinto ang paghahanap"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"I-clear ang paghahanap"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Mga opsyon ng display ng contact"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Account"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Gamitin ito palagi sa mga tawag"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Tumawag gamit ang"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Tumawag nang may kasamang tala"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Mag-type ng isang tala na ipadadala kasama ng tawag ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"IPADALA &amp; TUMAWAG"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> hindi nabasang item. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> na hindi nabasang item. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Bersyon ng build"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Mga open source na lisensya"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Mga detalye ng lisensya para sa open source na software"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Patakaran sa privacy"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Mga tuntunin ng serbisyo"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Mga open source na lisensya"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Nabigong buksan ang url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Nilagyan ng check ang <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Hindi nilagyan ng check ang <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Magsimula ng video call"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"I-delete"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Ellipsis"</string>
+</resources>
diff --git a/res-common/values-tr-sw600dp/strings.xml b/res-common/values-tr-sw600dp/strings.xml
new file mode 100644
index 0000000..420b89d
--- /dev/null
+++ b/res-common/values-tr-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Cihaz"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Dışa aktarılabilir kişi yok. Tabletinizde kişiler varsa, bazı veri sağlayıcıları kişilerin tabletten dışa aktarılmasına izin vermeyebilir."</string>
+</resources>
diff --git a/res-common/values-tr/strings.xml b/res-common/values-tr/strings.xml
new file mode 100644
index 0000000..9c63a21
--- /dev/null
+++ b/res-common/values-tr/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Metin kopyalandı"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Panoya kopyala"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Sesli arama yap (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="call_home" msgid="1479549630992276827">"Sesli arama yap (ev)"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Sesli arama yap (mobil)"</string>
+    <string name="call_work" msgid="8299062439076337075">"Sesli arama yap (iş)"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Sesli arama yap (iş faksı)"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Sesli arama yap (ev faksı)"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Sesli arama yap (çağrı cihazı)"</string>
+    <string name="call_other" msgid="4472141328347894937">"Sesli arama yap"</string>
+    <string name="call_callback" msgid="687494744634190411">"Sesli arama yap (geri arama)"</string>
+    <string name="call_car" msgid="9078083109758282133">"Sesli arama yap (araç)"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Sesli arama yap (şirket santrali)"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Sesli arama yap (ISDN)"</string>
+    <string name="call_main" msgid="4640261071249938558">"Sesli arama yap (santral)"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Sesli arama yap (faks)"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Sesli arama yap (telsiz)"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Sesli arama yap (teleks)"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Sesli arama yap (TTY/TDD)"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Sesli arama yap (iş cep telefonu)"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Sesli arama yap (iş çağrı cihazı)"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Sesli arama yap (<xliff:g id="ASSISTANT">%s</xliff:g>)"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Sesli arama yap (MMS)"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Telefon et)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS gönder (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS gönder (ev)"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS gönder (mobil)"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS gönder (iş)"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS gönder (iş faksı)"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS gönder (ev faksı)"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS gönder (çağrı cihazı)"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS gönder"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS gönder (geri arama)"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS gönder (araç)"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS gönder (şirket santrali)"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS gönder (ISDN)"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS gönder (santral)"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS gönder (faks)"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS gönder (telsiz)"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS gönder (teleks)"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS gönder (TTY/TDD)"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS gönder (iş cep telefonu)"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS gönder (iş çağrı cihazı)"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS gönder (<xliff:g id="ASSISTANT">%s</xliff:g>)"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS gönder (MMS)"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Mesaj gönder)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Video görüşmesi yap"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Sık iletişim kurulanlar silinsin mi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Kişiler ve Telefon uygulamalarındaki sık iletişim kurulanlar listesini temizleyecek ve e-posta uygulamalarını adres tercihlerinizi en baştan öğrenmeye zorlayacaksınız."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Sık iletişim kurulanlar siliniyor…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Müsait"</string>
+    <string name="status_away" msgid="6267905184545881094">"Dışarıda"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Meşgul"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kişiler"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Diğer"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Dizin"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"İş dizini"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Tüm kişiler"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Aranıyor…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> kişiden fazla bulundu."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Kişi yok"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kişi bulundu</item>
+      <item quantity="one">1 kişi bulundu</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> için hızlı kişi"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Adsız)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Sık iletişim kurulanlar"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Kişiyi görüntüle"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Telefon numarası olan tüm kişiler"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"İş profili kişileri"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Güncellemeleri görüntüle"</string>
+    <string name="account_phone" msgid="325867897209266837">"Cihaz"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Adı"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Takma ad"</string>
+    <string name="full_name" msgid="885420216812981202">"Adı"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ad"</string>
+    <string name="name_family" msgid="5317387657540738981">"Soyadı"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Ad öneki"</string>
+    <string name="name_middle" msgid="3951610314424632183">"İkinci adı"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Ad soneki"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Fonetik adı"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Fonetik ad"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Fonetik ikinci adı"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Fonetik soyadı"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-posta"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Adres"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Kuruluş"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"İlişki"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Özel tarih"</string>
+    <string name="sms" msgid="8086289395154598654">"Kısa mesaj"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Adres"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Şirket"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Unvan"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Notlar"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Web sitesi"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Etiketler"</string>
+    <string name="email_home" msgid="2230967805906450693">"E-posta gönder (ev)"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"E-posta gönder (mobil)"</string>
+    <string name="email_work" msgid="7065971921227432400">"E-posta gönder (iş)"</string>
+    <string name="email_other" msgid="4601881243553289615">"E-posta gönder"</string>
+    <string name="email_custom" msgid="5777583741581538870">"E-posta gönder (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
+    <string name="email" msgid="5624424151176351591">"E-posta gönder"</string>
+    <string name="postal_street" msgid="881349814077356134">"Cadde"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Posta kutusu"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Mahalle"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Şehir"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Eyalet"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Posta kodu"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Ülke"</string>
+    <string name="map_home" msgid="1221397355014741634">"Ev adresini görüntüle"</string>
+    <string name="map_work" msgid="9015981646907637207">"İş adresini görüntüle"</string>
+    <string name="map_other" msgid="55098598855607997">"Adresi görüntüle"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> adresini görüntüle"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM kullanarak sohbet et"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live kullanarak sohbet et"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo kullanarak sohbet et"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype kullanarak sohbet et"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ kullanarak sohbet et"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk kullanarak sohbet et"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ kullanarak sohbet et"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber kullanarak sohbet et"</string>
+    <string name="chat" msgid="6297650784873558837">"Sohbet"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"sil"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Ad alanlarını genişlet veya daralt"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Fonetik ad alanlarını genişlet veya daralt"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Tüm kişiler"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Yıldız işaretli"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Özelleştir"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Kişi"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Diğer tüm kişiler"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Tüm kişiler"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Senkronize grubu kaldır"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Senkronizasyon grubu ekle"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Diğer gruplar..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" adlı grubu senkronizasyondan kaldırmak, gruplanmamış tüm kişilerin de senkronizasyondan kaldırılmasına neden olur."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Görüntüleme seçenekleri kaydediliyor..."</string>
+    <string name="menu_done" msgid="32470053723443112">"Tamam"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"İptal"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Özelleştirilmiş görünüm"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"İçe aktarılan kişilerin kaydedileceği yer:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM karttan içe aktar"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"SIM\'den (<xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>) içe aktar"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"SIM\'den (<xliff:g id="SIM_NAME">%1$s</xliff:g>) içe aktar"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">".vcf dosyasından aktar"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> dosyasının içe aktarılması iptal edilsin mi?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> dosyasının dışa aktarılması iptal edilsin mi?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"İçe/dışa aktarma işlemi iptal edilemedi"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Bilinmeyen hata."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" açılamadı: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Dışa aktarıcı başlatılamadı: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Dışa aktarabilecek kişi yok."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Gerekli bir izni devre dışı bıraktınız."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Dışa aktarma sırasında bir hata oluştu: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Gereken dosya adı çok uzun (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"G/Ç Hatası"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Bellek yetersiz. Dosya çok büyük olabilir."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Beklenmeyen bir nedenden dolayı vCard ayrıştırılamadı."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Biçim desteklenmiyor."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Belirtilen vCard dosyalarının meta bilgileri toplanamadı."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Bir veya daha fazla dosya içe aktarılamadı (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını dışa aktarma tamamlandı."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kişileri dışa aktarma işlemi tamamlandı."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kişileri dışa aktarma işlemi tamamlandı. Dışa aktarılan kişileri paylaşmak için bildirimi tıklayın."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Kişileri paylaşmak için hafifçe dokunun."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını dışa aktarma iptal edildi."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kişi verileri dışa aktarılıyor"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kişi verileri dışa aktarılıyor."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Veritabanı bilgileri alınamadı."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Dışa aktarılabilecek kişi yok. Telefonunuzda kişileriniz varsa, bazı veri sağlayıcıları kişilerin telefondan dışa aktarılmasına izin vermeyebilir."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard oluşturucu düzgün başlamadı."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Dışa aktarılamadı"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kişi verileri dışa aktarılamadı.\nNedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> içe aktarılıyor"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"vCard verileri okunamadı"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"vCard verilerini okuma işlemi iptal edildi"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"vCard <xliff:g id="FILENAME">%s</xliff:g> dosyasının içe aktarılması tamamlandı"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını içe aktarma iptal edildi"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> kısa bir süre içinde içe aktarılacak."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Dosya kısa bir süre sonra içe aktarılacak."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard\'ı içe aktarma isteği reddedildi. Daha sonra tekrar deneyin."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> kısa bir süre içinde dışa aktarılacak."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Dosya kısa bir süre sonra dışa aktarılacak."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kişiler kısa sürede dışa aktarılacak."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard\'ı dışa aktarma isteği reddedildi. Daha sonra tekrar deneyin."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kişi"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"vCard\'lar geçici bir yerel depolama alanında önbelleğe alınıyor. Asıl içe aktarma işlemi kısa süre içinde başlayacak."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"vCard içe aktarılamadı."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kişi NFC ile alındı"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Kişiler dışa aktarılsın mı?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Önbelleğe alınıyor"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"İçe aktarılıyor <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">".vcf dosyasına aktar"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sıralama ölçütü"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ad"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Soyadı"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Ad biçimi"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Önce ad"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Önce soyadı"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Hesaplar"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Yeni kişiler için varsayılan hesap"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Kişi meta verilerini senkronize et [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Kişi meta verilerini senkronize et"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Bilgilerim"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Profilinizi oluşturun"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Kişiler Hakkında"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Ayarlar"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Görülebilir kişileri paylaş"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Görünür kişiler paylaşılamadı."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Favori kişileri paylaş"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Tüm kişileri paylaş"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kişiler paylaşılamadı."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kişileri içe/dışa aktar"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Kişileri içe aktar"</string>
+    <string name="share_error" msgid="665756457151793108">"Bu kişi paylaşılamıyor."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Paylaşılacak kişi yok."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Ara"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Görüntülenecek kişiler"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Görüntülenecek kişiler"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Özelleştirilmiş görünüm tanımlayın"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Kaydet"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Kişilerde arayın"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Favoriler"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Kişi yok."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Sık iletişim kurulanları sil"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM kart seç"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Hesapları yönet"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"İçe/Dışa aktar"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Engellenen numaralar"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> üzerinden"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> üzerinden şu zamanda: <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"aramayı durdur"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Aramayı temizle"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kişi görüntüleme seçenekleri"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Hesap"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Çağrılar için her zaman bunu kullan"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Çağrıyı şununla yap:"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Notla telefon et"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Çağrıyla göndermek için bir not yazın..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"GÖNDER VE TELEFON ET"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> okunmamış öğe. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> okunmamış öğe. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Derleme sürümü"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Açık kaynak lisansları"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Açık kaynak yazılımlar için lisans ayrıntıları"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Gizlilik politikası"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Hizmet şartları"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Açık kaynak lisansları"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"URL açılamadı."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> işaretlendi"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> işaretlenmedi"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Video görüşmesi yap"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Silin"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Üç nokta"</string>
+</resources>
diff --git a/res-common/values-uk-sw600dp/strings.xml b/res-common/values-uk-sw600dp/strings.xml
new file mode 100644
index 0000000..e009368
--- /dev/null
+++ b/res-common/values-uk-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Пристрій"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Немає контактів, які можна експортувати. Якщо на вашому планшеті є контакти, можливо, постачальник даних заборонив їх експортувати."</string>
+</resources>
diff --git a/res-common/values-uk/strings.xml b/res-common/values-uk/strings.xml
new file mode 100644
index 0000000..3e5cb7c
--- /dev/null
+++ b/res-common/values-uk/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Текст скопійовано"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Копіювати в буфер обміну"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Набрати <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Набрати домашній номер телефону"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Набрати номер мобільного телефону"</string>
+    <string name="call_work" msgid="8299062439076337075">"Набрати робочий номер телефону"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Набрати робочий номер факсу"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Набрати домашній номер факсу"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Набрати номер пейджера"</string>
+    <string name="call_other" msgid="4472141328347894937">"Набрати"</string>
+    <string name="call_callback" msgid="687494744634190411">"Набрати номер зворотного виклику"</string>
+    <string name="call_car" msgid="9078083109758282133">"Набрати номер в авто"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Набрати основний робочий номер телефону"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Набрати номер ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Набрати основний номер телефону"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Набрати номер факсу"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Набрати номер радіотелефону"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Набрати номер телексу"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Набрати номер TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Набрати робочий номер мобільного телефону"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Набрати робочий номер пейджера"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Набрати <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Набрати номер MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (зателефонувати)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"SMS на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"SMS на домашній номер телефону"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS на номер мобільного телефону"</string>
+    <string name="sms_work" msgid="3910570578912367742">"SMS на робочий номер телефону"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"SMS на робочий номер факсу"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"SMS на домашній номер факсу"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"SMS на номер пейджера"</string>
+    <string name="sms_other" msgid="910895193552957097">"SMS"</string>
+    <string name="sms_callback" msgid="728414485478941361">"SMS на номер зворотного виклику"</string>
+    <string name="sms_car" msgid="8543669230270954512">"SMS на номер в авто"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"SMS на основний робочий номер телефону"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"SMS на номер ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"SMS на основний номер"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"SMS на номер факсу"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"SMS на номер радіотелефону"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"SMS на номер телексу"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"SMS на номер TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS на робочий номер мобільного телефону"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"SMS на робочий номер пейджера"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"SMS на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"SMS на номер MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (надіслати повідомлення)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Здійснити відеодзвінок"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Очистити список частих контактів?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Буде видалено список користувачів, з якими ви часто спілкуєтеся, з додатків Контакти та Телефон і скинуто налаштування адрес у додатках для електронної пошти."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Очищення списку частих контактів…"</string>
+    <string name="status_available" msgid="4832569677396634846">"На місці"</string>
+    <string name="status_away" msgid="6267905184545881094">"Не на місці"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Не турбувати"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Контакти"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Інше"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Каталог"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Робочі контакти"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Усі контакти"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Пошук…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Знайдено понад <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Контактів немає"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one">Знайдено <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="few">Знайдено <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="many">Знайдено <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Знайдено <xliff:g id="COUNT">%d</xliff:g></item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Швидкий зв’язок, контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Без імені)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Часті контакти"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Переглянути контакт"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Усі контакти з номерами телефону"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Контакти в робочому профілі"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Переглянути оновлення"</string>
+    <string name="account_phone" msgid="325867897209266837">"Пристрій"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ім’я"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Псевдонім"</string>
+    <string name="full_name" msgid="885420216812981202">"Ім’я"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ім’я"</string>
+    <string name="name_family" msgid="5317387657540738981">"Прізвище"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Префікс імені"</string>
+    <string name="name_middle" msgid="3951610314424632183">"По батькові"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Суфікс імені"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Вимова імені"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Вимова імені"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Вимова по батькові"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Вимова прізвища"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Телефон"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Електронна адреса"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Адреса"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"Чат"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Організація"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Зв’язки"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Спеціальна дата"</string>
+    <string name="sms" msgid="8086289395154598654">"Текстове повідомлення"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Адреса"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Компанія"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Назва"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Примітки"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Веб-сайт"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Мітки"</string>
+    <string name="email_home" msgid="2230967805906450693">"Написати на домашню електронну адресу"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Написати на мобільну електронну адресу"</string>
+    <string name="email_work" msgid="7065971921227432400">"Написати на робочу електронну адресу"</string>
+    <string name="email_other" msgid="4601881243553289615">"Написати"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Написати на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Написати"</string>
+    <string name="postal_street" msgid="881349814077356134">"Вулиця"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Поштова скринька"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"У районі"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Місто"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Штат/регіон"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Поштовий індекс"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Країна"</string>
+    <string name="map_home" msgid="1221397355014741634">"Переглянути домашню адресу"</string>
+    <string name="map_work" msgid="9015981646907637207">"Переглянути робочу адресу"</string>
+    <string name="map_other" msgid="55098598855607997">"Переглянути адресу"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Переглянути адресу <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Чат через AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Чат через Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Чат через Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Чат через Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Чат через QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Чат через Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Чат через ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Чат через Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Чат"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"видалити"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Розгорнути або згорнути поля імен"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Розгорнути або згорнути поля вимови імен"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Усі контакти"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Із зірочками"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Спеціальний"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Контакт"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Усі інші контакти"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Усі контакти"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Вилучити синхронізовану групу"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Додати синхронізовану групу"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Інші групи…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Вилучення групи \"<xliff:g id="GROUP">%s</xliff:g>\" із синхронізації призведе до припинення синхронізації незгрупованих контактів."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Збереження параметрів відображення…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Готово"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Скасувати"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Користувацький режим"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Зберегти імпортовані контакти в обліковий запис:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Імпорт із SIM-карти"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Імпортувати із SIM-карти \"<xliff:g id="SIM_NAME">^1</xliff:g>\" – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Імпортувати із SIM-карти \"<xliff:g id="SIM_NAME">%1$s</xliff:g>\""</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Імпортувати з файлу .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Скасувати імпорт файлу <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Скасувати експорт файлу <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Не вдалося скасув. імпорт/експорт vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Невідома помилка."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Не вдалося відкрити файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Не вдалося запустити експортер: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Немає контактів, які можна експортувати."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Ви вимкнули обов’язковий дозвіл."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Під час експорту сталася помилка: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Потрібна назва файлу задовга (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Помилка вводу/виводу"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Недостатньо пам’яті. Можливо, файл завеликий."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Не вдалося проаналізувати vCard через неочікувану причину."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Формат не підтримується."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Не вдалося зібрати мета-інформацію файлів цієї vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Не вдалось імпортувати один або декілька файлів (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Експорт файлу <xliff:g id="FILENAME">%s</xliff:g> завершено."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Контакти експортовано."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Контакти експортовано. Натисніть сповіщення, щоб надати доступ до контактів."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Торкніться, щоб надати доступ до контактів."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Експорт файлу <xliff:g id="FILENAME">%s</xliff:g> скасовано."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Експортувати контактні дані"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Контакти експортуються."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Не вдалось отримати інформацію бази даних."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Немає контактів, які можна експортувати. Якщо у вашому телефоні є контакти, можливо, якийсь постачальник даних заборонив експорт контактів із телефону."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Майстер vCard не запущено належним чином."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Помилка експорту"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Контактні дані не експортовано.\nПричина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Імпорт контакта <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Не вдалося прочитати дані vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Читання даних vCard скасовано"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Імпорт файлу <xliff:g id="FILENAME">%s</xliff:g> vCard завершено"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Імпорт файлу <xliff:g id="FILENAME">%s</xliff:g> скасовано"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"Файл <xliff:g id="FILENAME">%s</xliff:g> незабаром буде імпортовано."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Файл незабаром буде імпортовано."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Запит на імпорт файлу vCard відхилено. Повторіть спробу пізніше."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"Файл <xliff:g id="FILENAME">%s</xliff:g> незабаром буде експортовано."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Невдовзі файл буде експортовано."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Контакти невдовзі буде експортовано."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Запит на експорт файлу vCard відхилено. Повторіть спробу пізніше."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"контакт"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Кешування файлів vCard у локальну тимчасову пам’ять. Імпорт почнеться незабаром."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Не вдалось імпортувати файл vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Контакт через NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Експортувати контакти?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Кешування"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Імпорт <xliff:g id="CURRENT_NUMBER">%s</xliff:g> з <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Експортувати у файл .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Параметри сортування"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ім’я"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Прізвище"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Формат імені"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Ім’я спочатку"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Прізвище спочатку"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Облікові записи"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Обліковий запис за умовчанням для нових контактів"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Синхронізувати метадані контактів [ВНУТРІШНЄ ТЕСТУВАННЯ]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Синхронізувати метадані контактів"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Мої дані"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Налаштувати профіль"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Про додаток Контакти"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Налаштування"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Надіслати видимі контакти"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Не вдалося поділитись видимими контактами."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Поділитися вибраними контактами"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Поділитися всіма контактами"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Не вдалося поділитися контактами."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Імпорт/експорт контактів"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Імпорт контактів"</string>
+    <string name="share_error" msgid="665756457151793108">"Цей контакт неможливо надіслати."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Немає контактів, якими можна поділитися."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Пошук"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Контакти для показу"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Контакти для показу"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Визначити користувацький режим"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Зберегти"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Пошук контактів"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Вибране"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Контактів немає."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Очистити часті контакти"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Вибрати SIM-карту"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Керувати обліковими записами"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Імпорт або експорт"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Заблоковані номери"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"через <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> через <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"припинити пошук"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Очистити поле пошуку"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Параметри відображення контактів"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Обліковий запис"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Завжди використовувати для дзвінків"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Телефонувати за допомогою"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Зателефонувати й надіслати нотатку"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Введіть нотатку, яку хочете надіслати під час дзвінка…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"ЗАТЕЛЕФОНУВАТИ Й НАДІСЛАТИ"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> з <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитаний елемент. </item>
+      <item quantity="few"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитані елементи. </item>
+      <item quantity="many"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитаних елементів. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> непрочитаного елемента. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Версія складання"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Ліцензії відкритого коду"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Деталі ліцензії для програмного забезпечення з відкритим кодом"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Політика конфіденційності"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Умови використання"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Ліцензії відкритого коду"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Не вдалося відкрити посилання."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> вибрано"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> не вибрано"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Почати відеодзвінок"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Видалити"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Три крапки"</string>
+</resources>
diff --git a/res-common/values-ur-rPK-sw600dp/strings.xml b/res-common/values-ur-rPK-sw600dp/strings.xml
new file mode 100644
index 0000000..231c989
--- /dev/null
+++ b/res-common/values-ur-rPK-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"آلہ"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"برآمد کرنے لائق کوئی رابطے نہیں ہیں۔ اگر آپ کے ٹیبلٹ پر واقعی رابطے ہیں تو ممکن ہے کچھ ڈیٹا فراہم کنندگان رابطوں کو ٹیبلٹ سے برآمد کیے جانے کی اجازت نہ دیتے ہوں۔"</string>
+</resources>
diff --git a/res-common/values-ur-rPK/strings.xml b/res-common/values-ur-rPK/strings.xml
new file mode 100644
index 0000000..4412f5b
--- /dev/null
+++ b/res-common/values-ur-rPK/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"متن کاپی ہوگیا"</string>
+    <string name="copy_text" msgid="3424081789297978355">"کلپ بورڈ میں کاپی کریں"</string>
+    <string name="call_custom" msgid="2786306789889210756">"<xliff:g id="CUSTOM">%s</xliff:g> کو کال کریں"</string>
+    <string name="call_home" msgid="1479549630992276827">"گھر پر کال کریں"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"موبائل پر کال کریں"</string>
+    <string name="call_work" msgid="8299062439076337075">"دفتر کے نمبر پر کال کریں"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"دفتر کے فیکس پر کال کریں"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"گھر کے فیکس پر کال کریں"</string>
+    <string name="call_pager" msgid="3038080882899955112">"پیجر پر کال کریں"</string>
+    <string name="call_other" msgid="4472141328347894937">"کال کریں"</string>
+    <string name="call_callback" msgid="687494744634190411">"کال بیک نمبر پر کال کریں"</string>
+    <string name="call_car" msgid="9078083109758282133">"کار کے نمبر پر کال کریں"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"کمپنی کے اصل نمبر پر کال کریں"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"‏ISDN پر کال کریں"</string>
+    <string name="call_main" msgid="4640261071249938558">"اصل نمبر پر کال کریں"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"فیکس پر کال کریں"</string>
+    <string name="call_radio" msgid="9055749313292712021">"ریڈیو پر کال کریں"</string>
+    <string name="call_telex" msgid="2909886619224843563">"ٹیلیکس پر کال کریں"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"‏TTY / TDD پر کال کریں"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"دفتر کے موبائل پر کال کریں"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"دفتر کے پیجر پر کال کریں"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"<xliff:g id="ASSISTANT">%s</xliff:g> کو کال کریں"</string>
+    <string name="call_mms" msgid="8998771923464696960">"‏MMS نمبر پر کال کریں"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (کال کریں)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g> پر متن بھیجیں"</string>
+    <string name="sms_home" msgid="7765831490534280540">"گھر کے نمبر پر متن بھیجیں"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"موبائل پر متن بھیجیں"</string>
+    <string name="sms_work" msgid="3910570578912367742">"دفتر کے نمبر پر متن بھیجیں"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"دفتر کے فیکس نمبر پر متن بھیجیں"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"گھر کے فیکس نمبر پر متن بھیجیں"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"پیجر پر متن بھیجیں"</string>
+    <string name="sms_other" msgid="910895193552957097">"متن بھیجیں"</string>
+    <string name="sms_callback" msgid="728414485478941361">"کال بیک نمبر پر متن بھیجیں"</string>
+    <string name="sms_car" msgid="8543669230270954512">"کار کے نمبر پر متن بھیجیں"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"کمپنی کے اصل نمبر پر متن بھیجیں"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"‏ISDN نمبر پر متن بھیجیں"</string>
+    <string name="sms_main" msgid="6815987840926184815">"اصل نمبر پر متن بھیجیں"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"فیکس پر متن بھیجیں"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"ریڈیو پر متن بھیجیں"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"ٹیلکس پر متن بھیجیں"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"‏TTY / TDD پر متن بھیجیں"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"دفتر کے موبائل پر متن بھیجیں"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"دفتر کے پیجر پر متن بھیجیں"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> پر متن بھیجیں"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"‏MMS نمبر پر متن بھیجیں"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (پیغام بھیجیں)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"ویڈیو کال کریں"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"اکثر رابطہ کردہ کو صاف کریں؟"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"آپ رابطے اور فون ایپس میں اکثر رابطہ کردہ فہرست کو صاف کر دیں گے اور ای میل ایپس کو از سر نو اپنے پتے کی ترجیحات جاننے پر مجبور کریں گے۔"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"اکثر رابطہ کردہ کو صاف کر رہا ہے…"</string>
+    <string name="status_available" msgid="4832569677396634846">"دستیاب"</string>
+    <string name="status_away" msgid="6267905184545881094">"دور"</string>
+    <string name="status_busy" msgid="7111912905211403545">"مصروف"</string>
+    <string name="contactsList" msgid="7140022347217602605">"رابطے"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"دیگر"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"ڈائریکٹری"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"دفتری ڈائرکٹری"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"سبھی رابطے"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"تلاش کر رہا ہے…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g> سے زیادہ ملے۔"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"کوئی رابطے نہیں ہیں"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ملے</item>
+      <item quantity="one">1 ملا</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> کیلئے فوری رابطہ"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(کوئی نام نہیں)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"اکثر رابطہ کردہ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"رابطہ دیکھیں"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"فون نمبرز کے ساتھ سبھی رابطے"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"دفتری پروفائل رابطے"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"اپ ڈیٹس دیکھیں"</string>
+    <string name="account_phone" msgid="325867897209266837">"آلہ"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"نام"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"عرفی نام"</string>
+    <string name="full_name" msgid="885420216812981202">"نام"</string>
+    <string name="name_given" msgid="4153709115654909377">"پہلا نام"</string>
+    <string name="name_family" msgid="5317387657540738981">"آخری نام"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"نام کا سابقہ"</string>
+    <string name="name_middle" msgid="3951610314424632183">"درمیانی نام"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"نام کا لاحقہ"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"فونیٹک نام"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"فونیٹک پہلا نام"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"فونیٹک درمیانی نام"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"فونیٹک آخری نام"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"فون"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"ای میل"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"پتہ"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"تنظیم"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"تعلق"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"خاص تاریخ"</string>
+    <string name="sms" msgid="8086289395154598654">"متنی پیغام"</string>
+    <string name="postal_address" msgid="7692926530081579786">"پتہ"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"کمپنی"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"عنوان"</string>
+    <string name="label_notes" msgid="3997277594846722699">"نوٹس"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"ویب سائٹ"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"لیبلز"</string>
+    <string name="email_home" msgid="2230967805906450693">"گھر کے پتے پر ای میل کریں"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"موبائل پر ای میل کریں"</string>
+    <string name="email_work" msgid="7065971921227432400">"دفتر کو ای میل کریں"</string>
+    <string name="email_other" msgid="4601881243553289615">"ای میل کریں"</string>
+    <string name="email_custom" msgid="5777583741581538870">"ای میل کریں <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"ای میل کریں"</string>
+    <string name="postal_street" msgid="881349814077356134">"اسٹریٹ"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"‏PO باکس"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"مضافات"</string>
+    <string name="postal_city" msgid="3173008531169519309">"شہر"</string>
+    <string name="postal_region" msgid="1695206048198921115">"ریاست"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"زپ کوڈ"</string>
+    <string name="postal_country" msgid="3988452247038791892">"ملک"</string>
+    <string name="map_home" msgid="1221397355014741634">"گھر کا پتہ دیکھیں"</string>
+    <string name="map_work" msgid="9015981646907637207">"دفتر کا پتہ دیکھیں"</string>
+    <string name="map_other" msgid="55098598855607997">"پتہ دیکھیں"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> پتہ دیکھیں"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"‏AIM کے ذریعے چیٹ کریں"</string>
+    <string name="chat_msn" msgid="627481952525245054">"‏Windows Live کے ذریعے چیٹ کریں"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"‏Yahoo کے ذریعے چیٹ کریں"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"‏Skype کے ذریعے چیٹ کریں"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"‏QQ کے ذریعے چیٹ کریں"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"‏Google Talk کے ذریعے چیٹ کریں"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"‏ICQ کے ذریعے چیٹ کریں"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"‏Jabber کے ذریعے چیٹ کریں"</string>
+    <string name="chat" msgid="6297650784873558837">"چیٹ کریں"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"حذف کریں"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"نام کی فیلڈز کو پھیلائیں یا چھوٹا کریں"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"فونیٹک نام کی فیلڈز کو پھیلائیں یا سکیڑیں"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"سبھی رابطے"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"ستارے کے نشان والے"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"حسب ضرورت بنائیں"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"رابطہ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"سبھی دیگر رابطے"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"سبھی رابطے"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"مطابقت پذیر گروپ کو ہٹائیں"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"مطابقت پذیر گروپ شامل کریں"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"مزید گروپس…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\" کو مطابقت پذیری سے ہٹانے سے مطابقت پذیری سے گروپ سے خارج کردہ کوئی رابطے بھی ہٹ جائیں گے۔"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"ڈسپلے کے اختیارات محفوظ کر رہا ہے…"</string>
+    <string name="menu_done" msgid="32470053723443112">"ہو گیا"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"منسوخ کریں"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"حسب ضرورت منظر"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"درآمد کردہ رابطے اس میں محفوظ کریں:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"‏SIM کارڈ سے درآمد کریں"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"‏SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>‎ سے درآمد کریں"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"‏SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>‎ سے درآمد کریں"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"‏‎.vcf فائل سے درآمد کریں"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g> کی درآمد منسوخ کریں؟"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g> کی برآمد منسوخ کریں؟"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"وی کارڈ کی درآمد/برآمد کو منسوخ نہیں کرسکا"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"نامعلوم خرابی۔"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" کو نہیں کھول سکا: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"۔"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"برآمد کنندہ شروع نہیں ہو سکا: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"۔"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"کوئی قابل برآمد رابطہ نہیں ہے۔"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"آپ نے ایک درکار اجازت غیر فعال کر دی ہے۔"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"برآمد کرنے کے دوران ایک غلطی ہوگئی: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"۔"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"مطلوبہ فائل کا نام کافی لمبا (\"<xliff:g id="FILENAME">%s</xliff:g>\") ہے۔"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"‏I/O غلطی"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"کافی میموری نہیں ہے۔ فائل کافی بڑی ہو سکتی ہے۔"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"ایک غیر متوقع وجہ سے وی کارڈ کو پارس نہیں کرسکا۔"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"فارمیٹ تعاون یافتہ نہیں ہے۔"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"مقررہ وی کارڈ فائل (فائلوں) کی میٹا معلومات اکٹھا نہیں کرسکا۔"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"‏ایک یا مزید فائلیں درآمد نہیں ہوسکیں (%s)۔"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g> کی برآمد پوری ہوگئی۔"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"رابطوں کی برآمدگی مکمل ہو گئی۔"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"رابطوں کی برآمدگی مکمل ہو گئی، رابطوں کا اشتراک کرنے کیلئے اطلاع پر کلک کریں۔"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"رابطوں کا اشتراک کرنے کے لئے تھپتھپائیں۔"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g> کی برآمد منسوخ ہوگئی۔"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"رابطہ کا ڈیٹا برآمد کر رہا ہے"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"رابطہ ڈیٹا برآمد ہو رہا ہے۔"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"ڈیٹابیس کی معلومات حاصل نہیں ہو سکی۔"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"برآمد کرنے لائق کوئی رابطے نہیں ہیں۔ اگر آپ کے فون پر واقعی رابطے ہیں تو ممکن ہے کچھ ڈیٹا فراہم کنندگان رابطوں کو فون سے برآمد کیے جانے کی اجازت نہ دیتے ہوں۔"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"وی کارڈ کمپوزر مناسب طریقے سے شروع نہیں ہوا۔"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"برآمد نہیں کیا جاسکا"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"رابطہ کا ڈیٹا برآمد نہیں ہوا۔\nوجہ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> کو درآمد کر رہا ہے"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"وی کارڈ کا ڈیٹا نہیں پڑھ سکا"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"وی کارڈ کا ڈیٹا پڑھنا منسوخ ہوگیا"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"وی کارڈ <xliff:g id="FILENAME">%s</xliff:g> کی درآمد پوری ہوگئی"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g> کی درآمد منسوخ ہوگئی"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> جلد ہی درآمد کی جائے گی۔"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"فائل جلد ہی درآمد کی جائے گی۔"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"وی کارڈ درآمد کرنے کی درخواست مسترد ہوگئی تھی۔ بعد میں دوبارہ کوشش کریں۔"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> جلد ہی برآمد کی جائے گی۔"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"فائل تھوڑی دیر میں برآمد کر دی جائے گی۔"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"رابطے جلد ہی برآمد ہو جائیں گے۔"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"وی کارڈ برآمد کرنے کی درخواست مسترد ہوگئی تھی۔ بعد میں دوبارہ کوشش کریں۔"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"رابطہ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"وی کارڈ (کارڈز) کو مقامی عارضی اسٹوریج میں ذخیرہ کر رہا ہے۔ اصل درآمد جلد ہی شروع ہوگی۔"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"وی کارڈ درآمد نہیں کرسکا۔"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"‏NFC پر موصولہ رابطہ"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"رابطے برآمد کریں؟"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"ذخیرہ کر رہا ہے"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g> درآمد کر رہا ہے"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"‏‎.vcf فائل میں برآمد کریں"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"ترتیب دیں بلحاظ"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"پہلا نام"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"آخری نام"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"نام کا فارمیٹ"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"پہلا نام پہلے"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"آخری نام پہلے"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"اکاؤنٹس"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"نئے رابطوں کیلئے ڈیفالٹ اکاؤنٹ"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"‏رابطہ میٹا ڈیٹا مطابقت پذیر بنائیں [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"رابطہ میٹا ڈیٹا مطابقت پذیر بنائیں"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"میری معلومات"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"اپنے پروفائل کو سیٹ اپ کریں"</string>
+    <string name="setting_about" msgid="3926137653588942297">"رابطے کے بارے میں"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"ترتیبات"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"مرئی رابطوں کا اشتراک کریں"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"مرئی رابطوں کا اشتراک کرنے میں ناکام ہو گیا۔"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"پسندیدہ رابطوں کا اشتراک کریں"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"سارے رابطوں کا اشتراک کریں"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"رابطوں کا اشتراک کرنے میں ناکام۔"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"رابطے درآمد/برآمد کریں"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"رابطے درآمد کریں"</string>
+    <string name="share_error" msgid="665756457151793108">"اس رابطہ کا اشتراک نہیں کیا جا سکتا۔"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"اشتراک کرنے کے لئے کوئی رابطے نہیں ہیں۔"</string>
+    <string name="menu_search" msgid="7464453023659824700">"تلاش کریں"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"ڈسپلے کرنے کیلئے رابطے"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"ڈسپلے کرنے کیلئے رابطے"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"حسب ضرورت منظر طے کریں"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"محفوظ کریں"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"رابطے تلاش کریں"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"پسندیدہ"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"کوئی رابطے نہیں ہیں۔"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"اکثر و بیشتر کو صاف کریں"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"‏SIM کارڈ منتخب کریں"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"اکاؤنٹس کا نظم کریں"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"درآمد/برآمد کریں"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"مسدود کردہ نمبرز"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"معرفت <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> معرفت <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"تلاش کرنا بند کریں"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"تلاش صاف کریں"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"رابطہ کے ڈسپلے کے اختیارات"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"اکاؤنٹ"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"کالز کیلئے ہمیشہ اس کا استعمال کریں"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"کال کریں مع"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"ایک نوٹ کے ساتھ کال کریں"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"کال کے ساتھ بھیجنے کیلئے ایک نوٹ ٹائپ کریں…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"بھیجیں اور کال کریں"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"><xliff:g id="TITLE_2">%1$s</xliff:g>۔ <xliff:g id="COUNT_3">%2$d</xliff:g> بغیر پڑھی ہوئی آئٹمز۔ </item>
+      <item quantity="one"><xliff:g id="TITLE_0">%1$s</xliff:g>۔ <xliff:g id="COUNT_1">%2$d</xliff:g> بغیر پڑھی ہوئی آئٹم۔ </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"بلڈ ورژن"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"اوپن سورس لائسنسز"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"اوپن سورس سافٹ ویئر کیلئے لائسنس کی تفصیلات"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"رازداری کی پالیسی"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"سروس کی شرائط"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"اوپن سورس لائسنسز"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"‏URL کھولنے میں ناکامی۔"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> چیک ہو گیا"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> چیک نہیں ہوا"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"ویڈیو کال کریں"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"حذف کریں"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"ایلپسیس"</string>
+</resources>
diff --git a/res-common/values-uz-rUZ-sw600dp/strings.xml b/res-common/values-uz-rUZ-sw600dp/strings.xml
new file mode 100644
index 0000000..02883fb
--- /dev/null
+++ b/res-common/values-uz-rUZ-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Qurilma"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Eksport qilsa bo‘ladigan kontaktlar mavjud emas. Agar planshetingizda kontaktlar bo‘lsa, ba’zi tarmoq operatorlari planshetdan kontaktlarni eksport qilishga ruxsat bermaydi."</string>
+</resources>
diff --git a/res-common/values-uz-rUZ/strings.xml b/res-common/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..1123e68
--- /dev/null
+++ b/res-common/values-uz-rUZ/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Matndan nusxa olindi"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Vaqtinchalik xotiraga nusxalash"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Qo‘ng‘iroq: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Uy telefoniga qo‘ng‘iroq qilish"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Mobil"</string>
+    <string name="call_work" msgid="8299062439076337075">"Ish telefoniga qo‘ng‘iroq qilish"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Ish faks raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Uy faks raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Peyjerga qo‘ng‘iroq qilish"</string>
+    <string name="call_other" msgid="4472141328347894937">"Qo‘ng‘iroq qilish"</string>
+    <string name="call_callback" msgid="687494744634190411">"Qayta qo‘ng‘iroq raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_car" msgid="9078083109758282133">"Mashina telefon raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Kompaniya asosiy raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"ISDN telefon raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_main" msgid="4640261071249938558">"Asosiy raqamga qo‘ng‘iroq qilish"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Faks raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Radio telefon raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Teleks telefon raqamiga qo‘ng‘iroq qilish"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"TTY/TDD telefoniga qo‘ng‘iroq qilish"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Ishxona: mobil"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Ish peyjeriga qo‘ng‘iroq qilish"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Qo‘ng‘iroq: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"MMS raqamga qo‘ng‘iroq qilish"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Qo‘ng‘iroq qilish)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"<xliff:g id="CUSTOM">%s</xliff:g>ga sms jo‘natish"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Uy telefoniga sms jo‘natish"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"SMS: mobil"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Ish telefoniga sms yozish"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Ish faksiga sms jo‘natish"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Uy faksiga sms jo‘natish"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Peyjer raqamiga sms jo‘natish"</string>
+    <string name="sms_other" msgid="910895193552957097">"Boshqa telefonga sms jo‘natish"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Teskari qo‘ng‘iroq qilish raqamiga sms jo‘natish"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Mashina telefoniga sms jo‘natish"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Kompaniya asosiy telefoniga sms jo‘natish"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"ISDN telefonga sms jo‘natish"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Asosiy telefonga sms jo‘natish"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Faks raqamiga sms jo‘natish"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Radio telefonga sms jo‘natish"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Teleks telefoniga sms jo‘natish"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"TTY/TDD telefoniga sms jo‘natish"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"SMS: ishxona (mobil)"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Ish peyjeriga sms jo‘natish"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"<xliff:g id="ASSISTANT">%s</xliff:g> telefoniga qo‘ng‘iroq qilish"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"MMS telefonga sms jo‘natish"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Xabar yozish)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Videoqo‘ng‘iroq qilish"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Bu ro‘yxat tozalansinmi?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Kontaktlar va Telefon ilovalaridagi tez-tez aloqa qilingan kontaktlar ro‘yxati tozalanadi hamda e-pochta ilovalari manzillarni eslab qolishni qaytadan boshlaydi."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Ko‘p gaplashilganlar tozalanmoqda…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Aloqada"</string>
+    <string name="status_away" msgid="6267905184545881094">"Tashqarida"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Band"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Kontaktlar"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Boshqa"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Direktoriya"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Ishchi katalogi"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Barcha kontaktlar"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Qidirilmoqda…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"<xliff:g id="COUNT">%d</xliff:g>dan ko‘proq topildi."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Hech narsa topilmadi"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ta topildi</item>
+      <item quantity="one">1 found</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> uchun tez kontakt"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Ismi yo‘q)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Ko‘p gaplashilgan kontaktlar"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Kontaktni ko‘rish"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Telefon raqamli kontaktlar"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Ishchi profili kontaktlari"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Yangilanishlarni ko‘rish"</string>
+    <string name="account_phone" msgid="325867897209266837">"Qurilma"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Ism"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Taxallusi"</string>
+    <string name="full_name" msgid="885420216812981202">"To‘liq ismi"</string>
+    <string name="name_given" msgid="4153709115654909377">"Ism"</string>
+    <string name="name_family" msgid="5317387657540738981">"Familiyasi"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Ism prefiksi"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Otasining ismi"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Ism suffiksi"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Ism talaffuzi"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Ism talaffuzi"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Otasining ismi talaffuzi"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Familiya talaffuzi"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"E-pochta"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Manzil"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Tashkilot"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Aloqadorligi"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Maxsus sana"</string>
+    <string name="sms" msgid="8086289395154598654">"Matn xabari"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Manzil"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Kompaniya"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Lavozimi"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Eslatmalar"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Veb-sayt"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Yorliqlar"</string>
+    <string name="email_home" msgid="2230967805906450693">"Uy e-pochtasiga xat jo‘natish"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Mobil e-pochtaga xat yozish"</string>
+    <string name="email_work" msgid="7065971921227432400">"Ish e-pochtasiga xat jo‘natish"</string>
+    <string name="email_other" msgid="4601881243553289615">"Boshqa e-pochtalarga xat jo‘natish"</string>
+    <string name="email_custom" msgid="5777583741581538870">"<xliff:g id="CUSTOM">%s</xliff:g>ga xat jo‘natish"</string>
+    <string name="email" msgid="5624424151176351591">"E-pochta"</string>
+    <string name="postal_street" msgid="881349814077356134">"Ko‘cha"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Pochta qutisi"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Mahalla"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Shahar"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Shahar"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"ZIP kodi"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Davlat"</string>
+    <string name="map_home" msgid="1221397355014741634">"Uy manzilini ko‘rish"</string>
+    <string name="map_work" msgid="9015981646907637207">"Ish manzilini ko‘rish"</string>
+    <string name="map_other" msgid="55098598855607997">"Manzilni ko‘rish"</string>
+    <string name="map_custom" msgid="4943554530347163288">"<xliff:g id="CUSTOM">%s</xliff:g> manzillarni ko‘rish"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"AIM’da suhbatlashish"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Windows Live orqali chat"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Yahoo’da suhbatlashish"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Skype’da suhbatlashish"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"QQ’da suhbatlashish"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Google Talk’da suhbatlashish"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"ICQ’da suhbatlashish"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Jabber’da suhbatlashish"</string>
+    <string name="chat" msgid="6297650784873558837">"Suhbatlashish"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"o‘chirib tashlash"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Qo‘shimcha maydonlarni ko‘rsatish va berkitish"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Fonetik ism maydonlarni ko‘rsatish va berkitish"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Barcha kontaktlar"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Baho berilgan"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Sozlash"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Tanlangan kontakt"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Boshqa kontaktlar"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Barcha kontaktlar"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Sinx. guruhini o‘chirish"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Sinxronlash guruhini qo‘shish"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Ko‘proq guruhlar…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"\"<xliff:g id="GROUP">%s</xliff:g>\"ni sinxronlashdan olib tashlash, shuningdek, har qanday guruhlanmagan kontaktlarni sinxronlashdan olib tashlaydi."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Parametrlar saqlanmoqda…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Tayyor"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Bekor qilish"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Maxsus ko‘rinish"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Import qilingan kontaktlarni saqlash joyi:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"SIM-kartadan import qilish"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Quyidagi SIM-kartadan import qilish: <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Quyidagi SIM-kartadan import qilish: <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"VCF fayldan import qilish"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"<xliff:g id="FILENAME">%s</xliff:g>ni import qilish bekor qilinsinmi?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"<xliff:g id="FILENAME">%s</xliff:g>ni eksport qilish bekor qilinsinmi?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Tashrifnomani import/eksport qilishni bekor qilib bo‘lmadi"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Noma’lum xato."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ochilmadi: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Eksport qiluvchini ishga tushirib bo‘lmaydi: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Eksport qilsa bo‘ladigan kontakt mavjud emas."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Siz zarur ruxsatni o‘chirib qo‘ygansiz."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Eksport jarayonida xato yuz berdi: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"So‘ralgan fayl nomi juda uzun (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O xato"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Xotira yetarli emas. Fayl juda katta bo‘lishi mumkin."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Tashrifnomani kutilmagan sabab tufayli tahlil qilib bo‘lmadi."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Ushbu formatda ishlamaydi."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Berilgan tashrifnoma(lar) meta ma’lumotini yig‘ib bo‘lmadi."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Bir yoki bir necha fayllarni import qilib bo‘lmadi (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"<xliff:g id="FILENAME">%s</xliff:g>ni eksport qilish tugadi."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Kontaktlar eksport qilindi."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Kontaktlar eksport qilindi, ularni baham ko‘rish uchun bildirishnoma ustiga bosing."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Kontaktlarni baham ko‘rish uchun bosing."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"<xliff:g id="FILENAME">%s</xliff:g>ni eksport qilish bekor qilindi."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kontakt ma’lumoti eksport qilinmoqda"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Kontakt ma’lumotlari eksport qilinmoqda."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Ma’lumotlar bazasining ma’lumoti olinmadi."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Eksport qilsa bo‘ladigan kontaktlar mavjud emas. Agar telefoningizda kontaktlar bo‘lsa, ba’zi tarmoq operatorlari telefondan kontaktlarni eksport qilishga ruxsat bermaydi."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Tashrifnoma yaratgich to‘g‘ri ishga tushmagan."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Eksport qilinmadi"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Kontakt ma’lumoti eksport qilinmadi.\nSababi: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"<xliff:g id="NAME">%s</xliff:g> import qilinmoqda"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Tashrifnoma ma’lumotlari o‘qilmadi"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Tashrifnomani o‘qish bekor qilindi"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"<xliff:g id="FILENAME">%s</xliff:g> tashrifnomani import qilish tugadi"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"<xliff:g id="FILENAME">%s</xliff:g>ni import qilish bekor qilindi"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> tezda import qilinadi."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Fayl tezda import qilinadi."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Tashrifnomani import qilish so‘rovi rad qilindi. Keyinroq urinib ko‘ring."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> tezda eksport qilinadi."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Fayl tez orada eksport qilinadi."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Kontaktlar tez orada eksport qilinadi."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Tashrifnomani eksport qilish rad qilindi. Keyinroq urinib ko‘ring."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Tashrifnoma(lar) telefondagi vaqtinchalik xotira keshiga yuklanmoqda. Import qilish jarayoni tezda boshlanadi."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Tashrifnoma import qilinmadi."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Kontakt NFC orqali olindi"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Kontaktlar eksport qilinsinmi?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Keshga yuklanmoqda"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g> import qilinmoqda"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"VCF faylga eksport qilish"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Saralash tartibi"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Ismi bo‘yicha"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Familiyasi bo‘yicha"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Ism formati"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Avval ismi"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Avval familiyasi"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Hisoblar"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Yangi kontaktlar uchun birlamchi hisob"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Kontakt meta-ma’lumotlarini sinxronlash [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Kontakt meta-ma’lumotlarini sinxronlash"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Mening ma’lumotlarim"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Profilingizni sozlang"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Kontaktlar ilovasi haqida"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Sozlamalar"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Ko‘rinadigan kontaktlarni yuborish"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Ko‘rinadigan kontaktlarni yuborib bo‘lmadi."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Sevimli kontaktlarni yuborish"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Barcha kontaktlarni yuborish"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Kontaktlarni yuborib bo‘lmadi."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Kontaktlarni import/eksport qilish"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Kontaktlarni import qilish"</string>
+    <string name="share_error" msgid="665756457151793108">"Kontaktni yuborib bo‘lmadi."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Yuborish uchun hech qanday kontakt yo‘q."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Qidirish"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Ko‘rinadigan kontaktlar"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Ko‘rinadigan kontaktlar"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Maxsus ko‘rinishni aniqlash"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Saqlash"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Kontaktlarni qidirish"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Sevimlilar"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Hech qanday kontakt yo‘q."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Tez-tez aloqadagilarni tozalash"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"SIM kartani tanlash"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Hisoblarni boshqarish"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Import/eksport"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Bloklangan raqamlar"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"<xliff:g id="SOURCE">%1$s</xliff:g> orqali"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="SOURCE">%2$s</xliff:g> orqali <xliff:g id="DATE">%1$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"qidiruvni to‘xtatish"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Qidiruvni tozalash"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Kontaktlarni ko‘rsatish"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Hisob"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Har doim qo‘ng‘iroqlar u-n foyd-sin"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Ushbu bilan qo‘ng‘iroq qilish"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Qo‘ng‘iroq va izoh"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Qo‘ng‘iroqqa qo‘shib yuborish uchun izoh yozing ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"YUBORISH va QO‘NG‘IROQ QILISH"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> ta o‘qilmagan. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> ta o‘qilmagan. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Versiyasi"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Ochiq kodli DT litsenziyalari"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Ochiq kodli DT litsenziyalari haqida ma’lumot"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Maxfiylik siyosati"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Foydalanish shartlari"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Ochiq kodli DT litsenziyalari"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"URLni ochishda xatolik yuz berdi."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> belgilandi"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> belgilanmadi"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Video qo‘ng‘iroq qilish"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"O‘chirish"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Uch nuqta"</string>
+</resources>
diff --git a/res-common/values-vi-sw600dp/strings.xml b/res-common/values-vi-sw600dp/strings.xml
new file mode 100644
index 0000000..41dfd50
--- /dev/null
+++ b/res-common/values-vi-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Thiết bị"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Không thể xuất liên hệ nào. Nếu bạn có danh bạ trên máy tính bảng của mình, một số nhà cung cấp dữ liệu có thể không cho phép xuất danh bạ từ máy tính bảng."</string>
+</resources>
diff --git a/res-common/values-vi/strings.xml b/res-common/values-vi/strings.xml
new file mode 100644
index 0000000..0d8eeb2
--- /dev/null
+++ b/res-common/values-vi/strings.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Đã sao chép văn bản"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Sao chép vào khay nhớ tạm"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Gọi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Gọi số điện thoại nhà riêng"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Gọi số điện thoại di động"</string>
+    <string name="call_work" msgid="8299062439076337075">"Gọi số điện thoại cơ quan"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Gọi số fax cơ quan"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Gọi số fax nhà riêng"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Gọi số máy nhắn tin"</string>
+    <string name="call_other" msgid="4472141328347894937">"Gọi"</string>
+    <string name="call_callback" msgid="687494744634190411">"Gọi số gọi lại"</string>
+    <string name="call_car" msgid="9078083109758282133">"Gọi số điện thoại trên ô tô"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Gọi số điện thoại chính của công ty"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Gọi ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Gọi số điện thoại chính"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Gọi số fax"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Gọi số điện thoại radio"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Gọi số telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Gọi số điện thoại TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Gọi số điện thoại di động tại cơ quan"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Gọi số máy nhắn tin cơ quan"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Gọi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Gọi MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Gọi)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Nhắn tin tới <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Nhắn tin tới số điện thoại nhà riêng"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Nhắn tin tới số điện thoại di động"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Nhắn tin tới số điện thoại cơ quan"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Nhắn tin tới số fax cơ quan"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Nhắn tin tới số fax nhà riêng"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Nhắn tin tới số máy nhắn tin"</string>
+    <string name="sms_other" msgid="910895193552957097">"Nhắn tin"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Nhắn tin tới số gọi lại"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Nhắn tin tới số điện thoại trên ô tô"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Nhắn tin tới số điện thoại chính của công ty"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Nhắn tin tới số điện thoại ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Nhắn tin tới số điện thoại chính"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Nhắn tin tới số fax"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Nhắn tin tới số điện thoại radio"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Nhắn tin tới số telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Nhắn tới số TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Nhắn tới số điện thoại di động tại cơ quan"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Nhắn tin tới số máy nhắn tin cơ quan"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Nhắn tin tới <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Nhắn tin tới số điện thoại MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Tin nhắn)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Gọi điện video"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Xóa danh sách liên hệ thường xuyên?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Bạn sẽ xóa danh sách liên hệ thường xuyên trong ứng dụng Danh bạ và điện thoại cũng như buộc các ứng dụng email phải tìm hiểu các tùy chọn gửi của bạn lại từ đầu."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Đang xóa DS liên hệ thường xuyên…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Có mặt"</string>
+    <string name="status_away" msgid="6267905184545881094">"Đã ra ngoài"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Bận"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Danh bạ"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Khác"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Thư mục"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Thư mục công việc"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Tất cả người liên hệ"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Đang tìm kiếm…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Đã tìm thấy hơn <xliff:g id="COUNT">%d</xliff:g> người liên hệ."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Không có liên hệ nào"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">Đã tìm thấy <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="one">Đã tìm thấy 1</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Liên hệ nhanh của <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Không có tên)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Thường xuyên được liên hệ"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Xem người liên hệ"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Tất cả người liên hệ có số điện thoại"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Liên hệ trên hồ sơ công việc"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Xem thông tin cập nhật"</string>
+    <string name="account_phone" msgid="325867897209266837">"Thiết bị"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Tên"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Biệt hiệu"</string>
+    <string name="full_name" msgid="885420216812981202">"Tên"</string>
+    <string name="name_given" msgid="4153709115654909377">"Tên"</string>
+    <string name="name_family" msgid="5317387657540738981">"Họ"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Danh xưng"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Tên đệm"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Hậu tố tên"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Tên theo phiên âm"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Tên theo phiên âm"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Tên đệm theo phiên âm"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Họ theo phiên âm"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Điện thoại"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"Email"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Địa chỉ"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Tổ chức"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Mối quan hệ"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Ngày đặc biệt"</string>
+    <string name="sms" msgid="8086289395154598654">"Tin nhắn văn bản"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Địa chỉ"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Công ty"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Chức danh"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Ghi chú"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Trang web"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Nhãn"</string>
+    <string name="email_home" msgid="2230967805906450693">"Gửi email tới địa chỉ email nhà riêng"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Gửi email tới địa chỉ email thiết bị di động"</string>
+    <string name="email_work" msgid="7065971921227432400">"Gửi email tới địa chỉ email cơ quan"</string>
+    <string name="email_other" msgid="4601881243553289615">"Gửi email"</string>
+    <string name="email_custom" msgid="5777583741581538870">"Gửi email cho <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"Gửi email"</string>
+    <string name="postal_street" msgid="881349814077356134">"Đường phố"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"Hòm thư bưu điện"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Vùng lân cận"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Thành phố"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Tiểu bang"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Mã ZIP"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Quốc gia"</string>
+    <string name="map_home" msgid="1221397355014741634">"Xem địa chỉ nhà riêng"</string>
+    <string name="map_work" msgid="9015981646907637207">"Xem địa chỉ cơ quan"</string>
+    <string name="map_other" msgid="55098598855607997">"Xem địa chỉ"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Xem địa chỉ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Trò chuyện sử dụng AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Trò chuyện sử dụng Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Trò chuyện sử dụng Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Trò chuyện sử dụng Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Trò chuyện sử dụng QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Trò chuyện sử dụng Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Trò chuyện sử dụng ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Trò chuyện sử dụng Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Trò chuyện"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"xóa"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Mở rộng hoặc thu gọn trường tên"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Mở rộng hoặc thu gọn trường tên theo phiên âm"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Tất cả liên hệ"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Có gắn dấu sao"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Tùy chỉnh"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Liên hệ"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Tất cả liên hệ khác"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Tất cả liên hệ"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Xóa nhóm đồng bộ hóa"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Thêm nhóm đồng bộ hóa"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Nhóm khác…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Xóa \"<xliff:g id="GROUP">%s</xliff:g>\" khỏi đồng bộ hóa cũng sẽ xóa bất kỳ liên hệ nào chưa được nhóm khỏi đồng bộ hóa."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Đang lưu tuỳ chọn hiển thị…"</string>
+    <string name="menu_done" msgid="32470053723443112">"Xong"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Hủy"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Chế độ xem tùy chỉnh"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Lưu danh bạ đã nhập vào:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Nhập từ thẻ SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Nhập từ SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Nhập từ SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Nhập từ tệp .vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Hủy nhập <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Hủy xuất <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Không thể nhập/xuất vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Lỗi không xác định."</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Không thể mở \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Không thể chạy trình xuất: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Không thể xuất liên hệ nào."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Bạn đã tắt quyền được yêu cầu."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Đã xảy ra lỗi khi xuất: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Tên tệp yêu cầu quá dài (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Lỗi I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Không đủ bộ nhớ. Tệp có thể quá lớn."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Không thể phân tích cú pháp vCard vì lý do không mong muốn."</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Định dạng không được hỗ trợ."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Không thể thu thập thông tin meta của (các) tệp vCard cụ thể."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Không thể nhập một hoặc nhiều tệp (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Đã xuất xong <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Đã xuất xong danh bạ."</string>
+    <!-- no translation found for exporting_vcard_finished_toast (5995505525489290221) -->
+    <skip />
+    <!-- no translation found for touch_to_share_contacts (3237211496215699092) -->
+    <skip />
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Quá trình xuất <xliff:g id="FILENAME">%s</xliff:g> bị hủy."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Đang xuất dữ liệu liên hệ"</string>
+    <!-- no translation found for exporting_contact_list_message (141905615542638683) -->
+    <skip />
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Không thể nhận thông tin cơ sở dữ liệu."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Không thể xuất liên hệ nào. Nếu bạn có danh bạ trên điện thoại của mình, một số nhà cung cấp dữ liệu không cho phép xuất danh bạ từ điện thoại."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Trình soạn vCard không khởi động đúng."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Không thể xuất"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Không xuất được dữ liệu liên hệ.\nLý do: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Đang nhập <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Không thể đọc dữ liệu vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Thao tác đọc dữ liệu vCard bị hủy"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Đã nhập xong vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Quá trình nhập <xliff:g id="FILENAME">%s</xliff:g> bị hủy"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> sẽ sớm được nhập."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Tệp sẽ sớm được nhập."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Yêu cầu nhập vCard bị từ chối. Hãy thử lại sau."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> sẽ sớm được xuất."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Tệp sẽ sớm được xuất."</string>
+    <!-- no translation found for contacts_export_will_start_message (4527597765334949574) -->
+    <skip />
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Yêu cầu xuất vCard bị từ chối. Hãy thử lại sau."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"liên hệ"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Đang lưu vào bộ nhớ cache các tệp vCard sẽ được nhập vào bộ nhớ cục bộ tạm thời. Thao tác nhập thực sự sẽ sớm bắt đầu."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Không thể nhập vCard."</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"L.h nhận qua NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Xuất danh bạ?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Đang lưu vào bộ nhớ cache"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Đang nhập <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Xuất sang tệp .vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Sắp xếp theo"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Tên"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Họ"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Định dạng tên"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Tên trước"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Họ trước"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Tài khoản"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"Tài khoản mặc định cho các liên hệ mới"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Đồng bộ hóa siêu dữ liệu liên hệ [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Đồng bộ hóa siêu dữ liệu liên hệ"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Thông tin của tôi"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Thiết lập hồ sơ của bạn"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Giới thiệu về Danh bạ"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Cài đặt"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Chia sẻ liên hệ hiển thị"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Không chia sẻ được liên hệ được hiển thị."</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Chia sẻ liên hệ yêu thích"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Chia sẻ tất cả các liên hệ"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Không chia sẻ được liên hệ."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Nhập/xuất danh bạ"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Nhập danh bạ"</string>
+    <string name="share_error" msgid="665756457151793108">"Không thể chia sẻ liên hệ này."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Không có liên hệ nào để chia sẻ."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Tìm kiếm"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Danh bạ hiển thị"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Danh bạ hiển thị"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Xác định chế độ xem tùy chỉnh"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Lưu"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Tìm kiếm trong danh bạ"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Mục yêu thích"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Không có địa chỉ liên hệ nào."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Xóa DS liên hệ thường xuyên"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Chọn thẻ SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Quản lý tài khoản"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Nhập/xuất"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Số bị chặn"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"qua <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> qua <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"ngừng tìm kiếm"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Xóa tìm kiếm"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Tùy chọn hiển thị liên hệ"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"Tài khoản"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Luôn sử dụng SIM này để gọi"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Gọi bằng"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Gọi điện kèm theo ghi chú"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Nhập ghi chú để gửi kèm cuộc gọi..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"GỬI VÀ GỌI"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> mục chưa đọc. </item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>. <xliff:g id="COUNT_1">%2$d</xliff:g> mục chưa đọc. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Phiên bản đóng gói"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Giấy phép nguồn mở"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Chi tiết giấy phép cho phần mềm nguồn mở"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Chính sách bảo mật"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Điều khoản dịch vụ"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Giấy phép nguồn mở"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Không mở được url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"Đã kiểm tra <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"Chưa kiểm tra <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Gọi điện video"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Xóa"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Dấu ba chấm"</string>
+</resources>
diff --git a/res-common/values-zh-rCN-sw600dp/strings.xml b/res-common/values-zh-rCN-sw600dp/strings.xml
new file mode 100644
index 0000000..67b06a5
--- /dev/null
+++ b/res-common/values-zh-rCN-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"设备"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"没有可导出的联系人。如果您的平板电脑上确实存有联系人，则可能是某些数据源不允许从平板电脑中导出联系人。"</string>
+</resources>
diff --git a/res-common/values-zh-rCN/donottranslate_config.xml b/res-common/values-zh-rCN/donottranslate_config.xml
new file mode 100644
index 0000000..b357856
--- /dev/null
+++ b/res-common/values-zh-rCN/donottranslate_config.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+
+<resources>
+    <!-- If true, an option is shown in Display Options UI to choose a sort order -->
+    <bool name="config_sort_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_sort_order_primary">true</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a name display order -->
+    <bool name="config_display_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_display_order_primary">true</bool>
+
+    <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
+    <bool name="config_editor_field_order_primary">false</bool>
+</resources>
diff --git a/res-common/values-zh-rCN/strings.xml b/res-common/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..2b2aa51
--- /dev/null
+++ b/res-common/values-zh-rCN/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"文本已复制"</string>
+    <string name="copy_text" msgid="3424081789297978355">"复制到剪贴板"</string>
+    <string name="call_custom" msgid="2786306789889210756">"拨打<xliff:g id="CUSTOM">%s</xliff:g>的电话号码"</string>
+    <string name="call_home" msgid="1479549630992276827">"拨打家庭电话号码"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"拨打手机号码"</string>
+    <string name="call_work" msgid="8299062439076337075">"拨打公司电话号码"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"拨打公司传真号码"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"拨打家庭传真号码"</string>
+    <string name="call_pager" msgid="3038080882899955112">"拨打寻呼机号码"</string>
+    <string name="call_other" msgid="4472141328347894937">"拨打电话"</string>
+    <string name="call_callback" msgid="687494744634190411">"拨打回拨号码"</string>
+    <string name="call_car" msgid="9078083109758282133">"拨打车载电话号码"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"拨打公司总机号码"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"拨打 ISDN 电话号码"</string>
+    <string name="call_main" msgid="4640261071249938558">"拨打主电话号码"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"拨打传真号码"</string>
+    <string name="call_radio" msgid="9055749313292712021">"拨打无线通讯电话号码"</string>
+    <string name="call_telex" msgid="2909886619224843563">"拨打电报号码"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"拨打 TTY/TDD 号码"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"拨打公司手机号码"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"拨打公司寻呼机号码"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"拨打<xliff:g id="ASSISTANT">%s</xliff:g>的电话号码"</string>
+    <string name="call_mms" msgid="8998771923464696960">"拨打彩信电话号码"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g>（拨打电话）"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"向<xliff:g id="CUSTOM">%s</xliff:g>的电话号码发短信"</string>
+    <string name="sms_home" msgid="7765831490534280540">"向家庭电话号码发短信"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"向手机发短信"</string>
+    <string name="sms_work" msgid="3910570578912367742">"向公司电话号码发短信"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"向公司传真号码发短信"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"向家庭传真号码发短信"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"向寻呼机号码发短信"</string>
+    <string name="sms_other" msgid="910895193552957097">"发短信"</string>
+    <string name="sms_callback" msgid="728414485478941361">"向回拨号码发短信"</string>
+    <string name="sms_car" msgid="8543669230270954512">"向车载电话号码发短信"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"向公司总机号码发短信"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"向 ISDN 电话号码发短信"</string>
+    <string name="sms_main" msgid="6815987840926184815">"向主电话号码发短信"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"向传真号码发短信"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"向无线通讯电话号码发短信"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"向电报号码发短信"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"向 TTY/TDD 号码发短信"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"向公司手机发短信"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"向公司寻呼机号码发短信"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"向<xliff:g id="ASSISTANT">%s</xliff:g>发短信"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"向彩信电话号码发短信"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g>（发送短信）"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"发起视频通话"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"是否清除常用联系人？"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"此操作会清除“通讯录”和“电话”应用中的常用联系人列表，并强制电子邮件应用重新获取您最常使用的联系地址。"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"正在清除常用联系人…"</string>
+    <string name="status_available" msgid="4832569677396634846">"在线"</string>
+    <string name="status_away" msgid="6267905184545881094">"离开"</string>
+    <string name="status_busy" msgid="7111912905211403545">"忙碌"</string>
+    <string name="contactsList" msgid="7140022347217602605">"通讯录"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"其他"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"目录"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"工作目录"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"所有联系人"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"正在搜索…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"找到超过 <xliff:g id="COUNT">%d</xliff:g> 位联系人。"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"没有联系人"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">找到 <xliff:g id="COUNT">%d</xliff:g> 位联系人</item>
+      <item quantity="one">找到 1 位联系人</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g>的快速联系人照片"</string>
+    <string name="missing_name" msgid="2633118852693000081">"（无姓名）"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"常用联系人"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"查看联系人"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"所有拥有电话号码的联系人"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"工作资料通讯录"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"查看最新动态"</string>
+    <string name="account_phone" msgid="325867897209266837">"设备"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"姓名"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"昵称"</string>
+    <string name="full_name" msgid="885420216812981202">"姓名"</string>
+    <string name="name_given" msgid="4153709115654909377">"名字"</string>
+    <string name="name_family" msgid="5317387657540738981">"姓氏"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"姓名前缀"</string>
+    <string name="name_middle" msgid="3951610314424632183">"中间名"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"姓名后缀"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"姓名拼音"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"名字拼音"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"中间名拼音"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"姓氏拼音"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"电话"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"电子邮件"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"地址"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"聊天工具"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"公司或组织"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"关系"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"特别的日子"</string>
+    <string name="sms" msgid="8086289395154598654">"发送短信"</string>
+    <string name="postal_address" msgid="7692926530081579786">"地址"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"公司"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"职务"</string>
+    <string name="label_notes" msgid="3997277594846722699">"备注"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"网站"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"标签"</string>
+    <string name="email_home" msgid="2230967805906450693">"向个人邮箱发送电子邮件"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"向手机发送电子邮件"</string>
+    <string name="email_work" msgid="7065971921227432400">"向工作邮箱发送电子邮件"</string>
+    <string name="email_other" msgid="4601881243553289615">"发送电子邮件"</string>
+    <string name="email_custom" msgid="5777583741581538870">"向<xliff:g id="CUSTOM">%s</xliff:g>发送电子邮件"</string>
+    <string name="email" msgid="5624424151176351591">"发送电子邮件"</string>
+    <string name="postal_street" msgid="881349814077356134">"街道"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"邮政信箱"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"社区"</string>
+    <string name="postal_city" msgid="3173008531169519309">"城市"</string>
+    <string name="postal_region" msgid="1695206048198921115">"省/自治区/直辖市"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"邮编"</string>
+    <string name="postal_country" msgid="3988452247038791892">"国家/地区"</string>
+    <string name="map_home" msgid="1221397355014741634">"查看住宅地址"</string>
+    <string name="map_work" msgid="9015981646907637207">"查看工作地址"</string>
+    <string name="map_other" msgid="55098598855607997">"查看地址"</string>
+    <string name="map_custom" msgid="4943554530347163288">"查看<xliff:g id="CUSTOM">%s</xliff:g>地址"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"使用 AIM 聊天"</string>
+    <string name="chat_msn" msgid="627481952525245054">"使用 Windows Live 聊天"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"使用雅虎通聊天"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"使用 Skype 聊天"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"使用 QQ 聊天"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"使用Google Talk聊天"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"使用 ICQ 聊天"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"使用 Jabber 聊天"</string>
+    <string name="chat" msgid="6297650784873558837">"聊天"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"删除"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"展开或折叠姓名字段"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"展开或折叠姓名拼音字段"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"所有联系人"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"已加星标"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"自定义"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"联系人"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"其他所有联系人"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"所有联系人"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"删除同步群组"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"添加同步群组"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"更多群组..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"如果您停止同步“<xliff:g id="GROUP">%s</xliff:g>”，将同时停止同步所有未分组的联系人。"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"正在保存显示选项..."</string>
+    <string name="menu_done" msgid="32470053723443112">"完成"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"取消"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"自定义视图"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"将导入的联系人保存到："</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"从 SIM 卡导入"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"从 SIM 卡“<xliff:g id="SIM_NAME">^1</xliff:g>” - <xliff:g id="SIM_NUMBER">^2</xliff:g> 导入"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"从 SIM 卡“<xliff:g id="SIM_NAME">%1$s</xliff:g>”导入"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"从 .vcf 文件导入"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"要取消导入“<xliff:g id="FILENAME">%s</xliff:g>”吗？"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"要取消导出“<xliff:g id="FILENAME">%s</xliff:g>”吗？"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"无法取消导入/导出 vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"未知错误。"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"无法打开“<xliff:g id="FILE_NAME">%s</xliff:g>”：<xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"无法启动导出程序：“<xliff:g id="EXACT_REASON">%s</xliff:g>”。"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"没有可导出的联系人。"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"您已停用某项必需权限。"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"导出时出错：“<xliff:g id="EXACT_REASON">%s</xliff:g>”。"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"指定的文件名过长（“<xliff:g id="FILENAME">%s</xliff:g>”）。"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O 错误"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"内存不足。该文件可能过大。"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"由于意外原因而无法解析 vCard。"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"不支持此格式。"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"无法收集指定 vCard 文件的元信息。"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"一个或多个文件无法导入 (%s)。"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"已顺利导出“<xliff:g id="FILENAME">%s</xliff:g>”。"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"已成功导出联系人。"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"联系人数据导出已完成；点击通知即可分享联系人数据。"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"点按即可分享联系人数据。"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"已取消导出“<xliff:g id="FILENAME">%s</xliff:g>”。"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"正在导出联系人数据"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"正在导出联系人数据。"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"无法获取数据库信息。"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"没有可导出的联系人。如果您手机上确实存有联系人信息，则可能是某些数据源不允许您从手机中导出联系人信息。"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard 制作程序未正确启动。"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"无法导出"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"未导出联系人数据。\n原因：“<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"正在导入<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"无法读取 vCard 数据"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"已取消读取 vCard 数据"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"已顺利导入 vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"已取消导入“<xliff:g id="FILENAME">%s</xliff:g>”"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"“<xliff:g id="FILENAME">%s</xliff:g>”将在稍后导入。"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"该文件将在稍后导入。"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard 导入请求遭拒，请稍后重试。"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"“<xliff:g id="FILENAME">%s</xliff:g>”将在稍后导出。"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"该文件将在稍后导出。"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"即将导出联系人数据。"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard 导出请求遭拒，请稍后重试。"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"联系人"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"正在将 vCard 缓存到本地临时存储空间。实际导入操作即将开始。"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"无法导入 vCard。"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"通过NFC收到的联系人"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"要导出联系人吗？"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"正在缓存"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"正在导入 - <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>：<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"导出为 .vcf 文件"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"排序方式"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"名字"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"姓氏"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"姓名格式"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"名字在前"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"姓氏在前"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"帐号"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"用于保存新联系人的默认帐号"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"同步联系人元数据 [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"同步联系人元数据"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"我的信息"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"设置您的个人资料"</string>
+    <string name="setting_about" msgid="3926137653588942297">"关于通讯录"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"设置"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"分享所显示的联系人"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"无法分享所显示的联系人。"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"分享收藏的联系人"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"分享所有联系人"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"无法分享联系人。"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"导入/导出联系人"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"导入联系人"</string>
+    <string name="share_error" msgid="665756457151793108">"无法分享此联系人。"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"没有可供分享的联系人。"</string>
+    <string name="menu_search" msgid="7464453023659824700">"搜索"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"要显示的联系人"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"要显示的联系人"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"自定义联系人视图"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"保存"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"搜索联系人"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"收藏"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"没有联系人。"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"清除常用联系人"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"选择SIM卡"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"管理帐号"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"导入/导出"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"已屏蔽的号码"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"来源：<xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g>，来源：<xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"停止搜索"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"清除搜索内容"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"联系人显示选项"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"帐号"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"一律使用这张卡进行通话"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"用于外拨电话的帐号"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"拨打电话并发送备注"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"输入要在拨打电话时发送的备注…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"发送记事并拨打电话"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>。<xliff:g id="COUNT_3">%2$d</xliff:g> 项未读内容。</item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>。<xliff:g id="COUNT_1">%2$d</xliff:g> 项未读内容。</item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"版本号"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"开放源代码许可"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"开放源代码软件的许可详情"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"隐私权政策"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"服务条款"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"开放源代码许可"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"无法打开网址。"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"已选中 <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"未选中 <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"发起视频通话"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"删除"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"省略号"</string>
+</resources>
diff --git a/res-common/values-zh-rHK-sw600dp/strings.xml b/res-common/values-zh-rHK-sw600dp/strings.xml
new file mode 100644
index 0000000..ce478d0
--- /dev/null
+++ b/res-common/values-zh-rHK-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"裝置"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"沒有聯絡人資料可以匯出。如果您的平板電腦中確實有聯絡人資料，則可能是部分資料提供者不允許您將聯絡人資料從平板電腦匯出。"</string>
+</resources>
diff --git a/res-common/values-zh-rHK/strings.xml b/res-common/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..02f3b09
--- /dev/null
+++ b/res-common/values-zh-rHK/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"文字已複製"</string>
+    <string name="copy_text" msgid="3424081789297978355">"複製到剪貼簿"</string>
+    <string name="call_custom" msgid="2786306789889210756">"撥打<xliff:g id="CUSTOM">%s</xliff:g>電話號碼"</string>
+    <string name="call_home" msgid="1479549630992276827">"撥打住家電話號碼"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"撥打手機號碼"</string>
+    <string name="call_work" msgid="8299062439076337075">"撥打公司電話號碼"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"撥打公司傳真號碼"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"撥打住家傳真號碼"</string>
+    <string name="call_pager" msgid="3038080882899955112">"撥打傳呼機號碼"</string>
+    <string name="call_other" msgid="4472141328347894937">"撥號"</string>
+    <string name="call_callback" msgid="687494744634190411">"撥打回撥號碼"</string>
+    <string name="call_car" msgid="9078083109758282133">"撥打車用電話號碼"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"撥打公司總機號碼"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"撥打 ISDN 電話號碼"</string>
+    <string name="call_main" msgid="4640261071249938558">"撥打總機號碼"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"撥打傳真號碼"</string>
+    <string name="call_radio" msgid="9055749313292712021">"撥打電台號碼"</string>
+    <string name="call_telex" msgid="2909886619224843563">"撥打 Telex 電話號碼"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"撥打 TTY/TDD 電話號碼"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"撥打公司手機號碼"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"撥打公司傳呼機號碼"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"撥打<xliff:g id="ASSISTANT">%s</xliff:g>的電話號碼"</string>
+    <string name="call_mms" msgid="8998771923464696960">"撥打 MMS 電話號碼"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (通話)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"傳送短訊至<xliff:g id="CUSTOM">%s</xliff:g>電話"</string>
+    <string name="sms_home" msgid="7765831490534280540">"傳送短訊至住家電話"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"傳送短訊至手機"</string>
+    <string name="sms_work" msgid="3910570578912367742">"傳送短訊至公司電話"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"傳送短訊至公司傳真"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"傳送短訊至住家傳真"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"傳送短訊至傳呼機"</string>
+    <string name="sms_other" msgid="910895193552957097">"傳送短訊"</string>
+    <string name="sms_callback" msgid="728414485478941361">"傳送短訊至回撥號碼"</string>
+    <string name="sms_car" msgid="8543669230270954512">"傳送短訊至車用電話"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"傳送短訊至公司總機"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"傳送短訊至 ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"傳送短訊至總機"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"傳送短訊至傳真"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"傳送短訊至電台"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"傳送短訊至 Telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"傳送短訊至 TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"傳送短訊至公司手機"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"傳送短訊至公司傳呼機"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"傳送短訊至<xliff:g id="ASSISTANT">%s</xliff:g>的電話"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"傳送短訊至 MMS 電話號碼"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (訊息)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"進行視像通話"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"清除常用聯絡人？"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單，並強制電子郵件應用程式重新取得您的寄件喜好設定。"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"正在清除常用聯絡人…"</string>
+    <string name="status_available" msgid="4832569677396634846">"在線"</string>
+    <string name="status_away" msgid="6267905184545881094">"離開"</string>
+    <string name="status_busy" msgid="7111912905211403545">"忙碌"</string>
+    <string name="contactsList" msgid="7140022347217602605">"通訊錄"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"其他"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"名錄"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"工作目錄"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"所有聯絡人"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"正在搜尋..."</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"找到超過 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人。"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"沒有聯絡人"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">找到 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人</item>
+      <item quantity="one">找到 1 位聯絡人</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"快速聯絡<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(沒有名稱)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"常用聯絡人"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"查看聯絡人資料"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"所有附有電話號碼的聯絡人"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"工作設定檔通訊錄"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"瀏覽更新資訊"</string>
+    <string name="account_phone" msgid="325867897209266837">"裝置"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"姓名"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"暱稱"</string>
+    <string name="full_name" msgid="885420216812981202">"姓名"</string>
+    <string name="name_given" msgid="4153709115654909377">"名字"</string>
+    <string name="name_family" msgid="5317387657540738981">"姓氏"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"姓名前稱謂"</string>
+    <string name="name_middle" msgid="3951610314424632183">"中間名"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"姓名後稱謂"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"姓名拼音"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"名字拼音"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"中間名 (拼音)"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"姓氏拼音"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"電話"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"電郵地址"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"地址"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"即時通訊"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"機構"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"關係"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"特別日期"</string>
+    <string name="sms" msgid="8086289395154598654">"傳送短訊"</string>
+    <string name="postal_address" msgid="7692926530081579786">"地址"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"公司"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"職稱"</string>
+    <string name="label_notes" msgid="3997277594846722699">"附註"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"網站"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"標籤"</string>
+    <string name="email_home" msgid="2230967805906450693">"傳送電郵至住家信箱"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"傳送電郵至手機"</string>
+    <string name="email_work" msgid="7065971921227432400">"傳送電郵至公司信箱"</string>
+    <string name="email_other" msgid="4601881243553289615">"傳送電郵"</string>
+    <string name="email_custom" msgid="5777583741581538870">"傳送電郵至<xliff:g id="CUSTOM">%s</xliff:g>的信箱"</string>
+    <string name="email" msgid="5624424151176351591">"傳送電郵"</string>
+    <string name="postal_street" msgid="881349814077356134">"街道"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"郵政信箱"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"社區"</string>
+    <string name="postal_city" msgid="3173008531169519309">"城市"</string>
+    <string name="postal_region" msgid="1695206048198921115">"州/省"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"郵遞區號"</string>
+    <string name="postal_country" msgid="3988452247038791892">"國家/地區"</string>
+    <string name="map_home" msgid="1221397355014741634">"查看住家地址"</string>
+    <string name="map_work" msgid="9015981646907637207">"查看公司地址"</string>
+    <string name="map_other" msgid="55098598855607997">"查看地址"</string>
+    <string name="map_custom" msgid="4943554530347163288">"查看<xliff:g id="CUSTOM">%s</xliff:g>地址"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"使用 AIM 進行即時通訊"</string>
+    <string name="chat_msn" msgid="627481952525245054">"使用 Windows Live 進行即時通訊"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"使用 Yahoo 進行即時通訊"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"使用 Skype 進行即時通訊"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"使用 QQ 進行即時通訊"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"使用 Google Talk 進行即時通訊"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"使用 ICQ 進行即時通訊"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"使用 Jabber 進行即時通訊"</string>
+    <string name="chat" msgid="6297650784873558837">"即時通訊"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"刪除"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"展開或收合名稱欄位"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"展開或收合拼音名稱欄"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"所有聯絡人"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"已加星號"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"自訂"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"聯絡人"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"所有其他聯絡人"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"所有聯絡人"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"移除同步群組"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"新增同步群組"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"更多群組…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"如果從同步設定中移除「<xliff:g id="GROUP">%s</xliff:g>」群組，也會移除任何未分組的聯絡人。"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"正在儲存顯示選項…"</string>
+    <string name="menu_done" msgid="32470053723443112">"完成"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"取消"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"自訂檢視"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"儲存匯入的聯絡人至以下帳戶："</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"從 SIM 卡匯入"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"從 SIM 卡匯入 <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"從 SIM 卡匯入 <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"匯入 .vcf 檔案"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"要取消匯入 <xliff:g id="FILENAME">%s</xliff:g> 嗎？"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"要取消匯出 <xliff:g id="FILENAME">%s</xliff:g> 嗎？"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"無法取消匯入/匯出 vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"不明錯誤。"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"無法開啟 <xliff:g id="FILE_NAME">%s</xliff:g>：「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"無法啟動匯出程式：「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"沒有聯絡人資料可以匯出。"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"您已停用所需權限。"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"匯出時發生錯誤：「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"要求的檔案名稱過長 (「<xliff:g id="FILENAME">%s</xliff:g>」)。"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O 錯誤"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"記憶體不足，檔案可能過大。"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"由於未預期的原因，無法剖析 vCard。"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"不支援此格式。"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"無法從指定的 vCard 檔案收集中繼資料。"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"無法匯入一個或多個檔案 (%s)。"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"已完成匯出 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"已匯出聯絡人。"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"已完成匯出通訊錄，按一下通知即可共用通訊錄。"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"輕按即可共用通訊錄。"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"已取消匯出 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"正在匯出聯絡人資料"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"正在匯出聯絡人資料。"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"無法取得資料庫資訊。"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"沒有聯絡人資料可以匯出。如果您的手機中確實存有聯絡人資料，則可能是部分資料提供者不允許您將聯絡人資料從手機中匯出。"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard 編輯器並未正確啟動。"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"無法匯出"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"聯絡人資料未匯出。\n原因：「<xliff:g id="FAIL_REASON">%s</xliff:g>」"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"正在匯入 <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"無法讀取 vCard 資料"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"已取消讀取 vCard 資料的操作"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"已完成匯入 vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"已取消匯入 <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> 將在稍後匯入。"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"稍後即將匯入檔案。"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard 匯入要求已被拒，請稍後再試。"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> 將在稍後匯出。"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"檔案即將匯出。"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"系統即將匯出通訊錄。"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard 匯出要求已被拒，請稍後再試。"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"聯絡人"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"正在將 vCard 資料快取至本機暫存空間，隨即將開始實際的匯入操作。"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"無法匯入 vCard。"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"已透過 NFC 收到聯絡人資料"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"要匯出聯絡人資料嗎？"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"快取中"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"正在匯入第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 個：<xliff:g id="NAME">%s</xliff:g>，共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 個"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"匯出至 .vcf 檔案"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"排序方式"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"名字"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"姓氏"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"姓名格式"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"名字在前"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"姓氏在前"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"帳戶"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"新聯絡人的預設帳戶"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"同步處理聯絡人元數據 [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"同步處理聯絡人元數據"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"我的資訊"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"設定您的個人檔案"</string>
+    <string name="setting_about" msgid="3926137653588942297">"有關通訊錄"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"設定"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"分享正常顯示的聯絡人"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"無法分享顯示的聯絡人"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"分享常用聯絡人資料"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"分享所有聯絡人資料"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"無法分享聯絡人資料。"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"匯入/匯出通訊錄"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"匯入通訊錄"</string>
+    <string name="share_error" msgid="665756457151793108">"無法分享這位聯絡人的資料。"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"沒有聯絡人可供分享。"</string>
+    <string name="menu_search" msgid="7464453023659824700">"搜尋"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"要顯示的聯絡人"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"要顯示的聯絡人"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"定義自訂檢視"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"儲存"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"搜尋聯絡人"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"最愛的聯絡人"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"沒有聯絡人。"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"清除常用聯絡人"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"選取 SIM 卡"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"管理帳戶"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"匯入/匯出"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"已封鎖的號碼"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"透過 <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> (透過 <xliff:g id="SOURCE">%2$s</xliff:g>)"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"停止搜尋"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"清除搜尋"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"聯絡人顯示選項"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"帳戶"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"永遠使用這張 SIM 卡通話"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"選取用於撥號的 SIM 卡："</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"撥號時傳送筆記"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"撥號時可以書寫和傳送筆記…"</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"傳送和撥號"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g> (<xliff:g id="COUNT_3">%2$d</xliff:g> 個未讀取項目)</item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g> (<xliff:g id="COUNT_1">%2$d</xliff:g> 個未讀取項目)</item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"版本"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"開放原始碼授權"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"開放原始碼軟件的授權詳情"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"私隱權政策"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"服務條款"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"開放原始碼授權"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"無法開啟網址。"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"已選取 <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"未選取 <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"開始視像通話"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"刪除"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"省略號"</string>
+</resources>
diff --git a/res-common/values-zh-rTW-sw600dp/strings.xml b/res-common/values-zh-rTW-sw600dp/strings.xml
new file mode 100644
index 0000000..8e2348a
--- /dev/null
+++ b/res-common/values-zh-rTW-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"裝置"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"沒有可匯出的聯絡人。如果您的平板電腦中確實有聯絡人資料，那麼可能是部分資料提供者不允許您將聯絡人資料從平板電腦匯出。"</string>
+</resources>
diff --git a/res-common/values-zh-rTW/donottranslate_config.xml b/res-common/values-zh-rTW/donottranslate_config.xml
new file mode 100644
index 0000000..b357856
--- /dev/null
+++ b/res-common/values-zh-rTW/donottranslate_config.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+
+<resources>
+    <!-- If true, an option is shown in Display Options UI to choose a sort order -->
+    <bool name="config_sort_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_sort_order_primary">true</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a name display order -->
+    <bool name="config_display_order_user_changeable">false</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_display_order_primary">true</bool>
+
+    <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
+    <bool name="config_editor_field_order_primary">false</bool>
+</resources>
diff --git a/res-common/values-zh-rTW/strings.xml b/res-common/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..a09d233
--- /dev/null
+++ b/res-common/values-zh-rTW/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"文字已複製"</string>
+    <string name="copy_text" msgid="3424081789297978355">"複製到剪貼簿"</string>
+    <string name="call_custom" msgid="2786306789889210756">"撥打<xliff:g id="CUSTOM">%s</xliff:g>電話號碼"</string>
+    <string name="call_home" msgid="1479549630992276827">"撥打住家電話號碼"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"撥打手機號碼"</string>
+    <string name="call_work" msgid="8299062439076337075">"撥打公司電話號碼"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"撥打公司傳真號碼"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"撥打住家傳真號碼"</string>
+    <string name="call_pager" msgid="3038080882899955112">"撥打呼叫器號碼"</string>
+    <string name="call_other" msgid="4472141328347894937">"撥號"</string>
+    <string name="call_callback" msgid="687494744634190411">"撥打回撥號碼"</string>
+    <string name="call_car" msgid="9078083109758282133">"撥打車用電話號碼"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"撥打公司代表號"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"撥打 ISDN 電話號碼"</string>
+    <string name="call_main" msgid="4640261071249938558">"撥打代表號"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"撥打傳真號碼"</string>
+    <string name="call_radio" msgid="9055749313292712021">"撥打無線電號碼"</string>
+    <string name="call_telex" msgid="2909886619224843563">"撥打電報電話號碼"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"撥打 TTY/TDD 電話號碼"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"撥打公司手機號碼"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"撥打公司呼叫器號碼"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"撥打<xliff:g id="ASSISTANT">%s</xliff:g>電話號碼"</string>
+    <string name="call_mms" msgid="8998771923464696960">"撥打 MMS 電話號碼"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (撥號)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"傳送簡訊至<xliff:g id="CUSTOM">%s</xliff:g>電話"</string>
+    <string name="sms_home" msgid="7765831490534280540">"傳送簡訊至住家電話"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"傳送簡訊至手機"</string>
+    <string name="sms_work" msgid="3910570578912367742">"傳送簡訊至公司電話"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"傳送簡訊至公司傳真"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"傳送簡訊至住家傳真"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"傳送簡訊至呼叫器"</string>
+    <string name="sms_other" msgid="910895193552957097">"傳送簡訊"</string>
+    <string name="sms_callback" msgid="728414485478941361">"傳送簡訊至回撥號碼"</string>
+    <string name="sms_car" msgid="8543669230270954512">"傳送簡訊至車用電話"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"傳送簡訊至公司代表號"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"傳送簡訊至 ISDN 電話"</string>
+    <string name="sms_main" msgid="6815987840926184815">"傳送簡訊至代表號"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"傳送簡訊至傳真"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"傳送簡訊至無線電"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"傳送簡訊至電報電話"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"傳送簡訊至 TTY/TDD 電話"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"傳送簡訊至公司手機"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"傳送簡訊至公司呼叫器"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"傳送簡訊至<xliff:g id="ASSISTANT">%s</xliff:g>電話"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"傳送簡訊至 MMS 電話"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (傳送簡訊)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"進行視訊通話"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"清除常用聯絡人？"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"您即將清除「聯絡人」應用程式和「電話」應用程式中的常用聯絡人清單，並設定讓電子郵件應用程式重新熟悉您的寄件偏好設定。"</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"正在清除常用聯絡人…"</string>
+    <string name="status_available" msgid="4832569677396634846">"線上"</string>
+    <string name="status_away" msgid="6267905184545881094">"離開"</string>
+    <string name="status_busy" msgid="7111912905211403545">"忙碌"</string>
+    <string name="contactsList" msgid="7140022347217602605">"聯絡人"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"其他"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"目錄"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Work 聯絡人目錄"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"所有聯絡人"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"搜尋中…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"找到 <xliff:g id="COUNT">%d</xliff:g> 位以上的聯絡人。"</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"沒有聯絡人"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="other">找到 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人</item>
+      <item quantity="one">找到 1 位聯絡人</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"<xliff:g id="NAME">%1$s</xliff:g> 的快速聯絡人相片"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(無姓名)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"經常聯絡"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"查看聯絡人"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"所有包含電話號碼的聯絡人資訊"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Work 設定檔聯絡人"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"查看最新動態"</string>
+    <string name="account_phone" msgid="325867897209266837">"裝置"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"姓名"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"暱稱"</string>
+    <string name="full_name" msgid="885420216812981202">"姓名"</string>
+    <string name="name_given" msgid="4153709115654909377">"名字"</string>
+    <string name="name_family" msgid="5317387657540738981">"姓氏"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"姓名前稱銜"</string>
+    <string name="name_middle" msgid="3951610314424632183">"中間名"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"姓名後稱銜"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"姓名拼音"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"名字拼音"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"中間名拼音"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"姓氏拼音"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"電話號碼"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"電子郵件"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"地址"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"即時訊息"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"機構"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"關係"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"特別的日子"</string>
+    <string name="sms" msgid="8086289395154598654">"簡訊"</string>
+    <string name="postal_address" msgid="7692926530081579786">"地址"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"公司"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"職稱"</string>
+    <string name="label_notes" msgid="3997277594846722699">"附註"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"網站"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"標籤"</string>
+    <string name="email_home" msgid="2230967805906450693">"傳送電子郵件至住家電子郵件地址"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"傳送電子郵件至行動裝置"</string>
+    <string name="email_work" msgid="7065971921227432400">"傳送電子郵件至公司電子郵件地址"</string>
+    <string name="email_other" msgid="4601881243553289615">"電子郵件"</string>
+    <string name="email_custom" msgid="5777583741581538870">"傳送電子郵件至「<xliff:g id="CUSTOM">%s</xliff:g>」"</string>
+    <string name="email" msgid="5624424151176351591">"傳送電子郵件"</string>
+    <string name="postal_street" msgid="881349814077356134">"街"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"郵政信箱"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"鄰"</string>
+    <string name="postal_city" msgid="3173008531169519309">"縣市鄉鎮"</string>
+    <string name="postal_region" msgid="1695206048198921115">"州"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"郵遞區號"</string>
+    <string name="postal_country" msgid="3988452247038791892">"國家/地區"</string>
+    <string name="map_home" msgid="1221397355014741634">"檢視住家地址"</string>
+    <string name="map_work" msgid="9015981646907637207">"檢視公司地址"</string>
+    <string name="map_other" msgid="55098598855607997">"檢視地址"</string>
+    <string name="map_custom" msgid="4943554530347163288">"檢視<xliff:g id="CUSTOM">%s</xliff:g>地址"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"使用 AIM 進行即時通訊"</string>
+    <string name="chat_msn" msgid="627481952525245054">"使用 Windows Live 進行即時通訊"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"使用 Yahoo 進行即時通訊"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"使用 Skype 進行即時通訊"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"使用 QQ 進行即時通訊"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"使用 Google Talk 進行即時通訊"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"使用 ICQ 進行即時通訊"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"使用 Jabber 進行即時通訊"</string>
+    <string name="chat" msgid="6297650784873558837">"即時通訊"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"刪除"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"展開或收合名稱欄位"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"展開或收合姓名拼音欄位"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"所有聯絡人"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"已加星號"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"自訂"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"聯絡人"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"所有其他聯絡人"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"所有聯絡人"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"移除同步處理群組"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"新增同步處理群組"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"更多群組…"</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"如果停用「<xliff:g id="GROUP">%s</xliff:g>」群組的同步處理設定，也會停止同步處理任何未分組的聯絡人。"</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"正在儲存顯示選項…"</string>
+    <string name="menu_done" msgid="32470053723443112">"完成"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"取消"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"自訂檢視"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"將匯入的聯絡人儲存到："</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"從 SIM 卡匯入"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"從 SIM 卡 <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g> 匯入"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"從 SIM 卡 <xliff:g id="SIM_NAME">%1$s</xliff:g> 匯入"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"從 .vcf 檔案匯入"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"確定要取消匯入 <xliff:g id="FILENAME">%s</xliff:g>？"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"確定要取消匯出 <xliff:g id="FILENAME">%s</xliff:g>？"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"無法取消匯入/匯出 vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"未知的錯誤。"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"無法開啟「<xliff:g id="FILE_NAME">%s</xliff:g>」：<xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"無法啟動匯出程式：「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"沒有可匯出的聯絡人。"</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"必要權限已停用。"</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"匯出時發生錯誤：「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"要求的檔案名稱過長 (「<xliff:g id="FILENAME">%s</xliff:g>」)。"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"I/O 錯誤"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"記憶體不足，檔案可能過大。"</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"由於意外因素，導致無法剖析 vCard。"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"不支援此格式。"</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"無法從指定的 vCard 檔案收集中繼資料。"</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"無法匯入一或多個檔案 (%s)。"</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"已完成 <xliff:g id="FILENAME">%s</xliff:g> 匯出作業。"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"匯出聯絡人完成。"</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"聯絡人資料匯出完畢，按一下通知即可分享聯絡人資料。"</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"輕觸即可分享聯絡人資料。"</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"已取消匯出 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"正在匯出聯絡人資料"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"正在匯出聯絡人資料。"</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"無法取得資料庫資訊。"</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"沒有可匯出的聯絡人。如果您的手機中確實有聯絡人資料，那麼可能是部分資料提供者不允許您將聯絡人資料從手機中匯出。"</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"vCard 編輯器並未正確啟動。"</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"無法匯出"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"聯絡人資料未匯出。\n原因：「<xliff:g id="FAIL_REASON">%s</xliff:g>」"</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"正在匯入 <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"無法讀取 vCard 資料"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"已取消讀取 vCard 資料"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"已完成匯入 vCard 的 <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"已取消匯入 <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> 將在稍後匯入。"</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"稍後即將匯入該檔案。"</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"vCard 匯入要求遭到拒絕，請稍後再試。"</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> 將在稍後匯出。"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"稍後即將匯出該檔案。"</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"即將匯出聯絡人資料。"</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"vCard 匯出要求遭到拒絕，請稍後再試。"</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"聯絡人"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"正在將 vCard 資料快取至本機暫存空間，隨即將啟動實際的匯入作業。"</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"無法匯入 vCard。"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"已透過 NFC 收到聯絡人資訊"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"確定要匯出聯絡人？"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"快取中"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"正在匯入第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 筆資料 (共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 筆)：<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"匯出成 .vcf 檔案"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"排序依據"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"名字"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"姓氏"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"姓名格式"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"名字在前"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"姓氏在前"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"帳戶"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"新聯絡人的預設帳戶"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"同步處理聯絡人中繼資料 [處於 Dogfood 測試階段]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"同步處理聯絡人中繼資料"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"我的資訊"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"設定您的個人資料"</string>
+    <string name="setting_about" msgid="3926137653588942297">"關於聯絡人"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"設定"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"分享正常顯示的聯絡人"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"無法分享目前顯示的聯絡人資料。"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"分享常用聯絡人資料"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"分享所有聯絡人資料"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"無法分享聯絡人資料。"</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"匯入/匯出聯絡人"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"匯入聯絡人"</string>
+    <string name="share_error" msgid="665756457151793108">"無法分享這位聯絡人的資料。"</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"沒有任何聯絡人資料可供分享。"</string>
+    <string name="menu_search" msgid="7464453023659824700">"搜尋"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"要顯示的聯絡人"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"要顯示的聯絡人"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"定義自訂檢視"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"儲存"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"搜尋聯絡人"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"常用聯絡人"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"沒有聯絡人。"</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"清除常用聯絡人"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"選取 SIM 卡"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"管理帳戶"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"匯入/匯出"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"已封鎖的號碼"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"透過 <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> (透過 <xliff:g id="SOURCE">%2$s</xliff:g>)"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"停止搜尋"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"清除搜尋"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"聯絡人顯示選項"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"帳戶"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"一律使用這張 SIM 卡通話"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"選擇通話帳戶"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"撥號時傳送備註"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"輸入可在撥號時傳送的備註..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"傳送並撥號"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>。<xliff:g id="COUNT_3">%2$d</xliff:g> 個未讀取的項目。</item>
+      <item quantity="one"> <xliff:g id="TITLE_0">%1$s</xliff:g>。<xliff:g id="COUNT_1">%2$d</xliff:g> 個未讀取的項目。</item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"版本"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"開放原始碼授權"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"開放原始碼軟體的授權詳細資料"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"隱私權政策"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"服務條款"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"開放原始碼授權"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"無法開啟網址。"</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"已勾選 <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"未勾選 <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"撥打視訊通話"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"刪除"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"省略符號"</string>
+</resources>
diff --git a/res-common/values-zu-sw600dp/strings.xml b/res-common/values-zu-sw600dp/strings.xml
new file mode 100644
index 0000000..863d784
--- /dev/null
+++ b/res-common/values-zu-sw600dp/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="account_phone" msgid="3986576492011309404">"Idivaysi"</string>
+    <string name="composer_has_no_exportable_contact" msgid="441543908614399381">"Abekho oxhumana nabo abangathumeleka. Uma unabo oxhumana nabo kuthebulethi yakho, abanye abahlinzeki bedatha kungenzeka bangavumi ukuthi oxhumana nabo bathuyelwe kusukela kuthebulethi."</string>
+</resources>
diff --git a/res-common/values-zu/strings.xml b/res-common/values-zu/strings.xml
new file mode 100644
index 0000000..d358ef5
--- /dev/null
+++ b/res-common/values-zu/strings.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Umbhalo okopishiwe"</string>
+    <string name="copy_text" msgid="3424081789297978355">"Kopisha kubhodi lokunamathisela"</string>
+    <string name="call_custom" msgid="2786306789889210756">"Fonela ku-<xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="1479549630992276827">"Fonela ekhaya"</string>
+    <string name="call_mobile" msgid="8618334085824709009">"Fonela iselula"</string>
+    <string name="call_work" msgid="8299062439076337075">"Fonela emsebenzini"</string>
+    <string name="call_fax_work" msgid="3770754834467992571">"Fonela ifeksi yasemsebenzini"</string>
+    <string name="call_fax_home" msgid="6219051113573396065">"Fonela ifeksi yasekhaya"</string>
+    <string name="call_pager" msgid="3038080882899955112">"Fonela isicingo"</string>
+    <string name="call_other" msgid="4472141328347894937">"Fonela"</string>
+    <string name="call_callback" msgid="687494744634190411">"Fonela ukufonela emuva"</string>
+    <string name="call_car" msgid="9078083109758282133">"Fonela imoto"</string>
+    <string name="call_company_main" msgid="8768047233970315359">"Fonela isisekelo senkampani"</string>
+    <string name="call_isdn" msgid="3342482563847537747">"Fonela i-ISDN"</string>
+    <string name="call_main" msgid="4640261071249938558">"Fonela isisekelo"</string>
+    <string name="call_other_fax" msgid="2536328553125487877">"Fonela ifeksi"</string>
+    <string name="call_radio" msgid="9055749313292712021">"Fonela umsakazo"</string>
+    <string name="call_telex" msgid="2909886619224843563">"Fonela i-telex"</string>
+    <string name="call_tty_tdd" msgid="6704940636171078852">"Fonela i-TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="4408630608955148641">"Fonela iselula yasemsebenzini"</string>
+    <string name="call_work_pager" msgid="3036932765279753793">"Fonela isicingo sasemsebenzini"</string>
+    <string name="call_assistant" msgid="5188990854852312696">"Fonela <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="8998771923464696960">"Fonela i-MMS"</string>
+    <string name="call_by_shortcut" msgid="4053430514293064454">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Ikholi)"</string>
+    <string name="sms_custom" msgid="4601748252470175865">"Bhalela ku-<xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="7765831490534280540">"Bhalela ekhaya"</string>
+    <string name="sms_mobile" msgid="8387632124165893103">"Bhalela iselula"</string>
+    <string name="sms_work" msgid="3910570578912367742">"Bhalela emsebenzini"</string>
+    <string name="sms_fax_work" msgid="909086167151248212">"Bhalela ifeksi yasemsebenzini"</string>
+    <string name="sms_fax_home" msgid="4145442497939634875">"Bhalela ifeksi yasekhaya"</string>
+    <string name="sms_pager" msgid="5664381349583724906">"Bhalela isicingo"</string>
+    <string name="sms_other" msgid="910895193552957097">"Umbhalo"</string>
+    <string name="sms_callback" msgid="728414485478941361">"Bhalela ukufonela emuva"</string>
+    <string name="sms_car" msgid="8543669230270954512">"Bhalela imoto"</string>
+    <string name="sms_company_main" msgid="5441902128445061862">"Bhalela isisekelo senkampani"</string>
+    <string name="sms_isdn" msgid="7142483128948042667">"Bhalela i-ISDN"</string>
+    <string name="sms_main" msgid="6815987840926184815">"Bhalela isisekelo"</string>
+    <string name="sms_other_fax" msgid="8649822154879781466">"Bhalela ifeksi"</string>
+    <string name="sms_radio" msgid="8750339218480745940">"Bhalela umsakazo"</string>
+    <string name="sms_telex" msgid="5469333785775443999">"Bhalela i-telex"</string>
+    <string name="sms_tty_tdd" msgid="5057886576150816002">"Bhalela i-TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="8426872094268475047">"Bhalela iselula yasemsebenzini"</string>
+    <string name="sms_work_pager" msgid="499303540738557836">"Bhalela isicingo sasemsebenzini"</string>
+    <string name="sms_assistant" msgid="2677586547377136683">"Bhalela ku-<xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="4887206338311086612">"Bhala i-MMS"</string>
+    <string name="sms_by_shortcut" msgid="2675928528835074838">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (Umlayezo)"</string>
+    <string name="description_video_call" msgid="4907306403398614909">"Yenza ikholi yevidiyo"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Sula oxhumana nabo njalo?"</string>
+    <string name="clearFrequentsConfirmation" msgid="1117709667923254374">"Uzosula uhlu loxhumana nabo kakhulu kuzinhelo zokusebenza zokuxhumana noma zefoni, futhi uphoqelele izinhlelo zokusebenza ze-imeyili ukufunda izintandokazi zakho zekheli kusuka ekuqaleni."</string>
+    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Isula oxhumana nabo njalo…"</string>
+    <string name="status_available" msgid="4832569677396634846">"Ngiyatholakala"</string>
+    <string name="status_away" msgid="6267905184545881094">"Ngiphumile"</string>
+    <string name="status_busy" msgid="7111912905211403545">"Ngimatasa"</string>
+    <string name="contactsList" msgid="7140022347217602605">"Oxhumana nabo"</string>
+    <string name="local_invisible_directory" msgid="8934840494825588347">"Okunye"</string>
+    <string name="directory_search_label" msgid="4484648822765516947">"Uhla lwemibhalo"</string>
+    <string name="directory_search_label_work" msgid="7396227297795426967">"Uhla lwemibhalo lomsebenzi"</string>
+    <string name="local_search_label" msgid="9094584931063745728">"Bonke oxhumana nabo"</string>
+    <string name="search_results_searching" msgid="9022794597388306615">"Iyasesha…"</string>
+    <string name="foundTooManyContacts" msgid="3060037437459313616">"Abangaphezu kuka-<xliff:g id="COUNT">%d</xliff:g> abatholakele."</string>
+    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Abekho oxhumana nabo"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="4016164064185890420">
+      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> abatholakele</item>
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> abatholakele</item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6355240770807101947">"Oxhumene naye ngokushesha ku-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="2633118852693000081">"(Alikho igama)"</string>
+    <string name="favoritesFrequentContacted" msgid="2849493314447751970">"Abathintwa njalo"</string>
+    <string name="description_view_contact_detail" msgid="2756753096193839285">"Buka oxhumana naye"</string>
+    <string name="list_filter_phones" msgid="3692815632088465422">"Bonke othintana nabo kanye nezinombolo zabo zefoni"</string>
+    <string name="list_filter_phones_work" msgid="5226451114859079417">"Oxhumana nabo bephrofayela yomsebenzi"</string>
+    <string name="view_updates_from_group" msgid="3310864388165884352">"Buka okubuyekeziwe"</string>
+    <string name="account_phone" msgid="325867897209266837">"Idivaysi"</string>
+    <string name="nameLabelsGroup" msgid="1817502703362057154">"Igama"</string>
+    <string name="nicknameLabelsGroup" msgid="6312795212164843246">"Isidlaliso"</string>
+    <string name="full_name" msgid="885420216812981202">"Igama"</string>
+    <string name="name_given" msgid="4153709115654909377">"Igama lokuqala"</string>
+    <string name="name_family" msgid="5317387657540738981">"Isibongo"</string>
+    <string name="name_prefix" msgid="8219879405071462309">"Isiqalo segama"</string>
+    <string name="name_middle" msgid="3951610314424632183">"Igama eliphakathi"</string>
+    <string name="name_suffix" msgid="5436984808550075931">"Isijobelelo segama"</string>
+    <string name="name_phonetic" msgid="2249169131785620210">"Igama lefonethikhi"</string>
+    <string name="name_phonetic_given" msgid="2863316331175661852">"Igama lokuqala lefonethiki"</string>
+    <string name="name_phonetic_middle" msgid="5970174427249235577">"Igama lefonethikhi eliphakakathi"</string>
+    <string name="name_phonetic_family" msgid="1572398622239414464">"Isibongo sefonethiki"</string>
+    <string name="phoneLabelsGroup" msgid="7913782787902007482">"Ifoni"</string>
+    <string name="emailLabelsGroup" msgid="4696310712601184208">"I-imeyili"</string>
+    <string name="postalLabelsGroup" msgid="3727124282406728557">"Ikheli"</string>
+    <string name="imLabelsGroup" msgid="8733603247535725786">"I-IM"</string>
+    <string name="organizationLabelsGroup" msgid="961008074745871784">"Inhlangano"</string>
+    <string name="relationLabelsGroup" msgid="3585294036166325520">"Ubudlelwane"</string>
+    <string name="eventLabelsGroup" msgid="4801419345682462171">"Idethi ekhethekile"</string>
+    <string name="sms" msgid="8086289395154598654">"Umlayezo wombhalo"</string>
+    <string name="postal_address" msgid="7692926530081579786">"Ikheli"</string>
+    <string name="ghostData_company" msgid="22470841482615409">"Inkampani"</string>
+    <string name="ghostData_title" msgid="6221293237772204604">"Uhlobo lomsebenzi"</string>
+    <string name="label_notes" msgid="3997277594846722699">"Amanothi"</string>
+    <string name="label_sip_address" msgid="3754551597798479318">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="8620657380165071493">"Iwebhusayithi"</string>
+    <string name="groupsLabel" msgid="2001597910276087197">"Amalebula"</string>
+    <string name="email_home" msgid="2230967805906450693">"Thumela i-imeyili ekhaya"</string>
+    <string name="email_mobile" msgid="7532438378678903685">"Thumela i-imeyili kuselula"</string>
+    <string name="email_work" msgid="7065971921227432400">"Thumela i-imeyili emsebenzini"</string>
+    <string name="email_other" msgid="4601881243553289615">"I-imeyili"</string>
+    <string name="email_custom" msgid="5777583741581538870">"I-imeyili <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="5624424151176351591">"I-imeyili"</string>
+    <string name="postal_street" msgid="881349814077356134">"Umgwaqo"</string>
+    <string name="postal_pobox" msgid="1799978742074885091">"PO box"</string>
+    <string name="postal_neighborhood" msgid="3721092668038527674">"Indawo yasekhaya"</string>
+    <string name="postal_city" msgid="3173008531169519309">"Idolobha"</string>
+    <string name="postal_region" msgid="1695206048198921115">"Isifunda"</string>
+    <string name="postal_postcode" msgid="6542806670034753265">"Ikhodi ye-ZIP"</string>
+    <string name="postal_country" msgid="3988452247038791892">"Izwe"</string>
+    <string name="map_home" msgid="1221397355014741634">"Buka ikheli lasekhaya"</string>
+    <string name="map_work" msgid="9015981646907637207">"Buka ikheli lasemsebenzini"</string>
+    <string name="map_other" msgid="55098598855607997">"Buka ikheli"</string>
+    <string name="map_custom" msgid="4943554530347163288">"Buka ikheli le-<xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="6479001490307452172">"Xoxa usebenzisa i-AIM"</string>
+    <string name="chat_msn" msgid="627481952525245054">"Xoxa usebenzisa i-Windows Live"</string>
+    <string name="chat_yahoo" msgid="5542489454092719897">"Xoxa usebenzisa i-Yahoo"</string>
+    <string name="chat_skype" msgid="3145166404699830256">"Xoxa usebenzisa i-Skype"</string>
+    <string name="chat_qq" msgid="2811762660890755082">"Xoxa usebenzisa i-QQ"</string>
+    <string name="chat_gtalk" msgid="6043734883347741789">"Xoxa usebenzisa i-Google Talk"</string>
+    <string name="chat_icq" msgid="7538190395602030726">"Xoxa usebenzisa i-ICQ"</string>
+    <string name="chat_jabber" msgid="4525546665986350869">"Xoxa usebenzisa i-Jabber"</string>
+    <string name="chat" msgid="6297650784873558837">"Xoxa"</string>
+    <string name="description_minus_button" msgid="2142439445814730827">"susa"</string>
+    <string name="expand_collapse_name_fields_description" msgid="5073419090665464541">"Nweba noma goqa izinkambu zegama"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="5241493357460353777">"Nweba noma goqa izinkambu zegama lefonotiki"</string>
+    <string name="list_filter_all_accounts" msgid="4265359896628915784">"Bonke oxhumana nabo"</string>
+    <string name="list_filter_all_starred" msgid="9060325494254507806">"Okufakwe omakhanya"</string>
+    <string name="list_filter_customize" msgid="2352794292558465089">"Enza ngendlela oyifisayo"</string>
+    <string name="list_filter_single" msgid="4553809449379139446">"Oxhumana naye"</string>
+    <string name="display_ungrouped" msgid="3669471582032440138">"Bonke abanye oxhumana nabo"</string>
+    <string name="display_all_contacts" msgid="7251385818740728862">"Bonke oxhumana nabo"</string>
+    <string name="menu_sync_remove" msgid="6581565236520430269">"Susa iqembu lokuvumelanisa"</string>
+    <string name="dialog_sync_add" msgid="1795682729089027675">"Engeza iqembu lokuvumelanisa"</string>
+    <string name="display_more_groups" msgid="6304997485733158224">"Amaqembu amaningi..."</string>
+    <string name="display_warn_remove_ungrouped" msgid="7297678747857509619">"Isusa i-\"<xliff:g id="GROUP">%s</xliff:g>\" kokuvumelanisiwe izophinde isuse nanoma yibaphi oxhumana nabo abangekho eqenjini kusukela ekuvumelanisaneni."</string>
+    <string name="savingDisplayGroups" msgid="6863012138107446030">"Ilondoloza izinketho zokubonisa"</string>
+    <string name="menu_done" msgid="32470053723443112">"Kwenziwe"</string>
+    <string name="menu_doNotSave" msgid="6012426160993364871">"Khansela"</string>
+    <string name="listCustomView" msgid="6028436654382131381">"Ukubuka okungokwezifiso"</string>
+    <string name="dialog_new_contact_account" msgid="32435918254518570">"Londoloza oxhumana nabo abangenisiwe ku-:"</string>
+    <string name="import_from_sim" msgid="4749894687871835873">"Landa kusuka kwikhadi le-SIM"</string>
+    <string name="import_from_sim_summary" msgid="2306434118233541675">"Ngenisa kusuka ku-SIM <xliff:g id="SIM_NAME">^1</xliff:g> - <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="8498561004799710237">"Ngenisa kusuka ku-SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="1381675161522633950">"Ngenisa kusukela kufayela le-.vcf"</string>
+    <string name="cancel_import_confirmation_message" msgid="7764915400478970495">"Khansela ukulandwa kwe-<xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="4063783315931861656">"Khansela ukuthunyelwa kwe-<xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="7450212880694781527">"Yehlulekile ukukhansela ukulanda/ukuthumela i-vCard"</string>
+    <string name="fail_reason_unknown" msgid="8541352164960008557">"Iphutha elingaziwa"</string>
+    <string name="fail_reason_could_not_open_file" msgid="7041148341788958325">"Ayikwazi ukuvula i-\"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1231982631020480035">"Ayikwazanga ukuqalisa isithumeli: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_no_exportable_contact" msgid="3717046989062541369">"Abekho oxhumana nabo abathumelekayo."</string>
+    <string name="missing_required_permission" msgid="3120850759881656369">"Ukhubaze imvume edingekayo."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="8426833603664168716">"Kube khona iphutha ngesikhathi kuthunyelwa: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
+    <string name="fail_reason_too_long_filename" msgid="3996610741248972232">"Igama lefayela elidingekayo lide kakhulu (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
+    <string name="fail_reason_io_error" msgid="7736686553669161933">"Iphutha le-I/O"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="3277485820827338116">"Imemori enganele. Ifayela kungenzeka likhulu kakhulu."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="514012644716565082">"Yehlulekile ukunqunta i-vCard ngokwesizathu esingalindelekile"</string>
+    <string name="fail_reason_not_supported" msgid="388664373573337601">"Ifomethi ayisekelwe."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="3179066075701123895">"Yehlulekile ukuqoqa ulwazi lwemetha noma amafayela we-vCard."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="9213844535907986665">"Ifayela elilodwa noma amafayela angaphezulu ehlulekile ukulandwa (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="3581883972188707378">"Iqedile ukuthumela i-<xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="2953278060195308065">"Iqedile ukukhipha oxhumana nabo."</string>
+    <string name="exporting_vcard_finished_toast" msgid="5995505525489290221">"Iqedile ukuthumela oxhumana nabo, chofoza isaziso ukuze wabelane ngoxhumana nabo."</string>
+    <string name="touch_to_share_contacts" msgid="3237211496215699092">"Thepha ukuze wabelane ngoxhumana nabo."</string>
+    <string name="exporting_vcard_canceled_title" msgid="6993607802553630980">"Ukulandwa kwe-<xliff:g id="FILENAME">%s</xliff:g> kukhanseliwe."</string>
+    <string name="exporting_contact_list_title" msgid="5663945499580026953">"Kuthunyelwa idatha yoxhumana naye"</string>
+    <string name="exporting_contact_list_message" msgid="141905615542638683">"Idatha yoxhumana nabo iyathunyelwa."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="7801276776746351694">"Yehlulekile ukuthola ulwazi lwemininingo egciniwe."</string>
+    <string name="composer_has_no_exportable_contact" msgid="7063040740576745307">"Abekho oxhumana nabo abathumelekayo. Uma unabo oxhumana nabo kufoni yakho, abanye abahlinzeki bedatha kungenzeka bangavumeli labo oxhumana nabo ukuthi bathunyelwe kusukela kufoni."</string>
+    <string name="composer_not_initialized" msgid="6514403866246950877">"Umqambi we-Vcard akazange aqale ngendlela efanele."</string>
+    <string name="exporting_contact_failed_title" msgid="6059039606302373945">"Yehlulekile ukuthumela"</string>
+    <string name="exporting_contact_failed_message" msgid="3922498776695333328">"Idatha yoxhumana naye ayizange ithunyelwe.\nIsizathu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="importing_vcard_description" msgid="7206609625359484356">"Ilanda i-<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4360989450476024034">"Yehlulekile ukufunda idatha ye-vCard"</string>
+    <string name="reading_vcard_canceled_title" msgid="1290217818311955708">"Ukufundwa kwe-vCard kukhanseliwe"</string>
+    <string name="importing_vcard_finished_title" msgid="5590676758277628951">"Iqedile ukulanda i-vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
+    <string name="importing_vcard_canceled_title" msgid="556913863250769870">"Ukulanda i-<xliff:g id="FILENAME">%s</xliff:g> kukhanseliwe"</string>
+    <string name="vcard_import_will_start_message" msgid="7184603116300604514">"<xliff:g id="FILENAME">%s</xliff:g> izothunyelwa maduzane."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="2560192057642180334">"Ifayela lizothunyelwa maduzane."</string>
+    <string name="vcard_import_request_rejected_message" msgid="5209363425953891316">"Isicelo sokungenisa i-vCard sinqatshelwe. Zama futhi emuva kwesikhathi."</string>
+    <string name="vcard_export_will_start_message" msgid="2168853666316526278">"<xliff:g id="FILENAME">%s</xliff:g> izothunyelwa maduzane"</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="6418767460851707308">"Ifayela lizokhishwa maduze."</string>
+    <string name="contacts_export_will_start_message" msgid="4527597765334949574">"Oxhumana nabo bazothunyelwa maduze."</string>
+    <string name="vcard_export_request_rejected_message" msgid="8044599716727705282">"Isicelo sokuthumela i-vCard sinqatshelwe. Sicela uzame futhi emuva kwesikhathi."</string>
+    <string name="vcard_unknown_filename" msgid="4832657686149881554">"oxhumana naye"</string>
+    <string name="caching_vcard_message" msgid="6635485116655518520">"Ifaka kunqolobane ama-vCard kusitoreji sesikhashana. Ukulandwa kwangempela kuzoqala khona maduze."</string>
+    <string name="vcard_import_failed" msgid="4105296876768072508">"Yehlulekile ukulanda i-vCard"</string>
+    <string name="nfc_vcard_file_name" msgid="305679412445157370">"Othintana naye utholakale nge-NFC"</string>
+    <string name="confirm_export_title" msgid="3240899428149018226">"Thumela oxhumana nabo?"</string>
+    <string name="caching_vcard_title" msgid="9185299351381102305">"Ukulondoloza isikhashana"</string>
+    <string name="progress_notifier_message" msgid="359931715339778107">"Ilanda i-<xliff:g id="CURRENT_NUMBER">%s</xliff:g><xliff:g id="TOTAL_NUMBER">%s</xliff:g><xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="4142192068495589925">"Thumela kufayela le-.vcf"</string>
+    <string name="display_options_sort_list_by" msgid="8635268562263708102">"Hlunga nge-"</string>
+    <string name="display_options_sort_by_given_name" msgid="7775798046001047995">"Igama lokuqala"</string>
+    <string name="display_options_sort_by_family_name" msgid="8196947856299225342">"Isibongo"</string>
+    <string name="display_options_view_names_as" msgid="3232196224409242435">"Ifomethi yegama"</string>
+    <string name="display_options_view_given_name_first" msgid="7283772578267332801">"Igama lokuqala kuqala"</string>
+    <string name="display_options_view_family_name_first" msgid="8133167685885174166">"Isibongo kuqala"</string>
+    <string name="settings_accounts" msgid="7534308574729401912">"Ama-akhawunti"</string>
+    <string name="default_editor_account" msgid="4338725881650654966">"I-akhawunti ezenzakalelayo yoxhumana nabo abasha"</string>
+    <string name="sync_contact_metadata_title" msgid="8322455849769727129">"Vumelanisa imethadatha yoxhumana naye [DOGFOOD]"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="4521648342253661374">"Vumelanisa imethadatha"</string>
+    <string name="settings_my_info_title" msgid="583358944162385703">"Ulwazi lwami"</string>
+    <string name="set_up_profile" msgid="8396362096521360520">"Setha iphrofayela yakho"</string>
+    <string name="setting_about" msgid="3926137653588942297">"Mayelana noxhumana nabo"</string>
+    <string name="activity_title_settings" msgid="3056389601004689380">"Izilungiselelo"</string>
+    <string name="share_visible_contacts" msgid="2150662668080757107">"Yabelana noxhumana nabo ababonakalayo"</string>
+    <string name="share_visible_contacts_failure" msgid="5895137872238059893">"Yehlulekile ukwabelana ngoxhumana nabo ababonakalayo"</string>
+    <string name="share_favorite_contacts" msgid="2838432887118216222">"Yabelana ngoxhumana nabo obathandayo"</string>
+    <string name="share_contacts" msgid="6404040163340914061">"Yabelana bonke oxhumana nabo"</string>
+    <string name="share_contacts_failure" msgid="3498837575583860197">"Yehlulekile ukwabelana ngoxhumana nabo."</string>
+    <string name="dialog_import_export" msgid="1125776851100740858">"Landa/thumela oxhumana nabo"</string>
+    <string name="dialog_import" msgid="5177004290082451296">"Landa oxhumana nabo"</string>
+    <string name="share_error" msgid="665756457151793108">"Lona oxhumana naye ngeke ukwazi ukwabelana ngaye."</string>
+    <string name="no_contact_to_share" msgid="5749367538191552509">"Abekho oxhumana nabo ongabelana nabo."</string>
+    <string name="menu_search" msgid="7464453023659824700">"Sesha"</string>
+    <string name="menu_contacts_filter" msgid="586356478145511794">"Othintana nabo abazoboniswa"</string>
+    <string name="activity_title_contacts_filter" msgid="7689519428197855166">"Othintana nabo abazoboniswa"</string>
+    <string name="custom_list_filter" msgid="4075228878875354341">"Cacisa ukubuka okungokwezifiso"</string>
+    <string name="menu_custom_filter_save" msgid="6026814211328635312">"Londoloza"</string>
+    <string name="hint_findContacts" msgid="5348098493767051775">"Sesha oxhumana nabo"</string>
+    <string name="contactsFavoritesLabel" msgid="1222038757062409949">"Izindandokazi"</string>
+    <string name="listTotalAllContactsZero" msgid="6041341919823872732">"Abekho othintana nabo."</string>
+    <string name="menu_clear_frequents" msgid="8492322695770647639">"Sula oxhumana nabo njalo"</string>
+    <string name="menu_select_sim" msgid="7814841439832447299">"Khetha ikhadi le-SIM"</string>
+    <string name="menu_accounts" msgid="2944004960829403994">"Phatha ama-akhawunti"</string>
+    <string name="menu_import_export" msgid="6446229463809981669">"Ngenisa/ thekelisa"</string>
+    <string name="menu_blocked_numbers" msgid="2865529727926197975">"Izinombolo ezivinjiwe"</string>
+    <string name="contact_status_update_attribution" msgid="8419168578670128134">"nge-<xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="7492465535645607473">"<xliff:g id="DATE">%1$s</xliff:g> nge-<xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="1138551123844019647">"misa ukusesha"</string>
+    <string name="description_clear_search" msgid="3893511425518852086">"Sula usesho"</string>
+    <string name="settings_contact_display_options_title" msgid="1020420603072835628">"Izinketho zokubonisa oxhumana naye"</string>
+    <string name="select_account_dialog_title" msgid="5509088895267310568">"I-Akhawunti"</string>
+    <string name="set_default_account" msgid="3865970860434642695">"Njalo sebenzisa lokhu kumakholi"</string>
+    <string name="select_phone_account_for_calls" msgid="933905607702811164">"Shaya nge"</string>
+    <string name="call_with_a_note" msgid="8453800473226831257">"Shaya ngenothi"</string>
+    <string name="call_subject_hint" msgid="2270115162050853866">"Thayipha inothi ukuthumela nekholi ..."</string>
+    <string name="send_and_call_button" msgid="7459507823002185202">"THUMELA FUTHI USHAYE"</string>
+    <string name="call_subject_limit" msgid="4746194916585506281">"<xliff:g id="COUNT">%1$s</xliff:g> / <xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="517676698821671164">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="6318422670912575609">
+      <item quantity="one"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> izinto ezingafundiwe. </item>
+      <item quantity="other"> <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> izinto ezingafundiwe. </item>
+    </plurals>
+    <string name="about_build_version" msgid="4221971683776635130">"Inguqulo yesakhiwo"</string>
+    <string name="about_open_source_licenses" msgid="3224958101863814649">"Amalayisensi womthombo ovulekile"</string>
+    <string name="about_open_source_licenses_summary" msgid="3009343539281606716">"Iminingwane yelayisensi yesofthiwe yomthombo ovulelekile"</string>
+    <string name="about_privacy_policy" msgid="8458337666582973913">"Inqubomgomo yobumfihlo"</string>
+    <string name="about_terms_of_service" msgid="628537491496465267">"Imigomo yesevisi"</string>
+    <string name="activity_title_licenses" msgid="7812517458691564230">"Amalayisensi womthombo ovulekile"</string>
+    <string name="url_open_error_toast" msgid="7557601281695424805">"Yehlulekile ukuvula i-url."</string>
+    <string name="account_filter_view_checked" msgid="4368757211136754319">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> kuhloliwe"</string>
+    <string name="account_filter_view_not_checked" msgid="5652044086126815700">"<xliff:g id="ACCOUNT_INFO">%s</xliff:g> akuhloliwe"</string>
+    <string name="description_search_video_call" msgid="1699305143973045516">"Yenza ikholi yevidiyo"</string>
+    <string name="description_delete_contact" msgid="5792859265342550501">"Susa"</string>
+    <string name="description_no_name_header" msgid="2537587931436174836">"Okuqhubekayo"</string>
+</resources>
diff --git a/res-common/values/animation_constants.xml b/res-common/values/animation_constants.xml
new file mode 100644
index 0000000..39f6ba6
--- /dev/null
+++ b/res-common/values/animation_constants.xml
@@ -0,0 +1,19 @@
+<?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>
+    <integer name="floating_action_button_animation_duration">175</integer>
+</resources>
diff --git a/res-common/values/attrs.xml b/res-common/values/attrs.xml
new file mode 100644
index 0000000..fe1cc56
--- /dev/null
+++ b/res-common/values/attrs.xml
@@ -0,0 +1,85 @@
+<!--
+  ~ Copyright (C) 2012 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>
+    <declare-styleable name="Theme">
+        <attr name="android:textColorSecondary" />
+    </declare-styleable>
+
+    <declare-styleable name="ContactsDataKind">
+        <!-- Mime-type handled by this mapping. -->
+        <attr name="android:mimeType" />
+        <!-- Icon used to represent data of this kind. -->
+        <attr name="android:icon" />
+        <!-- Column in data table that summarizes this data. -->
+        <attr name="android:summaryColumn" />
+        <!-- Column in data table that contains details for this data. -->
+        <attr name="android:detailColumn" />
+        <!-- Flag indicating that detail should be built from SocialProvider. -->
+        <attr name="android:detailSocialSummary" />
+        <!-- Resource representing the term "All Contacts" (e.g. "All Friends" or
+        "All connections"). Optional (Default is "All Contacts"). -->
+        <attr name="android:allContactsName" />
+    </declare-styleable>
+
+    <declare-styleable name="ContactListItemView">
+        <attr name="list_item_height" format="dimension"/>
+        <attr name="list_section_header_height" format="dimension"/>
+        <attr name="activated_background" format="reference"/>
+        <attr name="section_header_background" format="reference"/>
+        <attr name="list_item_padding_top" format="dimension"/>
+        <attr name="list_item_padding_right" format="dimension"/>
+        <attr name="list_item_padding_bottom" format="dimension"/>
+        <attr name="list_item_padding_left" format="dimension"/>
+        <attr name="list_item_gap_between_image_and_text" format="dimension"/>
+        <attr name="list_item_gap_between_indexer_and_image" format="dimension"/>
+        <attr name="list_item_gap_between_label_and_data" format="dimension"/>
+        <attr name="list_item_presence_icon_margin" format="dimension"/>
+        <attr name="list_item_presence_icon_size" format="dimension"/>
+        <attr name="list_item_photo_size" format="dimension"/>
+        <attr name="list_item_profile_photo_size" format="dimension"/>
+        <attr name="list_item_prefix_highlight_color" format="color"/>
+        <attr name="list_item_background_color" format="color"/>
+        <attr name="list_item_header_text_indent" format="dimension"/>
+        <attr name="list_item_header_text_color" format="color"/>
+        <attr name="list_item_header_text_size" format="dimension"/>
+        <attr name="list_item_header_height" format="dimension"/>
+        <attr name="list_item_name_text_color" format="color"/>
+        <attr name="list_item_name_text_size" format="dimension"/>
+        <attr name="list_item_text_indent" format="dimension"/>
+        <attr name="list_item_text_offset_top" format="dimension"/>
+        <attr name="list_item_avatar_offset_top" format="dimension"/>
+        <attr name="list_item_data_width_weight" format="integer"/>
+        <attr name="list_item_label_width_weight" format="integer"/>
+        <attr name="list_item_video_call_icon_size" format="dimension"/>
+        <attr name="list_item_video_call_icon_margin" format="dimension"/>
+    </declare-styleable>
+
+    <declare-styleable name="ContactBrowser">
+        <attr name="contact_browser_list_padding_left" format="dimension"/>
+        <attr name="contact_browser_list_padding_right" format="dimension"/>
+        <attr name="contact_browser_background" format="reference"/>
+    </declare-styleable>
+
+    <declare-styleable name="ProportionalLayout">
+        <attr name="direction" format="string"/>
+        <attr name="ratio" format="float"/>
+    </declare-styleable>
+
+    <declare-styleable name="Favorites">
+        <attr name="favorites_padding_bottom" format="dimension"/>
+    </declare-styleable>
+</resources>
diff --git a/res-common/values/colors.xml b/res-common/values/colors.xml
new file mode 100644
index 0000000..f547d80
--- /dev/null
+++ b/res-common/values/colors.xml
@@ -0,0 +1,191 @@
+<!--
+  ~ Copyright (C) 2012 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>
+    <!-- Background color corresponding to the holo list 9-patch. -->
+    <color name="holo_list_background_color">#eeeeee</color>
+
+    <color name="focus_color">#44ff0000</color>
+
+    <!-- Color of ripples used for views with dark backgrounds -->
+    <color name="ripple_material_dark">#a0ffffff</color>
+
+    <!-- Divider color for header separator -->
+    <color name="primary_text_color">#363636</color>
+
+    <color name="secondary_text_color">@color/dialtacts_secondary_text_color</color>
+
+    <!-- Text color for section header. -->
+    <color name="section_header_text_color">@color/dialtacts_theme_color</color>
+
+    <!-- Divider color for header separator -->
+    <color name="main_header_separator_color">#AAAAAA</color>
+
+    <!-- Divider color for header separator -->
+    <color name="secondary_header_separator_color">#D0D0D0</color>
+
+    <!-- Color of the theme of the People app -->
+    <color name="people_app_theme_color">#363636</color>
+
+    <!-- Color of the theme of the Dialer app -->
+    <color name="dialtacts_theme_color">#0288d1</color>
+
+    <!-- Color of image view placeholder. -->
+    <color name="image_placeholder">#DDDDDD</color>
+
+    <!-- Primary text color in the Phone app -->
+    <color name="dialtacts_primary_text_color">#333333</color>
+
+    <!-- Secondary text color in the Phone app -->
+    <color name="dialtacts_secondary_text_color">#737373</color>
+
+    <!--  Color of the semi-transparent shadow box on contact tiles -->
+    <color name="contact_tile_shadow_box_color">#7F000000</color>
+
+    <!--  Color of the status message for starred contacts in the People app -->
+    <color name="people_contact_tile_status_color">#CCCCCC</color>
+
+    <color name="shortcut_overlay_text_background">#7f000000</color>
+
+    <color name="textColorIconOverlay">#fff</color>
+    <color name="textColorIconOverlayShadow">#000</color>
+
+    <!-- Background colors for LetterTileDrawables. This set of colors is a subset of
+        https://spec.googleplex.com/quantumpalette#extended which passes Google Accessibility
+        Requirements for the color in question on white with >= 3.0 contrast. We used
+        http://leaverou.github.io/contrast-ratio/#white-on-%23db4437 to double-check the contrast.
+
+        These colors are also used by MaterialColorMapUtils to generate primary activity colors.
+    -->
+    <array name="letter_tile_colors">
+        <item>#DB4437</item>
+        <item>#E91E63</item>
+        <item>#9C27B0</item>
+        <item>#673AB7</item>
+        <item>#3F51B5</item>
+        <item>#4285F4</item>
+        <item>#039BE5</item>
+        <item>#0097A7</item>
+        <item>#009688</item>
+        <item>#0F9D58</item>
+        <item>#689F38</item>
+        <item>#EF6C00</item>
+        <item>#FF5722</item>
+        <item>#757575</item>
+    </array>
+
+    <!-- Darker versions of letter_tile_colors, two shades darker. These colors are used
+        for settings secondary activity colors. -->
+    <array name="letter_tile_colors_dark">
+        <item>#C53929</item>
+        <item>#C2185B</item>
+        <item>#7B1FA2</item>
+        <item>#512DA8</item>
+        <item>#303F9F</item>
+        <item>#3367D6</item>
+        <item>#0277BD</item>
+        <item>#006064</item>
+        <item>#00796B</item>
+        <item>#0B8043</item>
+        <item>#33691E</item>
+        <item>#E65100</item>
+        <item>#E64A19</item>
+        <item>#424242</item>
+    </array>
+
+    <!-- The default color used for tinting photos when no color can be extracted via Palette,
+            this is Blue Grey 500 -->
+    <color name="quickcontact_default_photo_tint_color">#607D8B</color>
+    <!-- The default secondary color when no color can be extracted via Palette,
+            this is Blue Grey 700 -->
+    <color name="quickcontact_default_photo_tint_color_dark">#455A64</color>
+
+
+    <color name="letter_tile_default_color">#cccccc</color>
+
+    <color name="letter_tile_font_color">#ffffff</color>
+
+    <!-- Background color of action bars. Ensure this stays in sync with packages/Telephony
+         actionbar_background_color. -->
+    <color name="actionbar_background_color">#0fc6dc</color>
+    <!-- Color for icons in the actionbar -->
+    <color name="actionbar_icon_color">#ffffff</color>
+    <!-- Darker version of the actionbar color. Used for the status bar and navigation bar colors. -->
+    <color name="actionbar_background_color_dark">#008aa1</color>
+
+    <color name="tab_ripple_color">@color/tab_accent_color</color>
+    <color name="tab_accent_color">#ffffff</color>
+    <color name="tab_selected_underline_color">@color/tab_accent_color</color>
+    <color name="tab_unread_count_background_color">#700f4b70</color>
+
+    <!-- Color of the title to the Frequently Contacted section -->
+    <color name="frequently_contacted_title_color">@color/actionbar_background_color</color>
+
+    <!-- Color of action bar text. Ensure this stays in sync with packages/Telephony
+    phone_settings_actionbar_text_color-->
+    <color name="actionbar_text_color">#ffffff</color>
+    <!-- 54% black for icons -->
+    <color name="actionbar_icon_color_grey">#8C000000</color>
+    <!-- 87% black for actionbar text -->
+    <color name="actionbar_text_color_black">#DF000000</color>
+    <!-- Solid grey for status bar overlay-->
+    <color name="actionbar_color_grey_solid">#777777</color>
+    <color name="actionbar_unselected_text_color">#a6ffffff</color>
+
+    <!-- Text color of the search box text as entered by user  -->
+    <color name="searchbox_text_color">#000000</color>
+    <!-- Background color of the search box -->
+    <color name="searchbox_background_color">#ffffff</color>
+
+    <color name="searchbox_hint_text_color">#66000000</color>
+    <color name="searchbox_icon_tint">@color/searchbox_hint_text_color</color>
+
+    <color name="search_shortcut_icon_color">@color/dialtacts_theme_color</color>
+
+    <!-- Color of the background of the contact detail and editor pages -->
+    <color name="background_primary">#f9f9f9</color>
+    <color name="contact_all_list_background_color">#FFFFFF</color>
+
+    <!-- Text color used for character counter when the max limit has been exceeded -->
+    <color name="call_subject_limit_exceeded">#d1041c</color>
+
+    <!-- Tint color for the call subject history icon. -->
+    <color name="call_subject_history_icon">#000000</color>
+
+    <!-- Divider line on the call subject dialog. -->
+    <color name="call_subject_divider">#d8d8d8</color>
+
+    <!-- Text color for the SEND & CALL button on the call subject dialog. -->
+    <color name="call_subject_button">#00c853</color>
+
+    <!-- Background color for the call subject history view. -->
+    <color name="call_subject_history_background">#ffffff</color>
+    <color name="search_video_call_icon_tint">@color/searchbox_hint_text_color</color>
+
+    <!-- Text color for an action in a snackbar. -->
+    <color name="snackbar_action_text">#40c4ff</color>
+    <!-- Background color for a snackbar. -->
+    <color name="snackbar_background">#333333</color>
+
+    <!-- Color of account/custom filters -->
+    <color name="account_filter_text_color">@color/actionbar_text_color_black</color>
+    <color name="custom_filter_divider">#dbdbdb</color>
+
+    <color name="material_star_pink">#f50057</color>
+
+    <!-- Primary text color in Contacts app -->
+    <color name="contacts_text_color">#333333</color>
+</resources>
diff --git a/res-common/values/dimens.xml b/res-common/values/dimens.xml
new file mode 100644
index 0000000..a382ad2
--- /dev/null
+++ b/res-common/values/dimens.xml
@@ -0,0 +1,185 @@
+<!--
+  ~ Copyright (C) 2012 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>
+
+    <!-- Padding between the action bar's bottom edge and the first header
+         in contacts/group lists. -->
+    <dimen name="list_header_extra_top_padding">0dip</dimen>
+
+    <dimen name="list_section_divider_min_height">32dip</dimen>
+
+    <dimen name="directory_header_extra_top_padding">18dp</dimen>
+    <dimen name="directory_header_extra_bottom_padding">8dp</dimen>
+    <dimen name="directory_header_left_padding">16dp</dimen>
+
+    <!--  Horizontal padding in between contact tiles -->
+    <dimen name="contact_tile_divider_padding">23dip</dimen>
+    <!--  Horizontal whitespace (both padding and margin) before the first tile and after the last tile -->
+    <dimen name="contact_tile_start_end_whitespace">16dip</dimen>
+
+    <!-- Left and right padding for a contact detail item -->
+    <dimen name="detail_item_side_margin">16dip</dimen>
+
+    <!-- ContactTile Layouts -->
+    <!--
+      Use sp instead of dip so that the shadowbox heights can all scale uniformly
+      when the font size is scaled for accessibility purposes
+    -->
+    <dimen name="contact_tile_shadowbox_height">48sp</dimen>
+
+    <!-- For contact filter setting screens -->
+    <dimen name="contact_filter_left_margin">8dp</dimen>
+    <dimen name="contact_filter_right_margin">16dip</dimen>
+    <dimen name="contact_filter_item_min_height">48dip</dimen>
+    <dimen name="contact_filter_icon_size">32dip</dimen>
+    <dimen name="contact_filter_list_item_height">56dp</dimen>
+    <dimen name="contact_filter_list_item_padding_start">16dp</dimen>
+    <!-- contact_filter_indicator is the arrow in expandable list view -->
+    <dimen name="contact_filter_indicator_padding_start">6dp</dimen>
+    <dimen name="contact_filter_indicator_padding_end">46dp</dimen>
+    <dimen name="contact_filter_action_button_width">72dp</dimen>
+
+    <!-- Padding to be used between a visible scrollbar and the contact list -->
+    <dimen name="list_visible_scrollbar_padding">32dip</dimen>
+
+    <dimen name="contact_browser_list_header_icon_left_margin">16dp</dimen>
+    <dimen name="contact_browser_list_header_icon_right_margin">14dp</dimen>
+    <dimen name="contact_browser_list_header_icon_left_margin_alt">18dp</dimen>
+    <dimen name="contact_browser_list_header_icon_right_margin_alt">16dp</dimen>
+    <dimen name="contact_browser_list_header_left_margin">16dip</dimen>
+    <dimen name="contact_browser_list_header_right_margin">@dimen/list_visible_scrollbar_padding</dimen>
+    <dimen name="contact_browser_list_item_text_indent">8dip</dimen>
+    <dimen name="contact_browser_list_header_height">48dp</dimen>
+    <dimen name="contact_browser_list_header_icon_size">24dp</dimen>
+    <dimen name="contact_browser_list_header_icon_size_alt">20dp</dimen>
+    <dimen name="contact_browser_list_header_text_margin">10dp</dimen>
+    <!-- Width of a contact list item section header. -->
+    <dimen name="contact_list_section_header_width">56dp</dimen>
+
+    <!-- Size of the shortcut icon. 0dip means: use the system default -->
+    <dimen name="shortcut_icon_size">0dip</dimen>
+
+    <!-- Text size of shortcut icon overlay text -->
+    <dimen name="shortcut_overlay_text_size">12dp</dimen>
+
+    <!-- Extra vertical padding for darkened background behind shortcut icon overlay text -->
+    <dimen name="shortcut_overlay_text_background_padding">1dp</dimen>
+
+    <!-- Width of height of an icon from a third-party app in the networks section of the contact card. -->
+    <dimen name="detail_network_icon_size">40dp</dimen>
+
+    <!-- Empty message margins -->
+    <dimen name="empty_message_top_margin">48dip</dimen>
+
+    <!-- contact browser list margins -->
+    <dimen name="contact_browser_list_item_text_size">16sp</dimen>
+    <dimen name="contact_browser_list_item_photo_size">40dp</dimen>
+    <dimen name="contact_browser_list_item_gap_between_image_and_text">15dp</dimen>
+    <dimen name="contact_browser_list_item_gap_between_indexer_and_image">16dp</dimen>
+    <dimen name="contact_browser_list_top_margin">12dp</dimen>
+
+    <!-- Dimensions for "No contacts" string in PhoneFavoriteFragment for the All contacts
+         with phone numbers section
+    -->
+    <dimen name="contact_phone_list_empty_description_size">20sp</dimen>
+    <dimen name="contact_phone_list_empty_description_padding">10dip</dimen>
+
+    <!-- Dimensions for contact letter tiles -->
+    <dimen name="tile_letter_font_size">40dp</dimen>
+    <dimen name="tile_letter_font_size_small">20dp</dimen>
+    <dimen name="tile_divider_width">1dp</dimen>
+    <item name="letter_to_tile_ratio" type="dimen">67%</item>
+
+    <!-- Height of the floating action button -->
+    <dimen name="floating_action_button_height">56dp</dimen>
+    <!-- Width of the floating action button -->
+    <dimen name="floating_action_button_width">56dp</dimen>
+    <!-- Corner radius of the floating action button -->
+    <dimen name="floating_action_button_radius">28dp</dimen>
+    <!-- Z translation of the floating action button -->
+    <dimen name="floating_action_button_translation_z">8dp</dimen>
+    <!-- Padding to be applied to the bottom of lists to make space for the floating action
+         button -->
+    <dimen name="floating_action_button_list_bottom_padding">88dp</dimen>
+    <!-- Right margin of the floating action button -->
+    <dimen name="floating_action_button_margin_right">16dp</dimen>
+    <!-- Bottom margin of the floating action button -->
+    <dimen name="floating_action_button_margin_bottom">16dp</dimen>
+    <!-- Offset of bottom margin of the floating action button used when dialpad is up -->
+    <dimen name="floating_action_button_dialpad_margin_bottom_offset">4dp</dimen>
+
+    <!-- Height of the selection indicator of a tab. -->
+    <dimen name="tab_selected_underline_height">2dp</dimen>
+    <!-- Size of text in tabs. -->
+    <dimen name="tab_text_size">14sp</dimen>
+    <dimen name="tab_elevation">2dp</dimen>
+    <dimen name="tab_unread_count_background_size">16dp</dimen>
+    <dimen name="tab_unread_count_background_radius">2dp</dimen>
+    <dimen name="tab_unread_count_margin_left">10dp</dimen>
+    <dimen name="tab_unread_count_margin_top">2dp</dimen>
+    <dimen name="tab_unread_count_text_size">12sp</dimen>
+    <dimen name="tab_unread_count_text_padding">2dp</dimen>
+
+    <!-- Padding around the icon in the search box. -->
+    <dimen name="search_box_icon_margin">4dp</dimen>
+    <!-- Size of the icon (voice search, back arrow) in the search box. -->
+    <dimen name="search_box_icon_size">56dp</dimen>
+    <!-- Size of the close icon.-->
+    <dimen name="search_box_close_icon_size">56dp</dimen>
+    <!-- Padding around the close button. It's visible size without padding is 24dp. -->
+    <dimen name="search_box_close_icon_padding">16dp</dimen>
+    <!-- End margin of the back arrow icon in the search box -->
+    <dimen name="search_box_navigation_icon_margin">8dp</dimen>
+    <!-- Left margin of the text field in the search box. -->
+    <dimen name="search_box_text_left_margin">8dp</dimen>
+    <!-- Search box text size -->
+    <dimen name="search_text_size">16sp</dimen>
+
+    <item name="close_icon_alpha" format="float" type="dimen">0.54</item>
+
+    <!-- Size of the close icon in selection bar.-->
+    <dimen name="selection_bar_close_icon_size">56dp</dimen>
+
+    <!-- Top margin for the Frequently Contacted section title -->
+    <dimen name="frequently_contacted_title_top_margin_when_first_row">16dp</dimen>
+    <!-- Top margin for the Frequently Contacted section title, when the title is the first
+         item in the list -->
+    <dimen name="frequently_contacted_title_top_margin">57dp</dimen>
+
+    <dimen name="frequently_contacted_title_text_size">24sp</dimen>
+
+    <!-- Size of icon for contacts number shortcuts -->
+    <dimen name="search_shortcut_radius">40dp</dimen>
+
+    <dimen name="contact_list_card_elevation">2dp</dimen>
+
+    <!-- Padding used around the periphery of the call subject dialog, as well as in between the
+         items. -->
+    <dimen name="call_subject_dialog_margin">20dp</dimen>
+    <!-- Padding used between lines of text in the call subject dialog. -->
+    <dimen name="call_subject_dialog_between_line_margin">8dp</dimen>
+    <!-- Size of the contact photo in the call subject dialog. -->
+    <dimen name="call_subject_dialog_contact_photo_size">50dp</dimen>
+    <!-- Margin above the edit text in the call subject dialog. -->
+    <dimen name="call_subject_dialog_edit_spacing">60dp</dimen>
+    <!-- Size of primary text in the call subject dialog. -->
+    <dimen name="call_subject_dialog_primary_text_size">16sp</dimen>
+    <!-- Size of secondary text in the call subject dialog. -->
+    <dimen name="call_subject_dialog_secondary_text_size">14sp</dimen>
+    <!-- Row padding for call subject history items. -->
+    <dimen name="call_subject_history_item_padding">15dp</dimen>
+</resources>
diff --git a/res-common/values/donottranslate_config.xml b/res-common/values/donottranslate_config.xml
new file mode 100644
index 0000000..ad36362
--- /dev/null
+++ b/res-common/values/donottranslate_config.xml
@@ -0,0 +1,95 @@
+<!--
+  ~ Copyright (C) 2012 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>
+    <!-- Flag indicating whether Contacts app is allowed to import contacts -->
+    <bool name="config_allow_import_from_vcf_file">true</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a sort order -->
+    <bool name="config_sort_order_user_changeable">true</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_sort_order_primary">true</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a name display order -->
+    <bool name="config_display_order_user_changeable">true</bool>
+
+    <!-- If true, the default sort order is primary (i.e. by given name) -->
+    <bool name="config_default_display_order_primary">true</bool>
+
+    <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
+    <bool name="config_editor_field_order_primary">true</bool>
+
+    <!-- If true, an option is shown in Display Options UI to choose a default account -->
+    <bool name="config_default_account_user_changeable">true</bool>
+
+    <!-- Contacts preferences key for contact editor default account -->
+    <string name="contact_editor_default_account_key">ContactEditorUtils_default_account</string>
+
+    <!-- Contacts preferences key for contact editor anything saved -->
+    <string name="contact_editor_anything_saved_key">ContactEditorUtils_anything_saved</string>
+
+    <!-- The type of VCard for export. If you want to let the app emit vCard which is
+    specific to some vendor (like DoCoMo), specify this type (e.g. "docomo") -->
+    <string name="config_export_vcard_type" translatable="false">default</string>
+
+    <!-- The type of vcard for improt. If the vcard importer cannot guess the exact type
+    of a vCard type, the improter uses this type. -->
+    <string name="config_import_vcard_type" translatable="false">default</string>
+
+    <!-- Prefix of exported VCard file -->
+    <string name="config_export_file_prefix" translatable="false"></string>
+
+    <!-- Suffix of exported VCard file. Attached before an extension -->
+    <string name="config_export_file_suffix" translatable="false"></string>
+
+    <!-- Extension for exported VCard files -->
+    <string name="config_export_file_extension">vcf</string>
+
+    <!-- The filename that is suggested that users use when exporting vCards. Should include the .vcf extension. -->
+    <string name="exporting_vcard_filename" translatable="false">contacts.vcf</string>
+
+    <!-- Minimum number of exported VCard file index -->
+    <integer name="config_export_file_min_index">1</integer>
+
+    <!-- Maximum number of exported VCard file index -->
+    <integer name="config_export_file_max_index">99999</integer>
+
+    <!-- The list (separated by ',') of extensions should be checked in addition to
+     config_export_extension. e.g. If "aaa" is added to here and 00001.vcf and 00002.aaa
+     exist in a target directory, 00003.vcf becomes a next file name candidate.
+     Without this configuration, 00002.vcf becomes the candidate.-->
+    <string name="config_export_extensions_to_consider" translatable="false"></string>
+
+    <!-- If true, enable the "import contacts from SIM" feature if the device
+         has an appropriate SIM or ICC card.
+         Setting this flag to false in a resource overlay allows you to
+         entirely disable SIM import on a per-product basis. -->
+    <bool name="config_allow_sim_import">true</bool>
+
+    <!-- Flag indicating whether Contacts app is allowed to export contacts -->
+    <bool name="config_allow_export">true</bool>
+
+    <!-- Flag indicating whether Contacts app is allowed to share contacts with devices outside -->
+    <bool name="config_allow_share_contacts">true</bool>
+
+    <string name="pref_build_version_key">pref_build_version</string>
+    <string name="pref_open_source_licenses_key">pref_open_source_licenses</string>
+    <string name="pref_privacy_policy_key">pref_privacy_policy</string>
+    <string name="pref_terms_of_service_key">pref_terms_of_service</string>
+
+    <string name="star_sign">\u2605</string>
+</resources>
diff --git a/res-common/values/ids.xml b/res-common/values/ids.xml
new file mode 100644
index 0000000..e084bf3
--- /dev/null
+++ b/res-common/values/ids.xml
@@ -0,0 +1,42 @@
+<!--
+  Copyright (C) 2012 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>
+    <!-- For vcard.ImportVCardActivity -->
+    <item type="id" name="dialog_cache_vcard"/>
+    <item type="id" name="dialog_error_with_message"/>
+
+    <!-- For vcard.CancelActivity -->
+    <item type="id" name="dialog_cancel_confirmation"/>
+    <item type="id" name="dialog_cancel_failed"/>
+
+    <!-- For ExportVCardActivity -->
+    <item type="id" name="dialog_exporting_vcard"/>
+    <item type="id" name="dialog_fail_to_export_with_reason"/>
+
+    <!-- For Debug Purpose -->
+    <item type="id" name="cliv_name_textview"/>
+    <item type="id" name="cliv_phoneticname_textview"/>
+    <item type="id" name="cliv_label_textview"/>
+    <item type="id" name="cliv_data_view"/>
+
+    <!-- For tag ids used by ContactPhotoManager to tag views with contact details -->
+    <item type="id" name="tag_display_name"/>
+    <item type="id" name="tag_identifier"/>
+    <item type="id" name="tag_contact_type"/>
+
+    <item type="id" name="menu_save"/>
+</resources>
diff --git a/res-common/values/integers.xml b/res-common/values/integers.xml
new file mode 100644
index 0000000..fada850
--- /dev/null
+++ b/res-common/values/integers.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2012 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>
+
+    <!--  Determines the number of columns in a ContactTileRow in the favorites tab -->
+    <integer name="contact_tile_column_count_in_favorites">2</integer>
+    <integer name="contact_tile_column_count_in_favorites_new">3</integer>
+
+    <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
+    <integer name="snippet_length_before_tokenize">30</integer>
+
+    <!-- Layout weight of space elements in contact list view.
+    Default to 0 to indicate no padding-->
+    <integer name="contact_list_space_layout_weight">0</integer>
+    <!-- Layout weight of card in contact list view.
+    Default to 0 to indicate no padding -->
+    <integer name="contact_list_card_layout_weight">0</integer>
+
+    <!-- Duration of the animations on the call subject dialog. -->
+    <integer name="call_subject_animation_duration">250</integer>
+
+    <!-- A big number to make sure "About contacts" always showing at the bottom of Settings.-->
+    <integer name="about_contacts_order_number">100</integer>
+
+    <!-- Duration of the animations when a contact list loads. -->
+    <integer name="lists_on_load_animation_duration">190</integer>
+</resources>
diff --git a/res-common/values/strings.xml b/res-common/values/strings.xml
new file mode 100644
index 0000000..182e3fb
--- /dev/null
+++ b/res-common/values/strings.xml
@@ -0,0 +1,848 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2012 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">
+
+    <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
+    <string name="toast_text_copied">Text copied</string>
+    <!-- Option displayed in context menu to copy long pressed item to clipboard [CHAR LIMIT=64] -->
+    <string name="copy_text">Copy to clipboard</string>
+
+    <!-- Action string for calling a custom phone number -->
+    <string name="call_custom">Call
+        <xliff:g id="custom">%s</xliff:g>
+    </string>
+    <!-- Action string for calling a home phone number -->
+    <string name="call_home">Call home</string>
+    <!-- Action string for calling a mobile phone number -->
+    <string name="call_mobile">Call mobile</string>
+    <!-- Action string for calling a work phone number -->
+    <string name="call_work">Call work</string>
+    <!-- Action string for calling a work fax phone number -->
+    <string name="call_fax_work">Call work fax</string>
+    <!-- Action string for calling a home fax phone number -->
+    <string name="call_fax_home">Call home fax</string>
+    <!-- Action string for calling a pager phone number -->
+    <string name="call_pager">Call pager</string>
+    <!-- Action string for calling an other phone number -->
+    <string name="call_other">Call</string>
+    <!-- Action string for calling a callback number -->
+    <string name="call_callback">Call callback</string>
+    <!-- Action string for calling a car phone number -->
+    <string name="call_car">Call car</string>
+    <!-- Action string for calling a company main phone number -->
+    <string name="call_company_main">Call company main</string>
+    <!-- Action string for calling a ISDN phone number -->
+    <string name="call_isdn">Call ISDN</string>
+    <!-- Action string for calling a main phone number -->
+    <string name="call_main">Call main</string>
+    <!-- Action string for calling an other fax phone number -->
+    <string name="call_other_fax">Call fax</string>
+    <!-- Action string for calling a radio phone number -->
+    <string name="call_radio">Call radio</string>
+    <!-- Action string for calling a Telex phone number -->
+    <string name="call_telex">Call telex</string>
+    <!-- Action string for calling a TTY/TDD phone number -->
+    <string name="call_tty_tdd">Call TTY/TDD</string>
+    <!-- Action string for calling a work mobile phone number -->
+    <string name="call_work_mobile">Call work mobile</string>
+    <!-- Action string for calling a work pager phone number -->
+    <string name="call_work_pager">Call work pager</string>
+    <!-- Action string for calling an assistant phone number -->
+    <string name="call_assistant">Call
+        <xliff:g id="assistant">%s</xliff:g>
+    </string>
+    <!-- Action string for calling a MMS phone number -->
+    <string name="call_mms">Call MMS</string>
+    <!-- Action string for calling a contact by shortcut -->
+    <string name="call_by_shortcut"><xliff:g id="contact_name">%s</xliff:g> (Call)</string>
+
+    <!-- Action string for sending an SMS to a custom phone number -->
+    <string name="sms_custom">Text
+        <xliff:g id="custom">%s</xliff:g>
+    </string>
+    <!-- Action string for sending an SMS to a home phone number -->
+    <string name="sms_home">Text home</string>
+    <!-- Action string for sending an SMS to a mobile phone number -->
+    <string name="sms_mobile">Text mobile</string>
+    <!-- Action string for sending an SMS to a work phone number -->
+    <string name="sms_work">Text work</string>
+    <!-- Action string for sending an SMS to a work fax phone number -->
+    <string name="sms_fax_work">Text work fax</string>
+    <!-- Action string for sending an SMS to a home fax phone number -->
+    <string name="sms_fax_home">Text home fax</string>
+    <!-- Action string for sending an SMS to a pager phone number -->
+    <string name="sms_pager">Text pager</string>
+    <!-- Action string for sending an SMS to an other phone number -->
+    <string name="sms_other">Text</string>
+    <!-- Action string for sending an SMS to a callback number -->
+    <string name="sms_callback">Text callback</string>
+    <!-- Action string for sending an SMS to a car phone number -->
+    <string name="sms_car">Text car</string>
+    <!-- Action string for sending an SMS to a company main phone number -->
+    <string name="sms_company_main">Text company main</string>
+    <!-- Action string for sending an SMS to a ISDN phone number -->
+    <string name="sms_isdn">Text ISDN</string>
+    <!-- Action string for sending an SMS to a main phone number -->
+    <string name="sms_main">Text main</string>
+    <!-- Action string for sending an SMS to an other fax phone number -->
+    <string name="sms_other_fax">Text fax</string>
+    <!-- Action string for sending an SMS to a radio phone number -->
+    <string name="sms_radio">Text radio</string>
+    <!-- Action string for sending an SMS to a Telex phone number -->
+    <string name="sms_telex">Text telex</string>
+    <!-- Action string for sending an SMS to a TTY/TDD phone number -->
+    <string name="sms_tty_tdd">Text TTY/TDD</string>
+    <!-- Action string for sending an SMS to a work mobile phone number -->
+    <string name="sms_work_mobile">Text work mobile</string>
+    <!-- Action string for sending an SMS to a work pager phone number -->
+    <string name="sms_work_pager">Text work pager</string>
+    <!-- Action string for sending an SMS to an assistant phone number -->
+    <string name="sms_assistant">Text
+        <xliff:g id="assistant">%s</xliff:g>
+    </string>
+    <!-- Action string for sending an SMS to a MMS phone number -->
+    <string name="sms_mms">Text MMS</string>
+    <!-- Action string for sending an SMS to a contact by shortcut -->
+    <string name="sms_by_shortcut"><xliff:g id="contact_name">%s</xliff:g> (Message)</string>
+
+    <!-- Description string for an action button to initiate a video call. -->
+    <string name="description_video_call">Make video call</string>
+
+    <!-- Title of the confirmation dialog for clearing frequents. [CHAR LIMIT=37] -->
+    <string name="clearFrequentsConfirmation_title">Clear frequently contacted?</string>
+
+    <!-- Confirmation dialog for clearing frequents. [CHAR LIMIT=NONE] -->
+    <string name="clearFrequentsConfirmation">You\'ll clear the frequently contacted list in the
+        Contacts and Phone apps, and force email apps to learn your addressing preferences from
+        scratch.
+    </string>
+
+    <!-- Title of the "Clearing frequently contacted" progress-dialog [CHAR LIMIT=35] -->
+    <string name="clearFrequentsProgress_title">Clearing frequently contacted\u2026</string>
+
+    <!--  Used to display as default status when the contact is available for chat [CHAR LIMIT=19] -->
+    <string name="status_available">Available</string>
+
+    <!--  Used to display as default status when the contact is away or idle for chat [CHAR LIMIT=19] -->
+    <string name="status_away">Away</string>
+
+    <!--  Used to display as default status when the contact is busy or Do not disturb for chat [CHAR LIMIT=19] -->
+    <string name="status_busy">Busy</string>
+
+    <!-- Directory partition name (also exists in contacts) -->
+    <string name="contactsList">Contacts</string>
+
+    <!-- The name of the invisible local contact directory -->
+    <string name="local_invisible_directory">Other</string>
+
+    <!-- The label in section header in the contact list for a contact directory [CHAR LIMIT=128] -->
+    <string name="directory_search_label">Directory</string>
+
+    <!-- The label in section header in the contact list for a work contact directory [CHAR LIMIT=128] -->
+    <string name="directory_search_label_work">Work directory</string>
+
+    <!-- The label in section header in the contact list for a local contacts [CHAR LIMIT=128] -->
+    <string name="local_search_label">All contacts</string>
+
+    <!-- Title shown in the search result activity of contacts app while searching.  [CHAR LIMIT=20]
+         (also in contacts) -->
+    <string name="search_results_searching">Searching\u2026</string>
+
+    <!-- Displayed at the top of search results indicating that more contacts were found than shown [CHAR LIMIT=64] -->
+    <string name="foundTooManyContacts">More than <xliff:g id="count">%d</xliff:g> found.</string>
+
+    <!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30]
+         (also in contacts) -->
+    <string name="listFoundAllContactsZero">No contacts</string>
+
+    <!-- Displayed at the top of the contacts showing the total number of contacts found when typing search query -->
+    <plurals name="searchFoundContacts">
+        <item quantity="one">1 found</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> found</item>
+    </plurals>
+
+    <!-- String describing the text for photo of a contact in a contacts list.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+    -->
+    <string name="description_quick_contact_for">Quick contact for <xliff:g id="name">%1$s</xliff:g></string>
+
+    <!-- Shown as the display name for a person when the name is missing or unknown. [CHAR LIMIT=18]-->
+    <string name="missing_name">(No name)</string>
+
+    <!-- The text displayed on the divider for the Favorites tab in People app indicating that items below it are frequently contacted [CHAR LIMIT = 39] -->
+    <string name="favoritesFrequentContacted">Frequently contacted</string>
+
+    <!-- String describing a contact picture that introduces users to the contact detail screen.
+
+       Used by AccessibilityService to announce the purpose of the button.
+
+       [CHAR LIMIT=NONE]
+    -->
+    <string name="description_view_contact_detail" msgid="2795575601596468581">View contact</string>
+
+    <!-- Contact list filter selection indicating that the list shows all contacts with phone numbers [CHAR LIMIT=64] -->
+    <string name="list_filter_phones">All contacts with phone numbers</string>
+
+    <!-- Contact list filter selection indicating that the list shows all work contacts with phone numbers [CHAR LIMIT=64] -->
+    <string name="list_filter_phones_work">Work profile contacts</string>
+
+    <!-- Button to view the updates from the current group on the group detail page [CHAR LIMIT=25] -->
+    <string name="view_updates_from_group">View updates</string>
+
+    <!-- Title for data source when creating or editing a contact that doesn't
+         belong to a specific account.  This contact will only exist on the phone
+         and will not be synced. [CHAR LIMIT=20]  -->
+    <string name="account_phone">Device</string>
+
+    <!-- Header that expands to list all name types when editing a structured name of a contact
+         [CHAR LIMIT=20] -->
+    <string name="nameLabelsGroup">Name</string>
+
+    <!-- Header that expands to list all nickname types when editing a nickname of a contact
+         [CHAR LIMIT=20] -->
+    <string name="nicknameLabelsGroup">Nickname</string>
+
+    <!-- Field title for the full name of a contact [CHAR LIMIT=64]-->
+    <string name="full_name">Name</string>
+    <!-- Field title for the given name of a contact -->
+    <string name="name_given">First name</string>
+    <!-- Field title for the family name of a contact -->
+    <string name="name_family">Last name</string>
+    <!-- Field title for the prefix name of a contact -->
+    <string name="name_prefix">Name prefix</string>
+    <!-- Field title for the middle name of a contact -->
+    <string name="name_middle">Middle name</string>
+    <!-- Field title for the suffix name of a contact -->
+    <string name="name_suffix">Name suffix</string>
+
+    <!-- Field title for the phonetic name of a contact [CHAR LIMIT=64]-->
+    <string name="name_phonetic">Phonetic name</string>
+
+    <!-- Field title for the phonetic given name of a contact -->
+    <string name="name_phonetic_given">Phonetic first name</string>
+    <!-- Field title for the phonetic middle name of a contact -->
+    <string name="name_phonetic_middle">Phonetic middle name</string>
+    <!-- Field title for the phonetic family name of a contact -->
+    <string name="name_phonetic_family">Phonetic last name</string>
+
+    <!-- Header that expands to list all of the types of phone numbers when editing or creating a
+         phone number for a contact [CHAR LIMIT=20] -->
+    <string name="phoneLabelsGroup">Phone</string>
+
+    <!-- Header that expands to list all of the types of email addresses when editing or creating
+         an email address for a contact [CHAR LIMIT=20] -->
+    <string name="emailLabelsGroup">Email</string>
+
+    <!-- Header that expands to list all of the types of postal addresses when editing or creating
+         an postal address for a contact [CHAR LIMIT=20] -->
+    <string name="postalLabelsGroup">Address</string>
+
+    <!-- Header that expands to list all of the types of IM account when editing or creating an IM
+         account for a contact [CHAR LIMIT=20] -->
+    <string name="imLabelsGroup">IM</string>
+
+    <!-- Header that expands to list all organization types when editing an organization of a
+         contact [CHAR LIMIT=20] -->
+    <string name="organizationLabelsGroup">Organization</string>
+
+    <!-- Header for the list of all relationships for a contact [CHAR LIMIT=20] -->
+    <string name="relationLabelsGroup">Relationship</string>
+
+    <!-- Header that expands to list all event types when editing an event of a contact
+         [CHAR LIMIT=20] -->
+    <string name="eventLabelsGroup">Special date</string>
+
+    <!-- Generic action string for text messaging a contact. Used by AccessibilityService to
+         announce the purpose of the view. [CHAR LIMIT=NONE] -->
+    <string name="sms">Text message</string>
+
+    <!-- Field title for the full postal address of a contact [CHAR LIMIT=64]-->
+    <string name="postal_address">Address</string>
+
+    <!-- Hint text for the organization name when editing -->
+    <string name="ghostData_company">Company</string>
+
+    <!-- Hint text for the organization title when editing -->
+    <string name="ghostData_title">Title</string>
+
+    <!-- The label describing the Notes field of a contact. This field allows free form text entry
+         about a contact -->
+    <string name="label_notes">Notes</string>
+
+    <!-- The label describing the SIP address field of a contact. [CHAR LIMIT=20] -->
+    <string name="label_sip_address">SIP</string>
+
+    <!-- Header that expands to list all website types when editing a website of a contact
+         [CHAR LIMIT=20] -->
+    <string name="websiteLabelsGroup">Website</string>
+
+    <!-- Header for the list of all labels for a contact [CHAR LIMIT=20] -->
+    <string name="groupsLabel">Labels</string>
+
+    <!-- Action string for sending an email to a home email address -->
+    <string name="email_home">Email home</string>
+    <!-- Action string for sending an email to a mobile email address -->
+    <string name="email_mobile">Email mobile</string>
+    <!-- Action string for sending an email to a work email address -->
+    <string name="email_work">Email work</string>
+    <!-- Action string for sending an email to an other email address -->
+    <string name="email_other">Email</string>
+    <!-- Action string for sending an email to a custom email address -->
+    <string name="email_custom">Email <xliff:g id="custom">%s</xliff:g></string>
+
+    <!-- Generic action string for sending an email -->
+    <string name="email">Email</string>
+
+    <!-- Field title for the street of a structured postal address of a contact -->
+    <string name="postal_street">Street</string>
+    <!-- Field title for the PO box of a structured postal address of a contact -->
+    <string name="postal_pobox">PO box</string>
+    <!-- Field title for the neighborhood of a structured postal address of a contact -->
+    <string name="postal_neighborhood">Neighborhood</string>
+    <!-- Field title for the city of a structured postal address of a contact -->
+    <string name="postal_city">City</string>
+    <!-- Field title for the region, or state, of a structured postal address of a contact -->
+    <string name="postal_region">State</string>
+    <!-- Field title for the postal code of a structured postal address of a contact -->
+    <string name="postal_postcode">ZIP code</string>
+    <!-- Field title for the country of a structured postal address of a contact -->
+    <string name="postal_country">Country</string>
+
+    <!-- Action string for viewing a home postal address -->
+    <string name="map_home">View home address</string>
+    <!-- Action string for viewing a work postal address -->
+    <string name="map_work">View work address</string>
+    <!-- Action string for viewing an other postal address -->
+    <string name="map_other">View address</string>
+    <!-- Action string for viewing a custom postal address -->
+    <string name="map_custom">View <xliff:g id="custom">%s</xliff:g> address</string>
+
+    <!-- Action string for starting an IM chat with the AIM protocol -->
+    <string name="chat_aim">Chat using AIM</string>
+    <!-- Action string for starting an IM chat with the MSN or Windows Live protocol -->
+    <string name="chat_msn">Chat using Windows Live</string>
+    <!-- Action string for starting an IM chat with the Yahoo protocol -->
+    <string name="chat_yahoo">Chat using Yahoo</string>
+    <!-- Action string for starting an IM chat with the Skype protocol -->
+    <string name="chat_skype">Chat using Skype</string>
+    <!-- Action string for starting an IM chat with the QQ protocol -->
+    <string name="chat_qq">Chat using QQ</string>
+    <!-- Action string for starting an IM chat with the Google Talk protocol -->
+    <string name="chat_gtalk">Chat using Google Talk</string>
+    <!-- Action string for starting an IM chat with the ICQ protocol -->
+    <string name="chat_icq">Chat using ICQ</string>
+    <!-- Action string for starting an IM chat with the Jabber protocol -->
+    <string name="chat_jabber">Chat using Jabber</string>
+
+    <!-- Generic action string for starting an IM chat -->
+    <string name="chat">Chat</string>
+
+    <!-- String describing the Contact Editor Minus button
+
+         Used by AccessibilityService to announce the purpose of the button.
+
+         [CHAR LIMIT=NONE]
+    -->
+    <string name="description_minus_button">delete</string>
+
+    <!-- Content description for the expand or collapse name fields button.
+         Clicking this button causes the name editor to toggle between showing
+         a single field where the entire name is edited at once, or multiple
+         fields corresponding to each part of the name (Name Prefix, First Name,
+         Middle Name, Last Name, Name Suffix).
+         [CHAR LIMIT=NONE] -->
+    <string name="expand_collapse_name_fields_description">Expand or collapse name fields</string>
+
+    <!-- Content description for the expand or collapse phonetic name fields button. [CHAR LIMIT=100] -->
+    <string name="expand_collapse_phonetic_name_fields_description">Expand or collapse phonetic
+        name fields</string>
+
+    <!-- Contact list filter label indicating that the list is showing all available accounts [CHAR LIMIT=64] -->
+    <string name="list_filter_all_accounts">All contacts</string>
+
+    <!-- Contact list filter label indicating that the list is showing all starred contacts [CHAR LIMIT=64] -->
+    <string name="list_filter_all_starred">Starred</string>
+
+    <!-- Contact list filter selection indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
+    <string name="list_filter_customize">Customize</string>
+
+    <!-- Contact list filter selection indicating that the list shows only the selected contact [CHAR LIMIT=64] -->
+    <string name="list_filter_single">Contact</string>
+
+    <!-- List title for a special contacts group that covers all contacts. [CHAR LIMIT=25] -->
+    <string name="display_ungrouped">All other contacts</string>
+
+    <!-- List title for a special contacts group that covers all contacts that aren't members of any other group. [CHAR LIMIT=25] -->
+    <string name="display_all_contacts">All contacts</string>
+
+    <!-- Menu item to remove a contacts sync group. [CHAR LIMIT=40] -->
+    <string name="menu_sync_remove">Remove sync group</string>
+
+    <!-- Menu item to add a contacts sync group. [CHAR LIMIT=40] -->
+    <string name="dialog_sync_add">Add sync group</string>
+
+    <!-- Text displayed in the sync groups footer view for unknown sync groups. [CHAR LIMIT=40 -->
+    <string name="display_more_groups">More groups\u2026</string>
+
+    <!-- Warning message given to users just before they remove a currently syncing
+         group that would also cause all ungrouped contacts to stop syncing.  [CHAR LIMIT=NONE] -->
+    <string name="display_warn_remove_ungrouped">Removing \"<xliff:g id="group" example="Starred">%s</xliff:g>\" from sync will also remove any ungrouped contacts from sync.</string>
+
+    <!-- Displayed in a spinner dialog as user changes to display options are saved -->
+    <string name="savingDisplayGroups">Saving display options\u2026</string>
+
+    <!-- Menu item to indicate you are done editing a contact and want to save the changes you've made -->
+    <string name="menu_done">Done</string>
+
+    <!-- Menu item to indicate you want to cancel the current editing process and NOT save the changes you've made [CHAR LIMIT=12] -->
+    <string name="menu_doNotSave">Cancel</string>
+
+    <!-- Displayed at the top of the contacts showing single contact. [CHAR LIMIT=50] -->
+    <string name="listCustomView">Customized view</string>
+
+    <!-- Message asking user to select an account to save contacts imported from vcard or SIM card [CHAR LIMIT=64] -->
+    <string name="dialog_new_contact_account">Save imported contacts to:</string>
+
+    <!-- Action string for selecting SIM for importing contacts -->
+    <string name="import_from_sim">Import from SIM card</string>
+
+    <!-- Action string for selecting a SIM subscription for importing contacts -->
+    <string name="import_from_sim_summary">Import from SIM <xliff:g id="sim_name">^1</xliff:g> - <xliff:g id="sim_number">^2</xliff:g></string>
+
+    <!-- Action string for selecting a SIM subscription for importing contacts, without a phone number -->
+    <string name="import_from_sim_summary_no_number">Import from SIM <xliff:g id="sim_name">%1$s</xliff:g></string>
+
+    <!-- Action string for selecting a .vcf file to import contacts from [CHAR LIMIT=30] -->
+    <string name="import_from_vcf_file" product="default">Import from .vcf file</string>
+
+    <!-- Message shown in a Dialog confirming a user's cancel request toward existing vCard import.
+         The argument is file name for the vCard import the user wants to cancel.
+         [CHAR LIMIT=128] -->
+    <string name="cancel_import_confirmation_message">Cancel import of <xliff:g id="filename" example="import.vcf">%s</xliff:g>?</string>
+
+    <!-- Message shown in a Dialog confirming a user's cancel request toward existing vCard export.
+         The argument is file name for the vCard export the user wants to cancel.
+         [CHAR LIMIT=128] -->
+    <string name="cancel_export_confirmation_message">Cancel export of <xliff:g id="filename" example="export.vcf">%s</xliff:g>?</string>
+
+    <!-- Title shown in a Dialog telling users cancel vCard import/export operation is failed. [CHAR LIMIT=40] -->
+    <string name="cancel_vcard_import_or_export_failed">Couldn\'t cancel vCard import/export</string>
+
+    <!-- The failed reason which should not be shown but it may in some buggy condition. [CHAR LIMIT=40] -->
+    <string name="fail_reason_unknown">Unknown error.</string>
+
+    <!-- The failed reason shown when vCard importer/exporter could not open the file
+         specified by a user. The file name should be in the message. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_could_not_open_file">Couldn\'t open \"<xliff:g id="file_name">%s</xliff:g>\": <xliff:g id="exact_reason">%s</xliff:g>.</string>
+
+    <!-- The failed reason shown when contacts exporter fails to be initialized.
+         Some exact reason must follow this. [CHAR LIMIT=NONE]-->
+    <string name="fail_reason_could_not_initialize_exporter">Couldn\'t start the exporter: \"<xliff:g id="exact_reason">%s</xliff:g>\".</string>
+
+    <!-- The failed reason shown when there's no contact which is allowed to be exported.
+         Note that user may have contacts data but all of them are probably not allowed to be
+         exported because of security/permission reasons. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_no_exportable_contact">There is no exportable contact.</string>
+
+    <!-- The user doesn't have all permissions required to use the current screen. So
+         close the current screen and show the user this message. -->
+    <string name="missing_required_permission">You have disabled a required permission.</string>
+
+    <!-- The failed reason shown when some error happend during contacts export.
+         Some exact reason must follow this. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_error_occurred_during_export">An error occurred during export: \"<xliff:g id="exact_reason">%s</xliff:g>\".</string>
+
+    <!-- The failed reason shown when the given file name is too long for the system.
+         The length limit of each file is different in each Android device, so we don't need to
+         mention it here. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_too_long_filename">Required filename is too long (\"<xliff:g id="filename">%s</xliff:g>\").</string>
+
+    <!-- The failed reason shown when Contacts app (especially vCard importer/exporter)
+         emitted some I/O error. Exact reason will be appended by the system. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_io_error">I/O error</string>
+
+    <!-- Failure reason show when Contacts app (especially vCard importer) encountered
+         low memory problem and could not proceed its import procedure. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_low_memory_during_import">Not enough memory. The file may be too large.</string>
+
+    <!-- The failed reason shown when vCard parser was not able to be parsed by the current vCard
+         implementation. This might happen even when the input vCard is completely valid, though
+         we believe it is rather rare in the actual world. [CHAR LIMIT=NONE] -->
+    <string name="fail_reason_vcard_parse_error">Couldn\'t parse vCard for an unexpected reason.</string>
+
+    <!-- The failed reason shown when vCard importer doesn't support the format.
+         This may be shown when the vCard is corrupted [CHAR LIMIT=40] -->
+    <string name="fail_reason_not_supported">The format isn\'t supported.</string>
+
+    <!-- Fail reason shown when vCard importer failed to look over meta information stored in vCard file(s). -->
+    <string name="fail_reason_failed_to_collect_vcard_meta_info">Couldn\'t collect meta information of given vCard file(s).</string>
+
+    <!-- The failed reason shown when the import of some of vCard files failed during multiple vCard
+         files import. It includes the case where all files were failed to be imported. -->
+    <string name="fail_reason_failed_to_read_files">One or more files couldn\'t be imported (%s).</string>
+
+    <!-- The title shown when exporting vCard is successfuly finished [CHAR LIMIT=40] -->
+    <string name="exporting_vcard_finished_title">Finished exporting <xliff:g id="filename" example="export.vcf">%s</xliff:g>.</string>
+
+    <!-- The title shown when exporting vCard has finished successfully but the destination filename could not be resolved. [CHAR LIMIT=NONE] -->
+    <string name="exporting_vcard_finished_title_fallback">Finished exporting contacts.</string>
+
+    <!-- The toast message shown when exporting vCard has finished and vCards are ready to be shared [CHAR LIMIT=150]-->
+    <string name="exporting_vcard_finished_toast">Finished exporting contacts, click the notification to share contacts.</string>
+
+    <!-- The message on notification shown when exporting vCard has finished and vCards are ready to be shared [CHAR LIMIT=60]-->
+    <string name="touch_to_share_contacts">Tap to share contacts.</string>
+
+    <!-- The title shown when exporting vCard is canceled (probably by a user)
+         The argument is file name the user canceled importing.
+         [CHAR LIMIT=40] -->
+    <string name="exporting_vcard_canceled_title">Exporting <xliff:g id="filename" example="export.vcf">%s</xliff:g> canceled.</string>
+
+    <!-- Dialog title shown when the application is exporting contact data outside. [CHAR LIMIT=NONE] -->
+    <string name="exporting_contact_list_title">Exporting contact data</string>
+
+    <!-- Message shown when the application is exporting contact data outside -->
+    <string name="exporting_contact_list_message">Contact data is being exported.</string>
+
+    <!-- The error reason the vCard composer "may" emit when database is corrupted or
+         something is going wrong. Usually users should not see this text. [CHAR LIMIT=NONE] -->
+    <string name="composer_failed_to_get_database_infomation">Couldn\'t get database information.</string>
+
+    <!-- This error message shown when the user actually have no contact
+         (e.g. just after data-wiping), or, data providers of the contact list prohibits their
+         contacts from being exported to outside world via vcard exporter, etc. [CHAR LIMIT=NONE] -->
+    <string name="composer_has_no_exportable_contact">There are no exportable contacts. If you do have contacts on your phone, some data providers may not allow the contacts to be exported from the phone.</string>
+
+    <!-- The error reason the vCard composer may emit when vCard composer is not initialized
+         even when needed.
+         Users should not usually see this error message. [CHAR LIMIT=NONE] -->
+    <string name="composer_not_initialized">The vCard composer didn\'t start properly.</string>
+
+    <!-- Dialog title shown when exporting Contact data failed. [CHAR LIMIT=20] -->
+    <string name="exporting_contact_failed_title">Couldn\'t export</string>
+
+    <!-- Dialog message shown when exporting Contact data failed. [CHAR LIMIT=NONE] -->
+    <string name="exporting_contact_failed_message">The contact data wasn\'t exported.\nReason: \"<xliff:g id="fail_reason">%s</xliff:g>\"</string>
+
+    <!-- Description shown when importing vCard data.
+         The argument is the name of a contact which is being read.
+         [CHAR LIMIT=20] -->
+    <string name="importing_vcard_description">Importing <xliff:g id="name" example="Joe Due">%s</xliff:g></string>
+
+    <!-- Dialog title shown when reading vCard data failed [CHAR LIMIT=40] -->
+    <string name="reading_vcard_failed_title">Couldn\'t read vCard data</string>
+
+    <!-- The title shown when reading vCard is canceled (probably by a user)
+         [CHAR LIMIT=40] -->
+    <string name="reading_vcard_canceled_title">Reading vCard data canceled</string>
+
+    <!-- The title shown when reading vCard finished
+         The argument is file name the user imported.
+         [CHAR LIMIT=40] -->
+    <string name="importing_vcard_finished_title">Finished importing vCard <xliff:g id="filename" example="import.vcf">%s</xliff:g></string>
+
+    <!-- The title shown when importing vCard is canceled (probably by a user)
+         The argument is file name the user canceled importing.
+         [CHAR LIMIT=40] -->
+    <string name="importing_vcard_canceled_title">Importing <xliff:g id="filename" example="import.vcf">%s</xliff:g> canceled</string>
+
+    <!-- The message shown when vCard import request is accepted. The system may start that work soon, or do it later
+         when there are already other import/export requests.
+         The argument is file name the user imported.
+         [CHAR LIMIT=40] -->
+    <string name="vcard_import_will_start_message"><xliff:g id="filename" example="import.vcf">%s</xliff:g> will be imported shortly.</string>
+    <!-- The message shown when vCard import request is accepted. The system may start that work soon, or do it later when there are already other import/export requests.
+         "The file" is what a user selected for importing.
+         [CHAR LIMIT=40] -->
+    <string name="vcard_import_will_start_message_with_default_name">The file will be imported shortly.</string>
+    <!-- The message shown when a given vCard import request is rejected by the system. [CHAR LIMIT=NONE] -->
+    <string name="vcard_import_request_rejected_message">vCard import request was rejected. Try again later.</string>
+    <!-- The message shown when vCard export request is accepted. The system may start that work soon, or do it later
+         when there are already other import/export requests.
+         The argument is file name the user exported.
+         [CHAR LIMIT=40] -->
+    <string name="vcard_export_will_start_message"><xliff:g id="filename" example="import.vcf">%s</xliff:g> will be exported shortly.</string>
+
+    <!-- The message shown when a vCard export request is accepted but the destination filename could not be resolved. [CHAR LIMIT=NONE] -->
+    <string name="vcard_export_will_start_message_fallback">The file will be exported shortly.</string>
+
+    <!-- The message shown when a vCard export request is accepted and contacts will be exported shortly. [CHAR LIMIT=70]-->
+    <string name="contacts_export_will_start_message">Contacts will be exported shortly.</string>
+
+    <!-- The message shown when a given vCard export request is rejected by the system. [CHAR LIMIT=NONE] -->
+    <string name="vcard_export_request_rejected_message">vCard export request was rejected. Try again later.</string>
+    <!-- Used when file name is unknown in vCard processing. It typically happens
+         when the file is given outside the Contacts app. [CHAR LIMIT=30] -->
+    <string name="vcard_unknown_filename">contact</string>
+
+    <!-- The message shown when vCard importer is caching files to be imported into local temporary
+         data storage. [CHAR LIMIT=NONE] -->
+    <string name="caching_vcard_message">Caching vCard(s) to local temporary storage. The actual import will start soon.</string>
+
+    <!-- Message used when vCard import has failed. [CHAR LIMIT=40] -->
+    <string name="vcard_import_failed">Couldn\'t import vCard.</string>
+
+    <!-- The "file name" displayed for vCards received directly via NFC [CHAR LIMIT=16] -->
+    <string name="nfc_vcard_file_name">Contact received over NFC</string>
+
+    <!-- Dialog title shown when a user confirms whether he/she export Contact data. [CHAR LIMIT=32] -->
+    <string name="confirm_export_title">Export contacts?</string>
+
+    <!-- The title shown when vCard importer is caching files to be imported into local temporary
+         data storage.  [CHAR LIMIT=40] -->
+    <string name="caching_vcard_title">Caching</string>
+
+    <!-- The message shown while importing vCard(s).
+         First argument is current index of contacts to be imported.
+         Second argument is the total number of contacts.
+         Third argument is the name of a contact which is being read.
+         [CHAR LIMIT=20] -->
+    <string name="progress_notifier_message">Importing <xliff:g id="current_number">%s</xliff:g>/<xliff:g id="total_number">%s</xliff:g>: <xliff:g id="name" example="Joe Due">%s</xliff:g></string>
+
+    <!-- Action that exports all contacts to a user selected destination. [CHAR LIMIT=25] -->
+    <string name="export_to_vcf_file" product="default">Export to .vcf file</string>
+
+    <!-- Contact preferences related strings -->
+
+    <!-- Label of the "sort by" display option -->
+    <string name="display_options_sort_list_by">Sort by</string>
+
+    <!-- An allowable value for the "sort list by" contact display option  -->
+    <string name="display_options_sort_by_given_name">First name</string>
+
+    <!-- An allowable value for the "sort list by" contact display option  -->
+    <string name="display_options_sort_by_family_name">Last name</string>
+
+    <!-- Label of the "name format" display option [CHAR LIMIT=64]-->
+    <string name="display_options_view_names_as">Name format</string>
+
+    <!-- An allowable value for the "view names as" contact display option  -->
+    <string name="display_options_view_given_name_first">First name first</string>
+
+    <!-- An allowable value for the "view names as" contact display option  -->
+    <string name="display_options_view_family_name_first">Last name first</string>
+
+    <!--Lable of the "Accounts" in settings [CHAR LIMIT=30]-->
+    <string name="settings_accounts">Accounts</string>
+
+    <!--Label of the "default account" setting option to set default editor account. [CHAR LIMIT=80]-->
+    <string name="default_editor_account">Default account for new contacts</string>
+
+    <!--Label of the "Sync contact metadata" setting option to set sync account for Lychee. [CHAR LIMIT=80]-->
+    <string name="sync_contact_metadata_title">Sync contact metadata [DOGFOOD]</string>
+
+    <!--Label of the "Sync contact metadata" setting dialog to set sync account for Lychee. [CHAR LIMIT=80]-->
+    <string name="sync_contact_metadata_dialog_title">Sync contact metadata</string>
+
+    <!-- Title of my info preference, showing the name of user's personal profile [CHAR LIMIT=30]-->
+    <string name="settings_my_info_title">My info</string>
+
+    <!-- Displayed below my info for user to set up the user's personal profile entry [CHAR LIMIT=64] -->
+    <string name="set_up_profile">Set up your profile</string>
+
+    <!-- Label of the "About" setting -->
+    <string name="setting_about">About Contacts</string>
+
+    <!-- Title of the settings activity [CHAR LIMIT=64] -->
+    <string name="activity_title_settings">Settings</string>
+
+    <!-- Action that shares visible contacts -->
+    <string name="share_visible_contacts">Share visible contacts</string>
+
+    <!-- A framework exception (ie, transaction too large) can be thrown while attempting to share all visible contacts. If so, show this toast. -->
+    <string name="share_visible_contacts_failure">Failed to share visible contacts.</string>
+
+    <!-- Action that shares favorite contacts [CHAR LIMIT=40]-->
+    <string name="share_favorite_contacts">Share favorite contacts</string>
+
+    <!-- Action that shares contacts [CHAR LIMIT=30]-->
+    <string name="share_contacts">Share all contacts</string>
+
+    <!-- A framework exception can be thrown while attempting to share all contacts. If so, show this toast. [CHAR LIMIT=40]-->
+    <string name="share_contacts_failure">Failed to share contacts.</string>
+
+    <!-- Dialog title when selecting the bulk operation to perform from a list. [CHAR LIMIT=36] -->
+    <string name="dialog_import_export">Import/export contacts</string>
+
+    <!-- Dialog title when importing contacts from an external source. [CHAR LIMIT=36] -->
+    <string name="dialog_import">Import contacts</string>
+
+    <!-- Toast indicating that sharing a contact has failed. [CHAR LIMIT=NONE]  -->
+    <string name="share_error">This contact can\'t be shared.</string>
+
+    <!-- Toast indicating that no visible contact to share [CHAR LIMIT=NONE]  -->
+    <string name="no_contact_to_share">There are no contacts to share.</string>
+
+    <!-- Menu item to search contacts -->
+    <string name="menu_search">Search</string>
+
+    <!-- The menu item to filter the list of contacts displayed -->
+    <string name="menu_contacts_filter">Contacts to display</string>
+
+    <!-- Title of the activity that allows the uesr to filter the list of contacts displayed according to account [CHAR LIMIT=25] -->
+    <string name="activity_title_contacts_filter">Contacts to display</string>
+
+    <!-- Title of the activity that allows the user to customize filtering of contact list [CHAR LIMIT=128] -->
+    <string name="custom_list_filter">Define customized view</string>
+
+    <!-- Menu item to save changes to custom filter. [CHAR LIMIT=15] -->
+    <string name="menu_custom_filter_save">Save</string>
+
+    <!-- Query hint displayed inside the search field [CHAR LIMIT=64] -->
+    <string name="hint_findContacts">Search contacts</string>
+
+    <!-- The description text for the favorites tab.
+
+         Note: AccessibilityServices use this attribute to announce what the view represents.
+         This is especially valuable for views without textual representation like ImageView.
+
+         [CHAR LIMIT=NONE] -->
+    <string name="contactsFavoritesLabel">Favorites</string>
+
+    <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when "All contacts" is selected  [CHAR LIMIT=64]-->
+    <string name="listTotalAllContactsZero">No contacts.</string>
+
+    <!--  The menu item to clear frequents [CHAR LIMIT=30] -->
+    <string name="menu_clear_frequents">Clear frequents</string>
+
+    <!-- Menu item to select SIM card -->
+    <string name="menu_select_sim">Select SIM card</string>
+
+    <!-- The menu item to open the list of accounts. [CHAR LIMIT=60]-->
+    <string name="menu_accounts">Manage accounts</string>
+
+    <!-- The menu item to bulk import or bulk export contacts from SIM card or SD card.  [CHAR LIMIT=30]-->
+    <string name="menu_import_export">Import/export</string>
+
+    <!-- The menu item to open blocked numbers activity [CHAR LIMIT=60]-->
+    <string name="menu_blocked_numbers">Blocked numbers</string>
+
+    <!-- The font-family to use for tab text.
+         Do not translate. -->
+    <string name="tab_font_family">sans-serif</string>
+
+    <!-- Attribution of a contact status update, when the time of update is unknown -->
+    <string name="contact_status_update_attribution">via <xliff:g id="source" example="Google Talk">%1$s</xliff:g></string>
+
+    <!-- Attribution of a contact status update, when the time of update is known -->
+    <string name="contact_status_update_attribution_with_date"><xliff:g id="date" example="3 hours ago">%1$s</xliff:g> via <xliff:g id="source" example="Google Talk">%2$s</xliff:g></string>
+
+    <!-- Font family used when drawing letters for letter tile avatars.
+         Do not translate. -->
+    <string name="letter_tile_letter_font_family">sans-serif-medium</string>
+
+    <!-- Content description for the fake action menu up button as used
+     inside search. [CHAR LIMIT=NONE] -->
+    <string name="action_menu_back_from_search">stop searching</string>
+
+    <!--  String describing the icon used to clear the search field -->
+    <string name="description_clear_search">Clear search</string>
+
+    <!-- The font-family to use for the text inside the searchbox.
+         Do not translate. -->
+    <string name="search_font_family">sans-serif</string>
+
+    <!-- The title of the preference section that allows users to configure how they want their
+         contacts to be displayed. [CHAR LIMIT=128] -->
+    <string name="settings_contact_display_options_title">Contact display options</string>
+
+    <!-- Title for Select Account Dialog [CHAR LIMIT=30] -->
+    <string name="select_account_dialog_title">Account</string>
+
+    <!-- Label for the check box to toggle default sim card setting [CHAR LIMIT=35]-->
+    <string name="set_default_account">Always use this for calls</string>
+
+    <!-- Title for dialog to select Phone Account for outgoing call.  [CHAR LIMIT=40] -->
+    <string name="select_phone_account_for_calls">Call with</string>
+
+    <!-- String used for actions in the dialer call log and the quick contact card to initiate
+         a call to an individual.  The user is prompted to enter a note which is sent along with
+         the call (e.g. a call subject). [CHAR LIMIT=40] -->
+    <string name="call_with_a_note">Call with a note</string>
+
+    <!-- Hint text shown in the call subject dialog. [CHAR LIMIT=255] -->
+    <string name="call_subject_hint">Type a note to send with call ...</string>
+
+    <!-- Button used to start a new call with the user entered subject. [CHAR LIMIT=32] -->
+    <string name="send_and_call_button">SEND &amp; CALL</string>
+
+    <!-- String used to represent the total number of characters entered for a call subject,
+         compared to the character limit.  Example: 2 / 64 -->
+    <string name="call_subject_limit"><xliff:g id="count" example="4">%1$s</xliff:g> / <xliff:g id="limit" example="64">%2$s</xliff:g></string>
+
+    <!-- String used to build a phone number bype and phone number string.
+         Example: Mobile • 650-555-1212  -->
+    <string name="call_subject_type_and_number"><xliff:g id="type" example="Mobile">%1$s</xliff:g> • <xliff:g id="number" example="(650) 555-1212">%2$s</xliff:g></string>
+
+    <!-- String format to describe the number of unread items in a tab.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+    -->
+    <plurals name="tab_title_with_unread_items">
+        <item quantity="one">
+            <xliff:g id="title">%1$s</xliff:g>. <xliff:g id="count">%2$d</xliff:g> unread item.
+        </item>
+        <item quantity="other">
+            <xliff:g id="title">%1$s</xliff:g>. <xliff:g id="count">%2$d</xliff:g> unread items.
+        </item>
+    </plurals>
+
+    <!-- Build version title in About preference. [CHAR LIMIT=40]-->
+    <string name="about_build_version">Build version</string>
+
+    <!-- Open source licenses title in About preference. [CHAR LIMIT=60] -->
+    <string name="about_open_source_licenses">Open source licenses</string>
+
+    <!-- Open source licenses summary in About preference. [CHAR LIMIT=NONE] -->
+    <string name="about_open_source_licenses_summary">License details for open source software</string>
+
+    <!-- Privacy policy title in About preference. [CHAR LIMIT=40]-->
+    <string name="about_privacy_policy">Privacy policy</string>
+
+    <!-- Terms of service title in about preference. [CHAR LIMIT=60]-->
+    <string name="about_terms_of_service">Terms of service</string>
+
+    <!-- Title for the activity that displays licenses for open source libraries. [CHAR LIMIT=100]-->
+    <string name="activity_title_licenses">Open source licenses</string>
+
+    <!-- Toast message showing when failed to open the url. [CHAR LIMIT=100]-->
+    <string name="url_open_error_toast">Failed to open the url.</string>
+
+    <!-- Content description of entries (including that radio button is checked) in contact
+         accounts list filter. For example: Google abc@gmail.com checked, etc [CHAR LIMIT=30]-->
+    <string name="account_filter_view_checked"><xliff:g id="account_info">%s</xliff:g> checked</string>
+
+    <!-- Content description of entries (including that the radio button is not checked) in contact
+         accounts list filter. For example: Google abc@gmail.com not checked, etc [CHAR LIMIT=30]-->
+    <string name="account_filter_view_not_checked"><xliff:g id="account_info">%s</xliff:g> not checked</string>
+
+    <!-- Description string for an action button to initiate a video call from search results.
+         Note: AccessibilityServices use this attribute to announce what the view represents.
+         This is especially valuable for views without textual representation like ImageView.
+
+         [CHAR LIMIT=NONE]-->
+    <string name="description_search_video_call">Place video call</string>
+
+    <!-- Content description of delete contact button [CHAR LIMIT=30]-->
+    <string name="description_delete_contact">Delete</string>
+
+    <!-- Content description for (...) in no name header [CHAR LIMIT=30]-->
+    <string name="description_no_name_header">Ellipsis</string>
+</resources>
diff --git a/res-common/values/styles.xml b/res-common/values/styles.xml
new file mode 100644
index 0000000..ead4221
--- /dev/null
+++ b/res-common/values/styles.xml
@@ -0,0 +1,113 @@
+<!--
+  ~ Copyright (C) 2012 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>
+
+    <style name="DirectoryHeader">
+        <item name="android:background">@android:color/transparent</item>
+    </style>
+
+    <style name="SectionHeaderStyle" parent="@android:style/TextAppearance.Large">
+        <item name="android:textSize">16sp</item>
+        <item name="android:textAllCaps">true</item>
+        <item name="android:textColor">@color/section_header_text_color</item>
+        <item name="android:textStyle">bold</item>
+    </style>
+
+    <style name="DirectoryHeaderStyle" parent="@android:style/TextAppearance.Small">
+        <item name="android:textSize">14sp</item>
+        <item name="android:textColor">@color/dialtacts_secondary_text_color</item>
+        <item name="android:fontFamily">sans-serif-medium</item>
+    </style>
+
+    <!-- TextView style used for headers.
+
+This is similar to ?android:attr/listSeparatorTextView but uses different
+background and text color. See also android:style/Widget.Holo.TextView.ListSeparator
+(which is private, so we cannot specify it as a parent style).  -->
+    <style name="ContactListSeparatorTextViewStyle">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <!-- See comments for @dimen/list_section_divider_min_height -->
+        <item name="android:minHeight">@dimen/list_section_divider_min_height</item>
+        <item name="android:textAppearance">@style/DirectoryHeaderStyle</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:paddingLeft">8dip</item>
+        <item name="android:paddingStart">8dip</item>
+        <item name="android:paddingTop">4dip</item>
+        <item name="android:paddingBottom">4dip</item>
+        <item name="android:ellipsize">end</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:textAllCaps">true</item>
+    </style>
+
+    <style name="TextAppearanceMedium" parent="@android:style/TextAppearance.Medium">
+        <item name="android:textSize">16sp</item>
+        <item name="android:textColor">#000000</item>
+    </style>
+
+    <style name="TextAppearanceSmall" parent="@android:style/TextAppearance.Small">
+        <item name="android:textSize">14sp</item>
+        <item name="android:textColor">#737373</item>
+    </style>
+
+    <style name="ListViewStyle" parent="@android:style/Widget.Material.Light.ListView">
+        <item name="android:overScrollMode">always</item>
+    </style>
+
+    <style name="ContactListFilterTheme" parent="@android:Theme.Holo.Light">
+        <item name="android:listViewStyle">@style/ListViewStyle</item>
+        <item name="android:actionButtonStyle">@style/FilterActionButtonStyle</item>
+    </style>
+
+    <!-- Adding padding to action button doesn't move it to left, we increase the button width to
+     make margin between the button and screen edge 16dp -->
+    <style name="FilterActionButtonStyle" parent="@android:Widget.ActionButton">
+        <item name="android:minWidth">@dimen/contact_filter_action_button_width</item>
+        <item name="android:textColor">@color/actionbar_text_color</item>
+    </style>
+
+    <style name="CustomContactListFilterView" parent="ContactListFilterTheme">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+    </style>
+
+    <style name="BackgroundOnlyTheme" parent="@android:style/Theme.Material.Light">
+        <item name="android:windowBackground">@null</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowAnimationStyle">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <!-- Activities that use this theme are background activities without obvious displays.
+            However, some also have dialogs. Therefore, it doesn't make sense to set this true.-->
+        <item name="android:windowNoDisplay">false</item>
+        <item name="android:windowIsFloating">true</item>
+    </style>
+
+    <style name="Theme.CallSubjectDialogTheme" parent="@android:style/Theme.Material.Light.Dialog">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+
+        <!-- No backgrounds, titles or window float -->
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowFullscreen">false</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowElevation">0dp</item>
+    </style>
+</resources>
diff --git a/res-common/xml/preference_about.xml b/res-common/xml/preference_about.xml
new file mode 100644
index 0000000..a109db6
--- /dev/null
+++ b/res-common/xml/preference_about.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    <Preference
+            android:icon="@null"
+            android:key="@string/pref_build_version_key"
+            android:title="@string/about_build_version"/>
+
+    <Preference
+            android:icon="@null"
+            android:key="@string/pref_open_source_licenses_key"
+            android:title="@string/about_open_source_licenses"
+            android:summary="@string/about_open_source_licenses_summary"/>
+
+    <Preference
+            android:icon="@null"
+            android:key="@string/pref_privacy_policy_key"
+            android:title="@string/about_privacy_policy">
+    </Preference>
+
+    <Preference
+            android:icon="@null"
+            android:key="@string/pref_terms_of_service_key"
+            android:title="@string/about_terms_of_service">
+    </Preference>
+</PreferenceScreen>
diff --git a/res-common/xml/preference_display_options.xml b/res-common/xml/preference_display_options.xml
new file mode 100644
index 0000000..f7a6514
--- /dev/null
+++ b/res-common/xml/preference_display_options.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    <Preference
+        android:icon="@null"
+        android:key="myInfo"
+        android:title="@string/settings_my_info_title"/>
+
+    <Preference
+        android:icon="@null"
+        android:key="accounts"
+        android:title="@string/settings_accounts">
+    </Preference>
+
+    <com.android.contacts.common.preference.DefaultAccountPreference
+        android:icon="@null"
+        android:key="defaultAccount"
+        android:title="@string/default_editor_account"
+        android:dialogTitle="@string/default_editor_account" />
+
+    <Preference
+        android:icon="@null"
+        android:key="customContactsFilter"
+        android:title="@string/menu_contacts_filter"/>
+
+    <com.android.contacts.common.preference.SortOrderPreference
+        android:icon="@null"
+        android:key="sortOrder"
+        android:title="@string/display_options_sort_list_by"
+        android:dialogTitle="@string/display_options_sort_list_by" />
+
+    <com.android.contacts.common.preference.DisplayOrderPreference
+        android:icon="@null"
+        android:key="displayOrder"
+        android:title="@string/display_options_view_names_as"
+        android:dialogTitle="@string/display_options_view_names_as" />
+
+    <Preference
+        android:icon="@null"
+        android:key="importExport"
+        android:title="@string/menu_import_export"/>
+
+    <Preference
+        android:icon="@null"
+        android:key="blockedNumbers"
+        android:title="@string/menu_blocked_numbers" />
+
+    <Preference
+        android:icon="@null"
+        android:key="about"
+        android:title="@string/setting_about"
+        android:order="@integer/about_contacts_order_number"/>
+</PreferenceScreen>
diff --git a/res/layout/floating_action_button.xml b/res/layout/floating_action_button.xml
index 95c76ae..2dc8955 100644
--- a/res/layout/floating_action_button.xml
+++ b/res/layout/floating_action_button.xml
@@ -14,24 +14,26 @@
      limitations under the License.
 -->
 
-<!-- This expects to be included inside a RelativeLayout -->
+<!-- This expects to be included inside a RelativeLayout or a CoordinatorLayout -->
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     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_marginEnd="@dimen/floating_action_button_margin_right"
-    android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
-    android:background="@drawable/fab_blue"
+    android:layout_alignParentBottom="true"
     android:layout_alignParentEnd="true"
-    android:layout_alignParentBottom="true">
+    android:layout_gravity="bottom|end"
+    android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
+    android:layout_marginEnd="@dimen/floating_action_button_margin_right"
+    android:background="@drawable/fab_blue"
+    android:elevation="@dimen/design_fab_elevation">
 
     <ImageButton
         android:id="@+id/floating_action_button"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@drawable/floating_action_button"
-        android:tint="@color/floating_action_button_icon_color"
         android:contentDescription="@string/action_menu_add_new_contact_button"
-        android:src="@drawable/ic_add"/>
+        android:src="@drawable/ic_add"
+        android:tint="@color/floating_action_button_icon_color"/>
 </FrameLayout>
\ No newline at end of file
diff --git a/res/layout/group_name_dialog.xml b/res/layout/group_name_dialog.xml
deleted file mode 100644
index f19df86..0000000
--- a/res/layout/group_name_dialog.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingLeft="25dip"
-    android:paddingRight="25dip"
-    android:paddingStart="25dip"
-    android:paddingEnd="25dip"
-    android:paddingTop="25dip"
-    android:paddingBottom="25dip">
-    <EditText
-        android:id="@+id/group_label"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="@dimen/group_name_edit_text_min_height"/>
-</FrameLayout>
diff --git a/res/layout/group_name_edit_dialog.xml b/res/layout/group_name_edit_dialog.xml
index 9a8c69f..5df8c9d 100644
--- a/res/layout/group_name_edit_dialog.xml
+++ b/res/layout/group_name_edit_dialog.xml
@@ -14,24 +14,28 @@
      limitations under the License.
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.design.widget.TextInputLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/text_input_layout"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical"
-    android:paddingBottom="24dp"
+    android:paddingEnd="24dp"
     android:paddingStart="24dp"
-    android:paddingEnd="24dp">
+    app:errorEnabled="true"
+    app:hintEnabled="false">
 
-    <EditText android:id="@android:id/text1"
-        xmlns:android="http://schemas.android.com/apk/res/android"
+    <android.support.design.widget.TextInputEditText
+        android:id="@android:id/text1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:minHeight="@dimen/group_name_edit_text_min_height"
         android:layout_marginBottom="4dp"
         android:layout_marginRight="4dp"
         android:layout_marginTop="16dp"
         android:hint="@string/group_name_dialog_hint"
         android:inputType="text"
-        android:singleLine="true"
-        android:maxLength="@integer/group_name_max_length"/>
-</LinearLayout>
\ No newline at end of file
+        android:maxLength="@integer/group_name_max_length"
+        android:minHeight="@dimen/group_name_edit_text_min_height"
+        android:singleLine="true"/>
+</android.support.design.widget.TextInputLayout>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 945980d..47aeba3 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Verwyder van etiket"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"By etiket gevoeg"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Kon nie etiketveranderinge stoor nie."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Daardie etiket bestaan reeds."</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakte met foonnommers</item>
       <item quantity="one">1 kontak met foonnommer</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Skep \'n nuwe kontak"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Voeg rekening by"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Voer in"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Skep nuwe etiket"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Skep nuwe …"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Verwyder die etiket \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Kontakte self sal nie verwyder word nie.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Voer kontaknaam in voordat jy dit aan \'n ander kontak skakel."</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index ff9d817..22acf81 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ከመሰየሚያ ተወግዷል"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ወደ ስያሜ ታክሏል"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"የመሰየሚያ ለውጦችን መቀየር አልተቻለም።"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ያ መሰየሚያ ቀድሞ አለ።"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ዕውቂያዎች ከስልክ ቁጥሮች ጋር</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ዕውቂያዎች ከስልክ ቁጥሮች ጋር</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"አዲስ ዕውቂያ ፍጠር"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"መለያ አክል"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"አምጣ"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"አዲስ መሰየሚያ ፍጠር"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"አዲስ ፍጠር…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (መሰየሚያው ይሰረዝ? (ዕውቂያዎች ራሳቸው አይሰረዙም።)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"ሌላ ዕውቂያ ከማገናኘትዎ በፊት የዕውቂያ ስም ይተይቡ።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index e0ebf86..62c89d9 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -147,6 +147,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"تمت الإزالة من التصنيف"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"تمت الإضافة إلى التصنيف"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"لا يمكن حفظ التغييرات على التصنيف."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"هذا التصنيف موجود فعلاً"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="zero">لا توجد أية جهات اتصال بها أرقام هواتف (<xliff:g id="COUNT">%d</xliff:g>)</item>
       <item quantity="two">توجد جهتا اتصال (<xliff:g id="COUNT">%d</xliff:g>) بهما أرقام هواتف</item>
@@ -252,7 +253,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"إنشاء جهة اتصال جديدة"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"إضافة حساب"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"استيراد"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"إنشاء تصنيف جديد"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"إنشاء مجموعة جديدة…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"حذف التصنيف \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"؟ (لن يتم حذف جهات الاتصال نفسها)."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"اكتب اسم جهة الاتصال قبل ربطها بجهة اتصال أخرى."</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 45579aa..eb5facb 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Etiketdən silindi"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Etiketə əlavə edildi"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Etiket dəyişikliyini yadda saxlamaq mümkün olmadı."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Həmin etiket artıq mövcuddur"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> əlaqə</item>
       <item quantity="one"> telefon nömrəsi olan 1 əlaqə</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Yeni kontakt yaradın"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Hesab əlavə edin"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"İmport"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Yeni etiket yaradın"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Yenisini yaradın..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" etiketi silinsin? (Kontaktların özləri silinməyəcək.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Digəri ilə əlaqələndirilmədən öncə kontakt adı yazın."</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 3078976..7053ca6 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -52,7 +52,7 @@
     <string name="menu_call" msgid="3992595586042260618">"Pozovi kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Pošalji SMS kontaktu"</string>
     <string name="menu_splitAggregate" msgid="2627252205317945563">"Razdvoji"</string>
-    <string name="menu_editGroup" msgid="5062005185370983720">"Izmeni"</string>
+    <string name="menu_editGroup" msgid="6696843438454341063">"Ukloni kontakte"</string>
     <string name="menu_renameGroup" msgid="7169512355179757182">"Preimenuj oznaku"</string>
     <string name="menu_deleteGroup" msgid="1126469629233412249">"Izbriši oznaku"</string>
     <string name="menu_addToGroup" msgid="3267409983764370041">"Dodaj kontakt"</string>
@@ -80,10 +80,15 @@
       <item quantity="few">Kontakti su izbrisani</item>
       <item quantity="other">Kontakti su izbrisani</item>
     </plurals>
-    <plurals name="contacts_count" formatted="false" msgid="3287407967505649458">
-      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontakt</item>
-      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakta</item>
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakata</item>
+    <plurals name="contacts_count" formatted="false" msgid="8696793457340503668">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> kontakt</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> kontakta</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kontakata</item>
+    </plurals>
+    <plurals name="contacts_count_with_account" formatted="false" msgid="7402583111980220575">
+      <item quantity="one"><xliff:g id="COUNT_2">%d</xliff:g> kontakt · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="few"><xliff:g id="COUNT_2">%d</xliff:g> kontakta · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="other"><xliff:g id="COUNT_2">%d</xliff:g> kontakata · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
     </plurals>
     <string name="title_from_google" msgid="4664084747121207202">"Sa Google-a"</string>
     <string name="title_from_other_accounts" msgid="8307885412426754288">"Sa <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
@@ -111,10 +116,12 @@
     <string name="customLabelPickerTitle" msgid="1081475101983255212">"Naziv prilagođene oznake"</string>
     <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Šalji pozive direktno u glasovnu poštu"</string>
     <string name="removePhoto" msgid="4898105274130284565">"Ukloni fotografiju"</string>
-    <string name="noContacts" msgid="4955659076981974652">"Nema kontakata"</string>
+    <string name="noContacts" msgid="2228592924476426108">"Lista kontakata je prazna"</string>
     <string name="noGroups" msgid="4607906327968232225">"Nema oznaka."</string>
     <string name="noAccounts" msgid="7768267764545265909">"Morate da imate nalog da biste mogli da pravite grupe."</string>
     <string name="emptyGroup" msgid="5102411903247859575">"Nema kontakata sa ovom oznakom"</string>
+    <string name="emptyAccount" msgid="6873962901497975964">"Nema kontakata na ovom nalogu"</string>
+    <string name="emptyMainList" msgid="2772242747899664460">"Lista kontakata je prazna"</string>
     <string name="contactSavedToast" msgid="9171862279493213075">"Kontakt je sačuvan"</string>
     <string name="contactUnlinkedToast" msgid="7122823195786012553">"Kontakti su razdvojeni"</string>
     <string name="contactSavedErrorToast" msgid="3207250533172944892">"Nije moguće sačuvati izmene kontakata."</string>
@@ -131,6 +138,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Uklonili smo iz oznake"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Dodato je u oznaku"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Čuvanje promena oznake nije uspelo."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ta oznaka već postoji"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontakt sa brojem telefona</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakta sa brojevima telefona</item>
@@ -223,8 +231,7 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Učitava se…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Napravi novi kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Dodajte nalog"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Uvezi kontakte"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Napravite novu oznaku"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Uvezi"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Napravi novu…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Želite da izbrišete oznaku „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“? (Kontakti neće biti izbrisani.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Unesite ime kontakta pre nego što ga objedinite sa drugim kontaktom."</string>
@@ -232,24 +239,22 @@
     <string name="set_default" msgid="4417505153468300351">"Postavi na podrazumevano"</string>
     <string name="clear_default" msgid="7193185801596678067">"Obriši podrazumevanu vrednost"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst je kopiran"</string>
-    <string name="cancel_confirmation_dialog_message" msgid="5058226498605989285">"Želite li da odbacite promene i prekinete sa izmenama?"</string>
+    <string name="cancel_confirmation_dialog_message" msgid="9008214737653278989">"Želite da odbacite promene?"</string>
     <string name="cancel_confirmation_dialog_cancel_editing_button" msgid="3057023972074640671">"Odbaci"</string>
-    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="7737724111972855348">"Nastavi izmene"</string>
+    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="3316573928085916146">"Otkaži"</string>
     <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="enter_contact_name" msgid="4594274696120278368">"Pretražite kontakte"</string>
-    <!-- no translation found for title_edit_group (1889302367574226969) -->
-    <skip />
+    <string name="title_edit_group" msgid="8602752287270586734">"Uklonite kontakte"</string>
     <string name="local_profile_title" msgid="2021416826991393684">"Moj lokalni profil"</string>
     <string name="external_profile_title" msgid="8034998767621359438">"Moj <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profil"</string>
     <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Prikazani su svi kontakti"</string>
     <string name="generic_no_account_prompt" msgid="7218827704367325460">"Očuvajte bezbednost kontakata čak i ako izgubite telefon – sinhronizujte sa uslugom na mreži."</string>
     <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Dodavanje naloga"</string>
-    <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Neće biti napravljena rezervna kopija novog kontakta. Želite li da dodate nalog koji pravi rezervnu kopiju kontakata onlajn?"</string>
+    <string name="contact_editor_prompt_zero_accounts" msgid="6648376557574360096">"Odvojte malo vremena da biste dodali nalog pomoću kog ćete napraviti rezervnu kopiju kontakata na Google-u."</string>
     <string name="contact_editor_prompt_one_account" msgid="3087691056345099310">"Novi kontakti će biti sačuvani na nalogu <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
     <string name="contact_editor_prompt_multiple_accounts" msgid="8565761674283473549">"Izaberite podrazumevani nalog za nove kontakte:"</string>
     <string name="contact_editor_title_new_contact" msgid="7192223018128934940">"Dodaj novi kontakt"</string>
     <string name="contact_editor_title_existing_contact" msgid="4898475703683187798">"Izmeni kontakt"</string>
-    <string name="keep_local" msgid="1258761699192993322">"Zadrži lokalno"</string>
     <string name="add_account" msgid="8201790677994503186">"Dodaj nalog"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Dodaj novi nalog"</string>
     <string name="menu_export_database" msgid="2659719297530170820">"Izvezi datoteke baze podataka"</string>
@@ -261,7 +266,6 @@
     <string name="about_card_title" msgid="2920942314212825637">"Osnovni podaci"</string>
     <string name="send_message" msgid="8938418965550543196">"Pošalji poruku"</string>
     <string name="toast_making_personal_copy" msgid="288549957278065542">"Pravljenje lične kopije..."</string>
-    <string name="yesterday" msgid="6840858548955018569">"Juče"</string>
     <string name="tomorrow" msgid="6241969467795308581">"Sutra"</string>
     <string name="today" msgid="8041090779381781781">"Danas"</string>
     <string name="today_at_time_fmt" msgid="605665249491030460">"Danas u <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
@@ -346,4 +350,6 @@
     <string name="permission_explanation_subheader_calendar_and_SMS" msgid="630115334220569184">"Događaji i poruke"</string>
     <string name="permission_explanation_subheader_calendar" msgid="8785323496211704613">"Događaji"</string>
     <string name="permission_explanation_subheader_SMS" msgid="1904552086449525567">"Poruke"</string>
+    <string name="hamburger_feature_highlight_header" msgid="7442308698936786415">"Organizujte listu"</string>
+    <string name="hamburger_feature_highlight_body" msgid="6268711111318172098">"Uklonite duplikate i grupišite kontakte prema oznaci"</string>
 </resources>
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index 2eee399..fbf7130 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -52,7 +52,7 @@
     <string name="menu_call" msgid="3992595586042260618">"Выклікаць кантакт"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Паведамленне кантакту"</string>
     <string name="menu_splitAggregate" msgid="2627252205317945563">"Выдаліць сувязь"</string>
-    <string name="menu_editGroup" msgid="5062005185370983720">"Рэдагаваць"</string>
+    <string name="menu_editGroup" msgid="6696843438454341063">"Выдаліць кантакты"</string>
     <string name="menu_renameGroup" msgid="7169512355179757182">"Перайменаваць метку"</string>
     <string name="menu_deleteGroup" msgid="1126469629233412249">"Выдаліць метку"</string>
     <string name="menu_addToGroup" msgid="3267409983764370041">"Дадаць кантакт"</string>
@@ -81,11 +81,17 @@
       <item quantity="many">Кантакты выдалены</item>
       <item quantity="other">Кантакты выдалены</item>
     </plurals>
-    <plurals name="contacts_count" formatted="false" msgid="3287407967505649458">
-      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> кантакт</item>
-      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> кантакты</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> кантактаў</item>
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> кантакту</item>
+    <plurals name="contacts_count" formatted="false" msgid="8696793457340503668">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> кантакт</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> кантакты</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> кантактаў</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> кантакту</item>
+    </plurals>
+    <plurals name="contacts_count_with_account" formatted="false" msgid="7402583111980220575">
+      <item quantity="one"><xliff:g id="COUNT_2">%d</xliff:g> кантакт · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="few"><xliff:g id="COUNT_2">%d</xliff:g> кантакты · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="many"><xliff:g id="COUNT_2">%d</xliff:g> кантактаў · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="other"><xliff:g id="COUNT_2">%d</xliff:g> кантакту · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
     </plurals>
     <string name="title_from_google" msgid="4664084747121207202">"З Google"</string>
     <string name="title_from_other_accounts" msgid="8307885412426754288">"З <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
@@ -113,10 +119,12 @@
     <string name="customLabelPickerTitle" msgid="1081475101983255212">"Імя карыстальніцкага цэтліка"</string>
     <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Адпраўляць выклікі непасрэдна на галасавую пошту"</string>
     <string name="removePhoto" msgid="4898105274130284565">"Выдаліць фота"</string>
-    <string name="noContacts" msgid="4955659076981974652">"Няма кантактаў"</string>
+    <string name="noContacts" msgid="2228592924476426108">"Ваш спіс кантактаў пусты"</string>
     <string name="noGroups" msgid="4607906327968232225">"Метак няма."</string>
     <string name="noAccounts" msgid="7768267764545265909">"Для стварэння групы патрабуецца ўліковы запіс."</string>
     <string name="emptyGroup" msgid="5102411903247859575">"Няма кантактаў з гэтай меткай"</string>
+    <string name="emptyAccount" msgid="6873962901497975964">"Няма кантактаў у гэтым уліковым запісе"</string>
+    <string name="emptyMainList" msgid="2772242747899664460">"Ваш спіс кантактаў пусты"</string>
     <string name="contactSavedToast" msgid="9171862279493213075">"Кантакт захаваны"</string>
     <string name="contactUnlinkedToast" msgid="7122823195786012553">"Кантакты адлучаны"</string>
     <string name="contactSavedErrorToast" msgid="3207250533172944892">"Немагчыма захаваць змены кантакта."</string>
@@ -133,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Выдалена з меткі"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Дададзена да этыкеткі"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Не ўдалося захаваць змяненні меткі."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Гэта пазнака ўжо існуе"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> кантакт з нумарам(і) тэлефона(ў)</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> кантакты з нумарамі тэлефонаў</item>
@@ -229,8 +238,7 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Загрузка..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Стварыць новы кантакт"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Дадаць уліковы запіс"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Імпартаваць кантакты"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Стварыць новую метку"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Імпартаваць"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Стварыць новую..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Выдаліць метку \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Самі кантакты не будуць выдалены.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Перад звязваннем кантакту з іншым увядзіце імя кантакту."</string>
@@ -238,24 +246,22 @@
     <string name="set_default" msgid="4417505153468300351">"Усталяваць па змаўчанні"</string>
     <string name="clear_default" msgid="7193185801596678067">"Скінуць налады па змаўчанні"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Тэкст скапіяваны"</string>
-    <string name="cancel_confirmation_dialog_message" msgid="5058226498605989285">"Адхіліць змены і скончыць рэдагаванне?"</string>
+    <string name="cancel_confirmation_dialog_message" msgid="9008214737653278989">"Скасаваць змены?"</string>
     <string name="cancel_confirmation_dialog_cancel_editing_button" msgid="3057023972074640671">"Адхіліць"</string>
-    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="7737724111972855348">"Працягнуць рэдагаванне"</string>
+    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="3316573928085916146">"Скасаваць"</string>
     <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="enter_contact_name" msgid="4594274696120278368">"Пошук кантактаў"</string>
-    <!-- no translation found for title_edit_group (1889302367574226969) -->
-    <skip />
+    <string name="title_edit_group" msgid="8602752287270586734">"Выдаліць кантакты"</string>
     <string name="local_profile_title" msgid="2021416826991393684">"Мой лакальны профіль"</string>
     <string name="external_profile_title" msgid="8034998767621359438">"Мой профіль у <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
     <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Адлюстраванне ўсіх кантактаў"</string>
     <string name="generic_no_account_prompt" msgid="7218827704367325460">"Абаранiце свае кантакты, нават калі страціце тэлефон: сінхранізуйце iх з вэб-службай."</string>
     <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Дадаць уліковы запіс"</string>
-    <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Рэзервовая копiя вашага новага кантакту не будзе створана. Дадаць улiковы запiс, у якiм будуць захоўвацца рэзервовыя копii кантактаў у Iнтэрнэце?"</string>
+    <string name="contact_editor_prompt_zero_accounts" msgid="6648376557574360096">"Знайдзіце хвілінку, каб дадаць уліковы запіс, які дазволіць стварыць рэзервовую копію вашых кантактаў у Google."</string>
     <string name="contact_editor_prompt_one_account" msgid="3087691056345099310">"Новыя кантакты будуць захаваны ва ўліковы запіс <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
     <string name="contact_editor_prompt_multiple_accounts" msgid="8565761674283473549">"Выбраць уліковы запіс па змаўчанні для новых кантактаў:"</string>
     <string name="contact_editor_title_new_contact" msgid="7192223018128934940">"Дадаць новы кантакт"</string>
     <string name="contact_editor_title_existing_contact" msgid="4898475703683187798">"Рэдагаваць кантакт"</string>
-    <string name="keep_local" msgid="1258761699192993322">"Захоўваць лакальна"</string>
     <string name="add_account" msgid="8201790677994503186">"Дадаць уліковы запіс"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Дадаць новы ўліковы запіс"</string>
     <string name="menu_export_database" msgid="2659719297530170820">"Экспарт базы дадзеных файлаў"</string>
@@ -267,7 +273,6 @@
     <string name="about_card_title" msgid="2920942314212825637">"Інфармацыя"</string>
     <string name="send_message" msgid="8938418965550543196">"Адправiць паведамленне"</string>
     <string name="toast_making_personal_copy" msgid="288549957278065542">"Стварэнне асабістай копіі..."</string>
-    <string name="yesterday" msgid="6840858548955018569">"Учора"</string>
     <string name="tomorrow" msgid="6241969467795308581">"Заўтра"</string>
     <string name="today" msgid="8041090779381781781">"Сёння"</string>
     <string name="today_at_time_fmt" msgid="605665249491030460">"Сёння ў перыяд <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
@@ -356,4 +361,6 @@
     <string name="permission_explanation_subheader_calendar_and_SMS" msgid="630115334220569184">"Падзеі і паведамленні"</string>
     <string name="permission_explanation_subheader_calendar" msgid="8785323496211704613">"Падзеі"</string>
     <string name="permission_explanation_subheader_SMS" msgid="1904552086449525567">"Паведамленні"</string>
+    <string name="hamburger_feature_highlight_header" msgid="7442308698936786415">"Арганізуйце свой спіс"</string>
+    <string name="hamburger_feature_highlight_body" msgid="6268711111318172098">"Выдаліце дублікаты і згрупуйце кантакты па метках"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 13ee552..72ff55d 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Премахнати от етикета"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Добавянето към етикета бе успешно"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Промените в етикета не можаха да бъдат запазени."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Етикетът вече съществува"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> контакта с телефонен номер</item>
       <item quantity="one">1 контакт с телефонен номер</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Създаване на нов контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Добавяне на профил"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Импортиране"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Създаване на нов етикет"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Създаване на ново…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Да се изтрие ли етикетът „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“? (Самите контакти няма да бъдат изтрити.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Въведете името на контакта преди свързването му с друг."</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 648de98..3d0c97c 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"লেবেল থেকে সরানো হয়েছে"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"লেবেল যোগ করা হয়েছে"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"লেবেল পরিবর্তনগুলি সংরক্ষণ করা গেল না।"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"এই লেবেলটি ইতিমধ্যে রয়েছে"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one">ফোন নম্বর সহ <xliff:g id="COUNT">%d</xliff:g>টি পরিচিতি</item>
       <item quantity="other">ফোন নম্বর সহ <xliff:g id="COUNT">%d</xliff:g>টি পরিচিতি</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"একটি নতুন পরিচিতি তৈরি করুন"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"অ্যাকাউন্ট যোগ করুন"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"আমদানি করুন"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"নতুন লেবেল তৈরি করুন"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"নতুন তৈরি করুন…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" গোষ্ঠী মুছবেন? (পরিচিতিগুলি নিজে থেকে মুছে যাবে না৷)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"অন্য একটির সাথে লিঙ্ক করার আগে পরিচিতির নাম লিখুন৷"</string>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index 67f5166..9e2af14 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -52,7 +52,7 @@
     <string name="menu_call" msgid="3992595586042260618">"Pozovi kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Pošalji tekstualnu poruku kontaktu"</string>
     <string name="menu_splitAggregate" msgid="2627252205317945563">"Razdvoji"</string>
-    <string name="menu_editGroup" msgid="5062005185370983720">"Uredi"</string>
+    <string name="menu_editGroup" msgid="6696843438454341063">"Ukloni kontakte"</string>
     <string name="menu_renameGroup" msgid="7169512355179757182">"Preimenuj oznaku"</string>
     <string name="menu_deleteGroup" msgid="1126469629233412249">"Izbriši oznaku"</string>
     <string name="menu_addToGroup" msgid="3267409983764370041">"Dodaj kontakt"</string>
@@ -80,10 +80,15 @@
       <item quantity="few">Kontakti su izbrisani</item>
       <item quantity="other">Kontakti su izbrisani</item>
     </plurals>
-    <plurals name="contacts_count" formatted="false" msgid="3287407967505649458">
-      <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontakt</item>
-      <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakta</item>
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakata</item>
+    <plurals name="contacts_count" formatted="false" msgid="8696793457340503668">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> kontakt</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> kontakta</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kontakata</item>
+    </plurals>
+    <plurals name="contacts_count_with_account" formatted="false" msgid="7402583111980220575">
+      <item quantity="one"><xliff:g id="COUNT_2">%d</xliff:g> kontakt · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="few"><xliff:g id="COUNT_2">%d</xliff:g> kontakta · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
+      <item quantity="other"><xliff:g id="COUNT_2">%d</xliff:g> kontakata · <xliff:g id="ACCOUNT_3">%s</xliff:g></item>
     </plurals>
     <string name="title_from_google" msgid="4664084747121207202">"Sa Googlea"</string>
     <string name="title_from_other_accounts" msgid="8307885412426754288">"Sa računa <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
@@ -111,10 +116,12 @@
     <string name="customLabelPickerTitle" msgid="1081475101983255212">"Prilagođeni naziv oznake"</string>
     <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Pošalji pozive direktno na govornu poštu"</string>
     <string name="removePhoto" msgid="4898105274130284565">"Ukloni fotografiju"</string>
-    <string name="noContacts" msgid="4955659076981974652">"Nema kontakata"</string>
+    <string name="noContacts" msgid="2228592924476426108">"Spisak kontakata je prazan"</string>
     <string name="noGroups" msgid="4607906327968232225">"Nema oznaka."</string>
     <string name="noAccounts" msgid="7768267764545265909">"Potreban vam je račun da napravite grupe."</string>
     <string name="emptyGroup" msgid="5102411903247859575">"Nema kontakata s ovom oznakom"</string>
+    <string name="emptyAccount" msgid="6873962901497975964">"Nema kontakata na ovom računu"</string>
+    <string name="emptyMainList" msgid="2772242747899664460">"Spisak kontakata je prazan"</string>
     <string name="contactSavedToast" msgid="9171862279493213075">"Kontakt je sačuvan"</string>
     <string name="contactUnlinkedToast" msgid="7122823195786012553">"Kontakti su razdvojeni"</string>
     <string name="contactSavedErrorToast" msgid="3207250533172944892">"Nije moguće sačuvati promjene kontakta."</string>
@@ -131,6 +138,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Uklonjeno iz oznake"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Dodano oznaci"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Nije moguće sačuvati promjene oznake."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ta oznaka već postoji"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontakt s brojem telefona</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakta s brojevima telefona</item>
@@ -223,8 +231,7 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Učitavanje…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Napravi novi kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Dodaj račun"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Uvezi kontakte"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Napravi novu oznaku"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Uvezi"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Napravi novu…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Izbrisati oznaku \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Kontakti neće biti izbrisani.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Upišite ime kontakta prije povezivanja s drugim kontaktom."</string>
@@ -232,24 +239,24 @@
     <string name="set_default" msgid="4417505153468300351">"Postavi zadano"</string>
     <string name="clear_default" msgid="7193185801596678067">"Obriši zadano"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst je kopiran"</string>
-    <string name="cancel_confirmation_dialog_message" msgid="5058226498605989285">"Želite li odbaciti napravljene promjene i prekinuti uređivanje?"</string>
+    <!-- no translation found for cancel_confirmation_dialog_message (9008214737653278989) -->
+    <skip />
     <string name="cancel_confirmation_dialog_cancel_editing_button" msgid="3057023972074640671">"Odbaci"</string>
-    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="7737724111972855348">"Nastavi uređivanje"</string>
+    <!-- no translation found for cancel_confirmation_dialog_keep_editing_button (3316573928085916146) -->
+    <skip />
     <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="enter_contact_name" msgid="4594274696120278368">"Traži kontakte"</string>
-    <!-- no translation found for title_edit_group (1889302367574226969) -->
-    <skip />
+    <string name="title_edit_group" msgid="8602752287270586734">"Ukloni kontakte"</string>
     <string name="local_profile_title" msgid="2021416826991393684">"Moj lokalni profil"</string>
     <string name="external_profile_title" msgid="8034998767621359438">"Moj profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
     <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Prikazuju se svi kontakti"</string>
     <string name="generic_no_account_prompt" msgid="7218827704367325460">"Očuvajte sigurnost svojih kontakata čak i ako izgubite telefon: sinhronizirajte ih s mrežnom uslugom."</string>
     <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Dodajte račun"</string>
-    <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Neće biti napravljena sigurnosna kopija novog računa. Dodati račun za pravljenje sigurnosnih kopija kontakata na mreži?"</string>
+    <string name="contact_editor_prompt_zero_accounts" msgid="6648376557574360096">"Odvojite trenutak da dodate račun putem kojeg će se kontakti sigurnosno kopirati na Google."</string>
     <string name="contact_editor_prompt_one_account" msgid="3087691056345099310">"Novi kontakti će biti sačuvani na račun <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
     <string name="contact_editor_prompt_multiple_accounts" msgid="8565761674283473549">"Izaberite zadani račun za nove kontakte:"</string>
     <string name="contact_editor_title_new_contact" msgid="7192223018128934940">"Dodaj novi kontakt"</string>
     <string name="contact_editor_title_existing_contact" msgid="4898475703683187798">"Uredi kontakt"</string>
-    <string name="keep_local" msgid="1258761699192993322">"Zadrži na uređaju"</string>
     <string name="add_account" msgid="8201790677994503186">"Dodajte račun"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Dodaj novi račun"</string>
     <string name="menu_export_database" msgid="2659719297530170820">"Izvezi fajlove baze podataka"</string>
@@ -261,7 +268,6 @@
     <string name="about_card_title" msgid="2920942314212825637">"O kontaktu"</string>
     <string name="send_message" msgid="8938418965550543196">"Pošalji poruku"</string>
     <string name="toast_making_personal_copy" msgid="288549957278065542">"Izrađivanje lične kopije u toku…"</string>
-    <string name="yesterday" msgid="6840858548955018569">"Jučer"</string>
     <string name="tomorrow" msgid="6241969467795308581">"Sutra"</string>
     <string name="today" msgid="8041090779381781781">"Danas"</string>
     <string name="today_at_time_fmt" msgid="605665249491030460">"Danas u <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
@@ -346,4 +352,6 @@
     <string name="permission_explanation_subheader_calendar_and_SMS" msgid="630115334220569184">"Događaji i poruke"</string>
     <string name="permission_explanation_subheader_calendar" msgid="8785323496211704613">"Događaji"</string>
     <string name="permission_explanation_subheader_SMS" msgid="1904552086449525567">"Poruke"</string>
+    <string name="hamburger_feature_highlight_header" msgid="7442308698936786415">"Organizirajte spisak"</string>
+    <string name="hamburger_feature_highlight_body" msgid="6268711111318172098">"Uklonite duplikate i grupirajte kontakte prema oznaci"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index cad9595..fa205e1 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"S\'han suprimit de l\'etiqueta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"S\'ha afegit a l\'etiqueta"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"No s\'han pogut desar els canvis fets a l\'etiqueta."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Aquesta etiqueta ja existeix"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactes amb número de telèfon</item>
       <item quantity="one">1 contacte amb número de telèfon</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crea un contacte"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Afegeix un compte"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importa"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Crea una etiqueta"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Crea…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Vols suprimir l\'etiqueta \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (No se\'n suprimiran els contactes.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Escriu el nom del contacte abans d\'enllaçar-lo amb un altre contacte."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index b6cf011..fe9358c 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Odebráno ze štítku"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Přidáno do štítku"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Změny štítku se nepodařilo uložit."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Tento štítek už existuje"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakty s telefonním číslem</item>
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> kontaktu s telefonním číslem</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Vytvořit nový kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Přidat účet"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importovat"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Vytvořit nový štítek"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Nový štítek…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Smazat štítek <xliff:g id="GROUP_LABEL">%1$s</xliff:g>? (Samotné kontakty smazány nebudou.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Před propojením s jiným kontaktem je třeba zadat jméno kontaktu."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 20438a8..e88159a 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Fjernet fra etiketten"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Føjet til etiket"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Ændringerne af etiketten kan ikke gemmes."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Etiketten findes allerede"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontaktpersoner med telefonnumre</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontaktpersoner med telefonnumre</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Opret ny kontaktperson"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Tilføj konto"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importér"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Opret en ny etiket"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Opret ny…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Vil du slette etiketten \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Selve kontaktpersonerne bliver ikke slettet)."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Skriv kontaktpersonens navn, før den linkes sammen til en anden."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index dc14b93..690c8c9 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Aus Label entfernt"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Zu Label hinzugefügt"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Änderungen am Label konnten nicht gespeichert werden."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Dieses Label ist bereits vorhanden"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> Kontakte mit Telefonnummern</item>
       <item quantity="one">1 Kontakt mit Telefonnummer</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Neuen Kontakt erstellen"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Konto hinzufügen"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importieren"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Neues Label erstellen"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Neu erstellen…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Soll das Label \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" gelöscht werden? (Die Kontakte selbst werden nicht gelöscht.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Gib einen Namen für den Kontakt ein, bevor du ihn mit einem anderen Kontakt verknüpfst."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 0499bed..5abfb33 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Καταργήθηκε από ετικέτα"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Προστέθηκε στην ετικέτα"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Δεν ήταν δυνατή η αποθήκευση των αλλαγών ετικέτας."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Η ετικέτα υπάρχει ήδη"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> επαφές με αριθμό τηλεφώνου</item>
       <item quantity="one">1 επαφή με αριθμό τηλεφώνου</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Δημιουργία νέας επαφής"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Προσθήκη λογαριασμού"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Εισαγωγή"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Δημιουργία νέας ετικέτας"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Δημιουργία νέας…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Διαγραφή της ετικέτας \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"; (Οι ίδιες οι επαφές δεν θα διαγραφούν)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Πληκτρολογήστε το όνομα της επαφής προτού τη συνδέσετε με κάποια άλλη."</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 012cd31..270a5ed 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Removed from label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Added to label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Couldn\'t save label changes."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"That label already exists"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts with phone numbers</item>
       <item quantity="one">1 contact with phone number</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Create a new contact"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Add account"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Import"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Create new label"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Create new…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Delete the label \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Contacts themselves will not be deleted.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Type contact name before linking with another."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 012cd31..270a5ed 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Removed from label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Added to label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Couldn\'t save label changes."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"That label already exists"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts with phone numbers</item>
       <item quantity="one">1 contact with phone number</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Create a new contact"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Add account"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Import"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Create new label"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Create new…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Delete the label \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Contacts themselves will not be deleted.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Type contact name before linking with another."</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 012cd31..270a5ed 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Removed from label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Added to label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Couldn\'t save label changes."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"That label already exists"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts with phone numbers</item>
       <item quantity="one">1 contact with phone number</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Create a new contact"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Add account"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Import"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Create new label"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Create new…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Delete the label \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Contacts themselves will not be deleted.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Type contact name before linking with another."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index b7140f5..c44aeba 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Eliminado de la etiqueta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Agregado a la etiqueta"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"No se pudieron guardar los cambios en la etiqueta."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Esa etiqueta ya existe"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactos con números de teléfono</item>
       <item quantity="one">1 contacto con número de teléfono</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear un contacto nuevo"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Agregar cuenta"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Crear una etiqueta nueva"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Crear nueva…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"¿Quieres quitar la etiqueta \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Los contactos en sí no se borrarán)."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Escribe el nombre del contacto antes de vincularlo con otro."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 76c981a..503058a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Eliminados de la etiqueta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Añadido a la etiqueta"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"No se han podido guardar los cambios de la etiqueta."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Esta etiqueta ya existe"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactos con número de teléfono</item>
       <item quantity="one">1 contacto con número de teléfono</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear un contacto"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Añadir cuenta"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Crear etiqueta nueva"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Crear…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"¿Seguro que quieres eliminar la etiqueta \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? Los contactos no se eliminarán."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Para vincular el contacto, escribe el nombre del otro contacto."</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index adafcba..b1bb98c 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Eemaldatud sildilt"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Lisati sildile"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Sildi muudatusi ei õnnestunud salvestada."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"See silt on juba olemas"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> telefoninumbriga kontakti</item>
       <item quantity="one">1 telefoninumbriga kontakt</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Loo uus kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Lisa konto"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importimine"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Uue sildi loomine"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Uue loomine …"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Kas kustutada silt „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? (Kontakte ei kustutata.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Enne teise kontaktiga linkimist sisestage kontakti nimi."</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index b61aa9d..b025e0f 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Kendu dira etiketatik"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Gehitu d(ir)a etiketan"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Ezin izan dira gorde etiketen aldaketak."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Badago etiketa"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontaktuk telefono-zenbakia dute</item>
       <item quantity="one">Kontaktu batek telefono-zenbakia du</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Sortu kontaktua"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Gehitu kontua"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Inportatu"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Sortu etiketa"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Sortu…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" taldea ezabatu nahi duzu? (Ez dira ezabatuko kontaktuak.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Beste batekin lotu aurretik, idatzi kontaktuaren izena."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index b4ea335..8313bca 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"از برچسب حذف شد"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"به برچسب اضافه شد"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"تغییرات برچسب ذخیره نشد."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"این برچسب از قبل موجود است"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> مخاطب با شماره تلفن</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> مخاطب با شماره تلفن</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ایجاد مخاطب جدید"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"افزودن حساب"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"وارد کردن"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"ایجاد برچسب جدید"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"ایجاد مورد جدید..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"برچسب «<xliff:g id="GROUP_LABEL">%1$s</xliff:g>» حذف شود؟ (مخاطبین حذف نخواهند شد.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"قبل از پیوند دادن با مخاطب دیگر، نام مخاطب را تایپ کنید."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index c66387a..51a4183 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Poistettu tunnisteesta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Lisätty tunnisteeseen"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Tunnisteen muutosten tallennus epäonnistui."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Tunniste on jo olemassa."</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> yhteystietoa, jossa puhelinnumero</item>
       <item quantity="one">1 yhteystieto, jossa puhelinnumero</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Luo uusi yhteystieto"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Lisää tili"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Tuo"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Luo uusi tunniste"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Luo uusi…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Poistetaanko tunniste <xliff:g id="GROUP_LABEL">%1$s</xliff:g>? (Yhteystietoja ei poisteta.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Kirjoita kontaktin nimi ennen kuin yhdistät sen toiseen."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 75530f6..47a4d6f 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Supprimé de l\'étiquette"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Ajouté à l\'étiquette"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Impossible d\'enregistrer l\'étiquette modifiée."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Cette étiquette existe déjà"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> contact avec un numéro de téléphone</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts avec un numéro de téléphone</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Créer un contact"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Ajouter un compte"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importer"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Créer une étiquette"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Créer…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Supprimer l\'étiquette « <xliff:g id="GROUP_LABEL">%1$s</xliff:g> »? (Les contacts ne seront pas supprimés.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Entrez le nom du contact avant de l\'associer à un autre."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 9e0ac6c..0eb4bab 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Contact retiré du libellé"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Ajout au libellé effectué"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Impossible d\'enregistrer les changements apportés au libellé."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ce libellé existe déjà"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> contact avec numéro de téléphone</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts avec numéro de téléphone</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Créer un contact"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Ajouter un compte"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importer"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Créer un libellé"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Créer…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Supprimer le libellé \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" (les contacts associés ne seront pas supprimés) ?"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Saisissez le nom du contact avant de l\'associer à un autre."</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index bc3cd22..37aafcd 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Eliminouse da etiqueta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Engadiuse á etiqueta"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Non se puideron gardar os cambios da etiqueta."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Esa etiqueta xa existe"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactos con números de teléfono</item>
       <item quantity="one">Un contacto con número de teléfono</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear un contacto novo"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Engadir conta"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Crear etiqueta nova"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Crear nova…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Queres eliminar a etiqueta \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Os contactos non se eliminarán.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Escribe o nome do contacto antes de ligalo con outro."</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 48245be..3a1ff75 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"લેબલમાંથી દૂર કર્યાં"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"લેબલમાં ઉમેર્યા"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"લેબલ ફેરફારો સાચવી શકાયાં નથી."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"તે લેબલ પહેલાંથી અસ્તિત્વમાં છે"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one">ફોન નંબર્સ સાથેના <xliff:g id="COUNT">%d</xliff:g> સંપર્કો</item>
       <item quantity="other">ફોન નંબર્સ સાથેના <xliff:g id="COUNT">%d</xliff:g> સંપર્કો</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"એક નવો સંપર્ક બનાવો"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"એકાઉન્ટ ઉમેરો"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"આયાત કરો"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"નવું લેબલ બનાવો"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"નવું બનાવો…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" લેબલ કાઢી નાખીએ? (સંપર્કો સ્વયં કાઢી નાખવામાં આવશે નહીં.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"બીજા સાથે લિંક કરતાં પહેલાં સંપર્કનું નામ લખો."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 329ca2b..a1a101b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"लेबल से निकाला गया"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"लेबल में जोड़ा गया"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"लेबल के बदलाव सहेजे नहीं जा सके."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"वह लेबल पहले से मौजूद है"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one">फ़ोन नंबर वाले <xliff:g id="COUNT">%d</xliff:g> संपर्क</item>
       <item quantity="other">फ़ोन नंबर वाले <xliff:g id="COUNT">%d</xliff:g> संपर्क</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"एक नया संपर्क बनाएं"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"खाता जोड़ें"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"आयात करें"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"नया लेबल बनाएं"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"नया बनाएं…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"लेबल \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" हटाएं? (संपर्क स्वयं नहीं हटाए जाएंगे.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"अन्‍य संपर्क से लिंक करने से पहले संपर्क नाम लिखें."</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 113f39a..d079a91 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -138,6 +138,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Uklonjeno iz oznake"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Dodano u oznaku"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Promjene oznake ne mogu se spremiti."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"To oznaka već postoji"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontakt s telefonskim brojem</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakta s telefonskim brojem</item>
@@ -231,7 +232,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Izradi novi kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Dodaj račun"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Uvezi"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Izrada nove oznake"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Izrada nove oznake…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Želite li izbrisati oznaku \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Kontakti se neće izbrisati.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Upišite ime kontakta da biste ga povezali s drugim kontaktom."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 526009b..44e4365 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Eltávolítva a címkéből"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Hozzáadva a címkéhez"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Nem sikerült menteni a címke változtatásait."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Már van ilyen címke"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> névjegy telefonszámmal</item>
       <item quantity="one">1 névjegy telefonszámmal</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Új névjegy létrehozása"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Fiók hozzáadása"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importálás"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Új címke létrehozása"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Új létrehozása…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Törli a következő címkét: <xliff:g id="GROUP_LABEL">%1$s</xliff:g>? (Ezzel nem törli a névjegyeket.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Adja meg a névjegyhez tartozó nevet, mielőtt társítana egy másik névjegyet."</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 5980d2c..198f96a 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Հեռացվել է պիտակից"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Ավելացվեց պիտակին"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Չհաջողվեց պահել պիտակի փոփոխությունները:"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Այս անունով խումբ արդեն գոյություն ունի"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> հեռախոսահամարով կոնտակտ</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> հեռախոսահամարով կոնտակտ</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Ստեղծել նոր կոնտակտ"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Ավելացնել հաշիվ"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Ներմուծել"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Ստեղծել նոր պիտակ"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Ստեղծել նոր…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Ջնջե՞լ «<xliff:g id="GROUP_LABEL">%1$s</xliff:g>» պիտակը (կոնտակտները չեն ջնջվի):"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Մուտքագրեք կոնտակտի անունը՝ մեկ ուրիշի հետ միավերլուց առաջ:"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 9df66c9..e8ce4e4 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Dihapus dari label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Ditambahkan ke label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Tidak dapat menyimpan perubahan label."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Label tersebut sudah ada"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontak dengan nomor telepon</item>
       <item quantity="one">1 kontak dengan nomor telepon</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Buat kontak baru"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Tambahkan akun"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Impor"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Buat label baru"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Buat baru…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Hapus label \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Kontak tidak akan dihapus.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Ketik nama kontak sebelum menautkan dengan lainnya."</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 01fd6d2..e033493 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Fjarlægðir úr flokki"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Bætt við flokk"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Ekki tókst að vista breytingar á flokki."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Þessi flokkur er þegar til"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> tengiliður með símanúmer</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tengiliðir með símanúmer</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Búa til nýjan tengilið"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Bæta reikningi við"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Flytja inn"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Búa til nýjan flokk"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Búa til nýjan…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Eyða flokknum „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“? (Tengiliðunum sjálfum verður ekki eytt.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Sláðu inn nafn tengiliðar áður en þú tengir hann saman við annan."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 91075b5..3f0fd8d 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Rimossa da etichetta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Aggiunti all\'etichetta"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Impossibile salvare le modifiche all\'etichetta."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"L\'etichetta esiste già"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contatti con numero di telefono</item>
       <item quantity="one">1 contatto con numero di telefono</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crea nuovo contatto"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Aggiungi account"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importa"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Crea nuova etichetta"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Crea nuova…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Eliminare l\'etichetta \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? I contatti non verranno eliminati."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Inserisci il nome del contatto prima di collegarlo a un altro contatto."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index f5864ab..3fa461f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"הוסר מהתווית"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"נוסף לתווית"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"לא ניתן היה לשמור את השינויים בתווית."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"התווית הזו כבר קיימת"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="two"><xliff:g id="COUNT">%d</xliff:g> אנשי קשר עם מספרי טלפון</item>
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> אנשי קשר עם מספרי טלפון</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"צור איש קשר חדש"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"הוסף חשבון"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"ייבא"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"יצירת תווית חדשה"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"צור חדשה…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"למחוק את התווית \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (אנשי הקשר המסומנים בתווית לא יימחקו)."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"הקלד שם של איש קשר לפני קישורו לאחר."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 6e43b9d..2d66ded 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ラベルから削除されました"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ラベルに追加されました"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ラベルの変更を保存できませんでした。"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"このラベルは既に存在しています"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">電話番号のある連絡先<xliff:g id="COUNT">%d</xliff:g>件</item>
       <item quantity="one">電話番号のある連絡先1件</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"新しい連絡先を作成"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"アカウントを追加"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"インポート"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"新しいラベルの作成"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"新規作成…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"ラベル「<xliff:g id="GROUP_LABEL">%1$s</xliff:g>」を削除しますか？（連絡先自体は削除されません。）"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"別の連絡先とリンクするにはまず連絡先の名前を入力してください。"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index a8205ea..f65f13d 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ლეიბლიდან წაიშალა"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"დაემატა ლეიბლს"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ლეიბლის ცვლილებების შენახვა ვერ მოხერხდა."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ეს ლეიბლი უკვე არსებობს"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> კონტაქტი ტელეფონის ნომრით</item>
       <item quantity="one">1 კონტაქტი ტელეფონის ნომრით</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ახალი კონტაქტის შექმნა"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"ანგარიშის დამატება"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"იმპორტი"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"ახალი ლეიბლის შექმნა"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"ახლის შექმნა…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"გსურთ ლეიბლის „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“ წაშლა? (თვითონ კონტაქტები არ წაიშლება)."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"სხვა კონტაქტთან მიბმამდე აკრიფეთ კონტაქტის სახელი."</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 2079469..d3f82a1 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Белгіден жойылған"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Белгіге қосылды"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Белгі өзгертулері сақталмады."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Бұл белгіше бұрыннан бар"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">Телефон нөмірі бар <xliff:g id="COUNT">%d</xliff:g> контакт</item>
       <item quantity="one">Телефон нөмірі бар 1 контакт</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Жаңа контакт құру"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Есептік жазба қосу"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Импорттау"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Жаңа белгі жасау"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Жаңасын жасау…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" тобы жойылсын ба? Контактілер өздігінен жойылмайды."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Басқа контактімен байланыстыру алдында контактінің атын теріңіз."</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 1897ec9..e08833b 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"បាន​យក​ចេញ​ពី​ស្លាក"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"បាន​បន្ថែម​ទៅ​ស្លាក"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"មិនអាចរក្សាទុកការផ្លាស់ប្តូរស្លាក​បាន​ទេ។"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ស្លាក​នោះ​មាន​រួច​ហើយ"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">ទំនាក់ទំនង <xliff:g id="COUNT">%d</xliff:g> ដែលមានលេខទូរស័ព្ទ</item>
       <item quantity="one">ទំនាក់ទំនង 1 ដែលមានលេខទូរស័ព្ទ</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"បង្កើត​ទំនាក់ទំនង​ថ្មី"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"បញ្ចូលគណនី"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"នាំចូល"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"បង្កើតស្លាកថ្មី"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"បង្កើត​ថ្មី..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"លុប​​ស្លាក \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (ទំនាក់ទំនង​របស់​​ខ្លួន​ឯង​​នឹង​មិន​ត្រូវ​បាន​លុប​ទេ)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"សូមបញ្ចូលឈ្មោះទំនាក់ទំនងមុនពេលតភ្ជាប់ជាមួយទំនាក់ទំនងផ្សេងទៀត។"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index a6cb3a4..937ad16 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ಲೇಬಲ್‌ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ಲೇಬಲ್‌ಗೆ ಸೇರಿಸಲಾಗಿದೆ"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ಲೇಬಲ್ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಲಾಗಲಿಲ್ಲ."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ಆ ಲೇಬಲ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one">ಫೋನ್‌ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ <xliff:g id="COUNT">%d</xliff:g> ಸಂಪರ್ಕಗಳು</item>
       <item quantity="other">ಫೋನ್‌ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ <xliff:g id="COUNT">%d</xliff:g> ಸಂಪರ್ಕಗಳು</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ಹೊಸ ಸಂಪರ್ಕ ರಚಿಸಿ"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"ಖಾತೆ ಸೇರಿಸಿ"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"ಆಮದು ಮಾಡಿ"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"ಹೊಸ ಲೇಬಲ್ ರಚಿಸಿ"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"ಹೊಸದನ್ನು ರಚಿಸಿ…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" ಲೇಬಲ್ ಅಳಿಸುವುದೇ? (ಸಂಪರ್ಕಗಳನ್ನೇ ಅಳಿಸುವುದಿಲ್ಲ.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"ಮತ್ತೊಬ್ಬರೊಂದಿಗೆ ಲಿಂಕ್ ಮಾಡುವ ಮೊದಲು ಸಂಪರ್ಕದ ಹೆಸರನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 7d87637..f8b78fc 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"라벨에서 삭제됨"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"라벨에 추가됨"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"라벨 변경사항을 저장할 수 없습니다."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"이미 존재하는 라벨입니다."</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">전화번호가 포함된 연락처 <xliff:g id="COUNT">%d</xliff:g>개</item>
       <item quantity="one">전화번호가 포함된 연락처 1개</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"새 연락처 만들기"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"계정 추가"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"가져오기"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"새 라벨 만들기"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"새로 만들기…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\'<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\' 라벨을 삭제하시겠습니까?(연락처는 삭제되지 않음)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"다른 연락처와 연결하려면 연락처 이름을 입력하세요."</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 725a533..580ed18 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Энбелгиден алынып салынды"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Энге кошулду"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Энбелгинин өзгөрүүлөрүн сактай алган жок."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ал энбелги мурунтан эле бар"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">телефон номерлери менен <xliff:g id="COUNT">%d</xliff:g> байланыш</item>
       <item quantity="one">телефон номери менен 1 байланыш</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Жаңы байланыш түзүү"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Каттоо эсебин кошуу"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Импорттоо"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Жаңы энбелги түзүү"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Жаңысын түзүү..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" энбелгиси өчүрүлсүнбү? (Байланыштардын өзү өчүрүлбөйт)."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Башка байланышка шилтемелөөдөн мурун, байланыштын атын териңиз."</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index e7c5dd7..75266ec 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ລຶບອອກຈາກປ້າຍກຳກັບແລ້ວ"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ເພີ່ມໃສ່ປ້າຍກຳກັບແລ້ວ"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ບໍ່ສາມາດບັນທຶກການປ່ຽນແປງປ້າຍກຳກັບໄດ້."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ມີປ້າຍກຳກັບນັ້ນຢູ່ກ່ອນແລ້ວ"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ລາຍຊື່ພ້ອມເບີໂທລະສັບ</item>
       <item quantity="one">ລາຍຊື່ພ້ອມເບີໂທລະສັບ</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ສ້າງລາຍຊື່ຜູ້ຕິດຕໍ່ໃໝ່"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"ເພີ່ມບັນຊີ"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"ນຳເຂົ້າ"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"ສ້າງປ້າຍກຳກັບໃໝ່"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"ສ້າງໃໝ່…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"ລຶບປ້າຍກຳກັບ \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" ອອກບໍ? (ລາຍຊື່ຜູ້ຕິດຕໍ່ຈະບໍ່ຖືກລຶບອອກ.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"ພິມຊື່ຂອງລາຍຊື່ຜູ້ຕິດຕໍ່ກ່ອນການລິ້ງກັບລາຍຊື່ອື່ນ."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 6088bc9..e4a4f41 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Pašalinta iš etiketės"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Pridėta prie etiketės"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Nepavyko išsaugoti etiketės pakeitimų."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ši etiketė jau yra"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontaktas su telefonų numeriais</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontaktai su telefonų numeriais</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Sukurti naują kontaktą"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Pridėti paskyrą"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importuoti"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Naujos etiketės kūrimas"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Sukurti naują..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Ištrinti etiketę „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“? (Kontaktai nebus ištrinti.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Įveskite kontakto vardą prieš susiedami jį su kitu kontaktu."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 326a4e8..c66d33d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -138,6 +138,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Noņemtas no iezīmes"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Pievienota iezīmei"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Nevarēja saglabāt iezīmes izmaiņas."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Attiecīgā iezīme jau pastāv."</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="zero"><xliff:g id="COUNT">%d</xliff:g> kontaktpersonas ar tālruņa numuriem</item>
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> kontaktpersona ar tālruņa numuriem</item>
@@ -231,7 +232,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Izveidot jaunu kontaktpersonu"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Pievienot kontu"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importēt"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Jaunas iezīmes izveide"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Izveidot jaunu…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Vai dzēst iezīmi “<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? (Kontaktpersonas netiks dzēstas.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Ievadiet kontaktpersonas vārdu, pirms saistāt to ar citu kontaktpersonu."</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 880317a..534def1 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Отстрането од етикетата"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Додадено на етикетата"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Промените на етикетата не можеше да се зачуваат."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Етикетата веќе постои"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> контакт со телефонски број</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> контакти со телефонски броеви</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Создај нов контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Додај сметка"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Увези"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Создајте нова етикета"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Создајте нова…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Да се избрише етикетата „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“? (Контактите нема да се избришат.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Впишете го името на контактот пред да го поврзете со друг."</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 77af785..0dcf416 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ലേബലിൽ നിന്ന് നീക്കംചെയ്‌തു"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ലേബലിൽ ചേർത്തു"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ലേബൽ മാറ്റങ്ങൾ സംരക്ഷിക്കാനായില്ല."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ആ ലേബൽ നിലവിലുണ്ട്"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">ഫോൺ നമ്പറുള്ള <xliff:g id="COUNT">%d</xliff:g> കോൺടാക്‌റ്റുകൾ</item>
       <item quantity="one">ഫോൺ നമ്പറുള്ള ഒരു കോൺടാക്റ്റ്</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"പുതിയകോൺടാക്റ്റ് സൃഷ്‌ടിക്കൂ"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"അക്കൗണ്ട് ചേർക്കുക"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"ഇമ്പോർട്ടുചെയ്യുക"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"പുതിയ ലേബല്‍ സൃഷ്ടിക്കൂ"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"പുതിയത് സൃഷ്‌ടിക്കുക…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" ലേബൽ ഇല്ലാതാക്കണോ? (കോൺടാക്റ്റുകൾ സ്വയം ഇല്ലാതാക്കപ്പെടില്ല.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"മറ്റൊരു കോൺടാക്റ്റുമായി ലിങ്കുചെയ്യുന്നതിന് മുമ്പ് കോൺടാക്റ്റിന്റെ പേര് ടൈപ്പുചെയ്യുക."</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 97a5ebf..6af35e8 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Шошгоос хассан"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Шошгонд нэмсэн"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Шошгын өөрчлөлтийг хадгалж чадсангүй."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Энэ шошго байна"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">Утасны дугаар бүхий <xliff:g id="COUNT">%d</xliff:g> хаяг байна</item>
       <item quantity="one">Утасны дугаар бүхий 1 хаяг байна</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Шинэ харилцагч үүсгэх"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Бүртгэл нэмэх"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Импортлох"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Шинэ шошго үүсгэх"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Шинийг үүсгэх..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" шошгыг устгах уу? (Харилцагчид нь устахгүй.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Өөр харилцагчийн жагсаалттай холбохын тулд харилцагчийн нэрийг бичнэ үү."</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 0f62ed4..4490f40 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"लेबल मधून काढले"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"लेबलमध्ये जोडले"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"लेबल बदल जतन करणे शक्य झाले नाही."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ते लेबल आधीपासून अस्तित्वात आहे"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one">फोन नंबरसह <xliff:g id="COUNT">%d</xliff:g> संपर्क</item>
       <item quantity="other">फोन नंबरसह <xliff:g id="COUNT">%d</xliff:g> संपर्क</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"नवीन संपर्क तयार करा"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"खाते जोडा"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"आयात करा"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"नवीन लेबल तयार करा"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"नवीन तयार करा…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" लेबल हटवायचे? (संपर्क आपणहून हटविले जाणार नाहीत.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"दुसर्‍यासह दुवा जोडण्‍याआधी संपर्क नाव टाइप करा."</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index c9a7f7d..6816cd9 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Dialih keluar daripada label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Ditambahkan pada label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Tidak dapat menyimpan perubahan label."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Label itu sudah wujud"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kenalan dengan nombor telefon</item>
       <item quantity="one">1 kenalan dengan nombor telefon</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Buat kenalan baharu"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Tambahkan akaun"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Import"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Buat label baharu"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Buat baharu…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Padamkan label \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Kenalan itu sendiri tidak akan dipadamkan.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Taipkan nama kenalan sebelum memautkan dengan yang lain."</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index b50d7f0..5f5dd06 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"အညွှန်းမှ ဖယ်ရှားပြီးပါပြီ"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"အညွှန်းသို့ ထည့်ထားပါသည်"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"အညွှန်းအပြောင်းအလဲများကို သိမ်း၍မရပါ။"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ထိုအညွှန်းမှာ ရှိပြီးသားဖြစ်ပါသည်"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">ဖုန်းနံပါတ်များပါသောအဆက်အသွယ်<xliff:g id="COUNT">%d</xliff:g>ခု</item>
       <item quantity="one">ဖုန်းနံပါတ်ပါသောအဆက်အသွယ်1ခု</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"အဆက်အသွယ်သစ်တစ်ခု ပြုလုပ်ပါ"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"အကောင့်ထည့်ရန်"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"တင်သွင်းရန်"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"အညွှန်းသစ်ဖန်တီးပါ"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"အသစ်ဖန်တီးပါ…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" အညွှန်းကို ဖျက်ပစ်မလား။ (အဆက်အသွယ်များအနေဖြင့် ပျက်သွားမည်မဟုတ်ပါ။)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"အခြားတစ်ခုနှင့် ကွင်းဆက်မချိတ်မီ အဆက်အသွယ်အမည်ကိုရိုက်ပါ။"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0b5d6f6..6123a6a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Fjernet fra etiketten"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Lagt til i etiketten"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Kunne ikke lagre etikettendringene."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Denne etiketten finnes allerede"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakter med telefonnumre</item>
       <item quantity="one">1 kontakt med telefonnummer</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Opprett en ny kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Legg til konto"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importér"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Opprett en ny etikett"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Opprett ny…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Vil du slette etiketten «<xliff:g id="GROUP_LABEL">%1$s</xliff:g>»? (Selve kontaktene blir ikke slettet.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Skriv inn navnet på kontakten før du knytter vedkommende sammen med en annen."</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 2222439..f913922 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"लेबलबाट हटाइयो"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"लेबलमा थपियो"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"लेबलमा गरिएका परिवर्तनहरूलाई सुरक्षित गर्न सकिएन।"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"उक्त लेबल पहिले नै अवस्थित छ"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>सम्पर्कहरू फोन नम्बर सहित</item>
       <item quantity="one">फोन नम्बर सहित 1 सम्पर्क</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"एउटा नयाँ सम्पर्क बनाउनुहोस्"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"खाता थप्नुहोस्"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"आयात गर्नुहोस्"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"नयाँ लेबल सिर्जना गर्नुहोस्"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"नयाँ लेबल सिर्जना गर्नुहोस्..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" लेबललाई हटाउने हो? (सम्पर्कहरू मेटिने छैनन्।)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"अर्कोसँग लिंक हुनुअघि सम्पर्क नाम टाइप गर्नुहोस्।"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 1a35f88..af601d5 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Verwijderd uit label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Toegevoegd aan label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Kan labelwijzigingen niet opslaan."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Dat label bestaat al"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacten met telefoonnummers</item>
       <item quantity="one">1 contact met telefoonnummer</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Een nieuw contact maken"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Account toevoegen"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importeren"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Nieuw label maken"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Nieuwe maken…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Het label <xliff:g id="GROUP_LABEL">%1$s</xliff:g> verwijderen? (Contacten zelf worden niet verwijderd.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Geef een contactnaam op voordat je dit contact linkt met een ander contact."</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index ca5fd10..67fd00a 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ਲੇਬਲ ਤੋਂ ਹਟਾਏ ਗਏ"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ਲੇਬਲ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ਲੇਬਲ ਬਦਲਾਆਂ ਨੂੰ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ਇਹ ਲੇਬਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ਫੋਨ ਨੰਬਰਾਂ ਵਾਲੇ ਸੰਪਰਕ</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਫੋਨ ਨੰਬਰਾਂ ਵਾਲੇ ਸੰਪਰਕ</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ਇੱਕ ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"ਆਯਾਤ ਕਰੋ"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"ਨਵਾਂ ਲੇਬਲ ਬਣਾਓ"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"ਨਵਾਂ ਬਣਾਓ…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"ਕੀ ਲੇਬਲ \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" ਮਿਟਾਉਣਾ ਹੈ? (\'ਸੰਪਰਕ ਆਪਣੇ ਆਪ ਨਹੀਂ ਮਿਟਾਏ ਜਾਣਗੇ।)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"ਹੋਰ ਨਾਲ ਲਿੰਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਸੰਪਰਕ ਨਾਮ ਟਾਈਪ ਕਰੋ।"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 92949a8..17fd948 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Usunięty z etykiety"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Dodano do etykiety"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Nie udało się zapisać zmian w etykiecie."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ta etykieta już istnieje"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakty z numerami telefonu</item>
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> kontaktów z numerami telefonu</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Utwórz nowy kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Dodaj konto"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importuj"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Utwórz nową etykietę"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Utwórz nową…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Usunąć etykietę „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? Kontakty nie zostaną usunięte."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Zanim połączysz ten kontakt z innym, wpisz imię i nazwisko."</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 641745e..ac9b778 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Removido do marcador"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Adicionado ao marcador"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Não foi possível salvar as alterações do marcador."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Este marcador já existe"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> contatos com números de telefone</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contatos com números de telefone</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Criar um novo contato"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Adicionar conta"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Criar novo marcador"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Criar novo..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Excluir o marcador \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? Os contatos não serão excluídos."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Digite o nome de contato antes de vinculá-lo a outro."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7b5b495..b288675 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Removido da etiqueta"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Adicionado(s) à etiqueta"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Não foi possível guardar as alterações da etiqueta."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Essa etiqueta já existe"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contactos com números de telefone</item>
       <item quantity="one">1 contacto com número de telefone</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Criar novo contacto"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Adicionar conta"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Criar nova etiqueta"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Criar nova…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Pretende eliminar a etiqueta \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Os contactos não serão eliminados.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Introduza o nome do contacto antes de ligar a outro contacto."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 641745e..ac9b778 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Removido do marcador"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Adicionado ao marcador"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Não foi possível salvar as alterações do marcador."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Este marcador já existe"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> contatos com números de telefone</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contatos com números de telefone</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Criar um novo contato"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Adicionar conta"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Criar novo marcador"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Criar novo..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Excluir o marcador \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? Os contatos não serão excluídos."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Digite o nome de contato antes de vinculá-lo a outro."</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 7b17040..bde35bf 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -138,6 +138,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Eliminate din etichetă"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Adăugat(e) în etichetă"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Modificările etichetei nu s-au salvat."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Eticheta există deja"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> persoane de contact cu numere de telefon</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> de persoane de contact cu numere de telefon</item>
@@ -231,7 +232,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Creați o intrare nouă în Agendă"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Adăugați un cont"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importați"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Creați o etichetă nouă"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Creați o etichetă nouă…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Ștergeți eticheta „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? (Persoanele din agendă nu vor fi șterse.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Introduceți numele persoanei de contact înainte de a o asocia cu altă persoană."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 1d54270..0e5d03b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Контакты удалены из группы"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Добавлено"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Не удалось сохранить изменения"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Такая группа уже существует"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> контакт с номером телефона</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> контакта с номером телефона</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Создать контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Добавить аккаунт"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Импортировать"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Создание ярлыка"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Создать…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Удалить ярлык \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? Сами контакты не будут удалены."</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Укажите имя"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 0bdfcfa..dcd946d 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"ලේබලයෙන් ඉවත් කෙරිණි"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"ලේබලයට එක් කෙරිණි"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ලේබල වෙනස් කිරීම් සුරැකීමට නොහැකි විය."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"එම ලේබලය දැනටමත් පවතී"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one">දුරකථන අංක සමඟ සම්බන්ධතාවන් <xliff:g id="COUNT">%d</xliff:g></item>
       <item quantity="other">දුරකථන අංක සමඟ සම්බන්ධතාවන් <xliff:g id="COUNT">%d</xliff:g></item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"ගිණුම එක් කරන්න"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"ආයාත කරන්න"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"නව ලේබලයක් තනන්න"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"අලුත් එකක් තනන්න..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" ලේබලය මකන්නද? (සම්බන්ධතා ඒවාම නොමැකෙනු ඇත.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"වෙනත් එකක් සමඟ එක් කිරීමට පෙර සම්බන්ධතා නම ටයිප් කරන්න."</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 6e0ff34..fc21181 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Odstránené zo štítka"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Pridané do štítka"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Zmeny štítka nebolo možné uložiť"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Daný štítok už existuje"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> kontakty s telefónnym číslom</item>
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> kontaktu s telefónnym číslom</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Vytvoriť nový kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Pridať účet"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importovať"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Vytvorenie nového štítka"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Vytvoriť nový…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Odstrániť štítok <xliff:g id="GROUP_LABEL">%1$s</xliff:g>? (Samotné kontakty nebudú odstránené.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Pred prepojením s iným kontaktom zadajte meno kontaktu."</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index fd31f28..939f149 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Odstranjeno iz oznake"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Dodano v oznako"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Sprememb oznake ni bilo mogoče shraniti."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ta oznake že obstaja"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> stik s telefonsko številko</item>
       <item quantity="two"><xliff:g id="COUNT">%d</xliff:g> stika s telefonsko številko</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Ustvarjanje novega stika"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Dodaj račun"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Uvozi"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Ustvarjanje nove oznake"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Ustvari novo ..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Želite izbrisati oznako »<xliff:g id="GROUP_LABEL">%1$s</xliff:g>«? (Stiki ne bodo izbrisani.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Vnesite ime stika pred povezovanjem z drugim."</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 9bab93b..7813147 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Hequr nga etiketa"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"U shtua në emërtim"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Nuk mund të ruhen ndryshimet e etiketës."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ky emërtim ekziston tashmë"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakte me numra telefoni</item>
       <item quantity="one">1 kontakt me numër telefoni</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Krijo një kontakt të ri"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Shto llogari"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importo"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Krijo etiketë të re"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Krijo të re..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Të fshihet grupi \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Kontaktet nuk do të fshihen.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Shkruaj emrin e kontaktit para se ta lidhësh me një tjetër."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5354b72..57e1940 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -138,6 +138,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Уклонили смо из ознаке"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Додато је у ознаку"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Чување промена ознаке није успело."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Та ознака већ постоји"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> контакт са бројем телефона</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> контакта са бројевима телефона</item>
@@ -231,7 +232,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Направи нови контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Додајте налог"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Увeзи"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Направите нову ознаку"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Направи нову…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Желите да избришете ознаку „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“? (Контакти неће бити избрисани.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Унесите име контакта пре него што га обједините са другим контактом."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 2f9ca2a..f7c72e1 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Borttagen från etikett"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Tillagt till etikett"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Det gick inte att spara etikettändringarna."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Den etiketten finns redan"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontakter med telefonnummer</item>
       <item quantity="one">1 kontakt med telefonnummer</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Skapa en ny kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Lägg till ett konto"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Importera"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Skapa ny etikett"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Skapa ny ..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Ta bort etiketten <xliff:g id="GROUP_LABEL">%1$s</xliff:g>? (Själva kontakterna tas inte bort.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Skriv kontaktens namn innan du länkar den till en annan."</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index bbfcf70..9d5b807 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Imeondolewa kwenye lebo"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Imeongezwa kwenye lebo"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Imeshindwa kuhifadhi mabadiliko ya lebo."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Lebo hiyo tayari ipo"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> unaowasiliana nao wenye nambari za simu</item>
       <item quantity="one">1 unayewasiliana naye mwenye nambari ya simu</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Fungua akaunti mpya"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Ongeza akaunti"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Leta"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Unda lebo mpya"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Unda mpya…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Ungependa kufuta lebo iitwayo \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Anwani zenyewe hazitafutwa.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Andika jina ya anwani kabla ya kuiunganisha na nyingine."</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 583b37a..30251b6 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"லேபிளிலிருந்து அகற்றப்பட்டன"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"லேபிளில் சேர்க்கப்பட்டது"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"லேபிள் மாற்றங்களைச் சேமிக்க முடியவில்லை."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"லேபிள் ஏற்கனவே உள்ளது"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">மொபைல் எண்களுடன் <xliff:g id="COUNT">%d</xliff:g> தொடர்புகள் உள்ளன</item>
       <item quantity="one">மொபைல் எண்ணுடன் 1 தொடர்பு உள்ளது</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"புதிய தொடர்பை உருவாக்கு"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"கணக்கைச் சேர்"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"இறக்கு"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"புதிய லேபிளை உருவாக்கு"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"புதியதை உருவாக்கு…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" லேபிளை நீக்கவா? (அதன் தொடர்புகள் நீக்கப்படாது.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"வேறொன்றுடன் இணைப்பதற்கு முன் தொடர்பின் பெயரை உள்ளிடவும்."</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index b8741da..669ad2e 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"లేబుల్ నుండి తీసివేయబడ్డాయి"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"లేబుల్‌కు జోడించబడింది/జోడించబడ్డాయి"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"లేబుల్ మార్పులను సేవ్ చేయలేకపోయింది."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ఈ లేబుల్ ఇప్పటికే ఉంది"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">ఫోన్ నంబర్‌లు ఉన్న <xliff:g id="COUNT">%d</xliff:g> పరిచయాలు</item>
       <item quantity="one">ఫోన్ నంబర్ ఉన్న 1 పరిచయం</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"కొత్త పరిచయాన్ని సృష్టించు"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"ఖాతాను జోడించు"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"దిగుమతి చేయి"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"కొత్త లేబుల్‌ను సృష్టించు"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"కొత్తది సృష్టించు…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" లేబుల్‌ని తొలగించాలా? (పరిచయాలు వాటంతట అవే తొలగించబడవు.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"మరొకదానితో లింక్ చేయడానికి ముందు పరిచయం పేరు టైప్ చేయండి."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 3db43e2..60cb8c6 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"นำออกจากป้ายกำกับแล้ว"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"เพิ่มรายชื่อติดต่อไปยังป้ายกำกับแล้ว"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"ไม่สามารถบันทึกการเปลี่ยนแปลงป้ายกำกับได้"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"ป้ายกำกับนี้มีอยู่แล้ว"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> รายชื่อติดต่อมีหมายเลขโทรศัพท์</item>
       <item quantity="one">1 รายชื่อติดต่อมีหมายเลขโทรศัพท์</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"สร้างรายชื่อติดต่อใหม่"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"เพิ่มบัญชี"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"นำเข้า"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"สร้างป้ายกำกับใหม่"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"สร้างใหม่…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"ลบป้ายกำกับ \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" ไหม (รายชื่อติดต่อจะไม่ถูกลบ)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"พิมพ์ชื่อของผู้ติดต่อก่อนลิงก์กับรายชื่อติดต่ออื่น"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 4ad7eb3..7da0af5 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Inalis sa label"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Idinagdag sa label"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Hindi ma-save ang mga pagbabago sa label."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Mayroon nang ganyang label"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> contact na may mga numero ng telepono</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> na contact na may mga numero ng telepono</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Lumikha ng bagong contact"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Magdagdag ng account"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"I-import"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Gumawa ng bagong label"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Gumawa ng bagong…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"I-delete ang label na \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Ang mga contact mismo ay hindi ide-delete.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"I-type ang pangalan ng contact bago i-link sa iba."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index b414f70..0d8db46 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Etiketten kaldırıldı"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Etikete eklendi"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Etiket değişiklikleri kaydedilemedi."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Bu etiket zaten var"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">Telefon numarası olan <xliff:g id="COUNT">%d</xliff:g> kişi</item>
       <item quantity="one">Telefon numarası olan 1 kişi</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Yeni kişi oluştur"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Hesap ekle"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"İçe aktar"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Yeni etiket oluşturun"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Yeni oluştur…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" etiketi silinsin mi? (Kişiler silinmez.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Başka bir kişiye bağlamadan önce kişi adını yazın."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 856e335..2a844eb 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -141,6 +141,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Вилучено з мітки"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Додано мітку"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Не вдалося зберегти зміни до мітки."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Ця назва вже існує"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> контакт із номерами телефону</item>
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> контакти з номерами телефону</item>
@@ -238,7 +239,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Створити новий контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Додати обліковий запис"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Імпортувати"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Створити мітку"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Створити…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Видалити мітку \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Самі контакти видалено не буде.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Введіть ім’я контакта, перш ніж об’єднати його."</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index f4411a3..ac8a7b8 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"لیبل سے ہٹا دیے گئے"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"لیبل میں شامل ہو گیا"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"لیبل کی تبدیلیاں محفوظ نہیں ہو سکیں۔"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"یہ لیبل پہلے سے موجود ہے"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">فون نمبرز کے ساتھ <xliff:g id="COUNT">%d</xliff:g> رابطے</item>
       <item quantity="one">فون نمبر کے ساتھ 1 رابطہ</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ایک نیا رابطہ بنائیں"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"اکاؤنٹ شامل کریں"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"درآمد کریں"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"نیا لیبل بنائیں"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"‏نیا بنائیں‎…‎"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" لیبل حذف کریں؟ (رابطے حذف نہیں ہوں گے۔)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"کسی دوسرے کے ساتھ لنک کرنے سے پہلے رابطہ کا نام ٹائپ کریں۔"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index c23ad88..20754f6 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Yorliqdan olib tashlandi"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Yorliqqa qo‘shildi"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Yorliqdagi o‘zgarishlarni saqlab bo‘lmadi."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Bunday yorliq allaqachon mavjud"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other">Telefon raqami bor <xliff:g id="COUNT">%d</xliff:g> ta kontakt</item>
       <item quantity="one">Telefon raqami bor 1 ta kontakt</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Yangi kontakt yaratish"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Hisob qo‘shish"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Import qilish"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Yangi yorliq yaratish"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Yangi yorliq yaratish…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"“<xliff:g id="GROUP_LABEL">%1$s</xliff:g>” yorlig‘i o‘chirilsinmi? (Kontaktlar o‘chirilmaydi.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Birlashtirmoqchi bo‘lgan kontaktning ismini kiriting."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 0ebe839..d3cbd16 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Đã bị xóa khỏi nhãn"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Đã thêm vào nhãn"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Không thể lưu thay đổi đối với nhãn."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Nhãn đó đã tồn tại"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> liên hệ có số điện thoại</item>
       <item quantity="one">1 liên hệ có số điện thoại</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Tạo liên hệ mới"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Thêm tài khoản"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Nhập"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Tạo nhãn mới"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Tạo mới…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Bạn muốn xóa nhãn \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Danh bạ sẽ không bị xóa.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Nhập tên liên hệ trước khi liên kết với liên hệ khác."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 9b7e396..8826c6e 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"已从标签中移除"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"已添加到标签"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"无法保存对标签的修改。"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"该标签已存在"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 个有电话号码的联系人</item>
       <item quantity="one">1 个有电话号码的联系人</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"创建新联系人"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"添加帐号"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"导入"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"创建新标签"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"新建…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"要删除“<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”标签吗？（系统不会删除联系人。）"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"请先输入联系人姓名，然后再将其与其他联系人关联。"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index b95ad5d..6aef550 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"已從標籤中移除"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"已新增至標籤"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"無法儲存標籤變更。"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"該標籤已存在"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 位有電話號碼的聯絡人</item>
       <item quantity="one">1 位有電話號碼的聯絡人</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"建立新聯絡人"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"新增帳戶"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"匯入"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"建立新標籤"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"建立新…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"要刪除「<xliff:g id="GROUP_LABEL">%1$s</xliff:g>」標籤嗎？(這並不會刪除聯絡人本身。)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"請先輸入聯絡人姓名，然後才連結。"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index fa17add..47bba64 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"已從標籤中移除"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"已新增到標籤中"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"無法儲存標籤的變更內容。"</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"該標籤已存在"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 位有電話號碼的聯絡人</item>
       <item quantity="one">1 位有電話號碼的聯絡人</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"建立新聯絡人"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"新增帳戶"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"匯入"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"建立新標籤"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"新建..."</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"要刪除「<xliff:g id="GROUP_LABEL">%1$s</xliff:g>」標籤嗎？(聯絡人本身不會遭到刪除。)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"請先輸入聯絡人姓名，才能與其他聯絡人連結。"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 471b77a..50a7008 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -135,6 +135,7 @@
     <string name="groupMembersRemovedToast" msgid="3510563559799376603">"Kususiwe kulebula"</string>
     <string name="groupMembersAddedToast" msgid="4824834898718972768">"Kungeziwe kulebuli"</string>
     <string name="groupSavedErrorToast" msgid="8121032018490980184">"Ayikwazanga ukulondoloza ushintsho lwelebula."</string>
+    <string name="groupExistsErrorMessage" msgid="5196811283836946189">"Leyo lebuli isivele ikhona"</string>
     <plurals name="listTotalPhoneContacts" formatted="false" msgid="3692277679143308755">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> oxhumana nabo abanezinombolo zefoni</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> oxhumana nabo abanezinombolo zefoni</item>
@@ -224,7 +225,6 @@
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Dala othintana naye omusha"</string>
     <string name="contacts_unavailable_add_account" msgid="4347232421410561500">"Engeza i-akhawunti"</string>
     <string name="contacts_unavailable_import_contacts" msgid="3182801738595937144">"Ngenisa"</string>
-    <string name="create_group_dialog_title" msgid="5363404287877384473">"Dala ilebula entsha"</string>
     <string name="create_group_item_label" msgid="3263064599743742865">"Dala amasha…"</string>
     <string name="delete_group_dialog_message" msgid="335713829185261371">"Susa ilebula engu-\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Oxhumana nabo ngokwabo ngeke baze basuswe.)"</string>
     <string name="toast_join_with_empty_contact" msgid="1215465657839085613">"Bhala igama lomuntu oxhumana naye ngaphambili kokujoyina nomunye."</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index f5bf4cc..3efa80f 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -81,6 +81,12 @@
     <!-- Color of background of all empty states. -->
     <color name="empty_state_background">#efefef</color>
 
+    <!-- Colors of swipeRefreshLayout's spinning circle. -->
+    <color name="swipe_refresh_color1">#0f9d58</color>
+    <color name="swipe_refresh_color2">#dd4b37</color>
+    <color name="swipe_refresh_color3">#4285f4</color>
+    <color name="swipe_refresh_color4">#f4b400</color>
+
     <!-- Color of hamburger icon in promo -->
     <color name="hamburger_feature_highlight_inner_color">#00ffffff</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index a73e449..36ada5a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -295,6 +295,9 @@
     <!-- Minimum height for group name EditText -->
     <dimen name="group_name_edit_text_min_height">48dp</dimen>
 
+    <!-- Distance to pull down before causing a refresh. -->
+    <dimen name="pull_to_refresh_distance">40dp</dimen>
+
     <!-- Elevation of contact list header -->
     <dimen name="contact_list_header_elevation">2dp</dimen>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 909b684..0ccc19b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -369,6 +369,9 @@
     <!-- Toast displayed when saving a label failed [CHAR LIMIT=70] -->
     <string name="groupSavedErrorToast">Couldn\'t save label changes.</string>
 
+    <!-- Message displayed when creating a group with the same name as an existing group -->
+    <string name="groupExistsErrorMessage">That label already exists</string>
+
     <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" is selected -->
     <plurals name="listTotalPhoneContacts">
         <item quantity="one">1 contact with phone number</item>
@@ -632,9 +635,6 @@
     Initiates a contact import dialog [CHAR LIMIT=128] -->
     <string name="contacts_unavailable_import_contacts">Import</string>
 
-    <!-- Title of the dialog that allows creation of a contact label [CHAR LIMIT=50] -->
-    <string name="create_group_dialog_title">Create new label</string>
-
     <!-- An item in the popup list of labels that triggers creation of a contact label [CHAR LIMIT=128] -->
     <string name="create_group_item_label">Create new&#8230;</string>
 
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index c8d8eb3..bea1411 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -88,8 +88,7 @@
         AccountFiltersListener,
         GroupsListener,
         NavigationView.OnNavigationItemSelectedListener,
-        SelectAccountDialogFragment.Listener,
-        GroupNameEditDialogFragment.Listener {
+        SelectAccountDialogFragment.Listener {
 
     protected static String TAG = "ContactsDrawerActivity";
 
@@ -650,26 +649,11 @@
     @Override
     public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
         mNewGroupAccount = account;
-        GroupNameEditDialogFragment.showInsertDialog(
-                getFragmentManager(), TAG_GROUP_NAME_EDIT_DIALOG);
+        GroupNameEditDialogFragment.newInstanceForCreation(mNewGroupAccount, ACTION_CREATE_GROUP)
+                .show(getFragmentManager(), TAG_GROUP_NAME_EDIT_DIALOG);
     }
 
     @Override
     public void onAccountSelectorCancelled() {
     }
-
-    @Override
-    public void onGroupNameEdit(String groupName, boolean isInsert) {
-        if (mNewGroupAccount == null) {
-            Toast.makeText(this, R.string.groupCreateFailedToast, Toast.LENGTH_SHORT).show();
-            return;
-        }
-        startService(ContactSaveService.createNewGroupIntent(this,
-                mNewGroupAccount, groupName, /* rawContactsToAdd */ null, getClass(),
-                ACTION_CREATE_GROUP));
-    }
-
-    @Override
-    public void onGroupNameEditCancelled() {
-    }
 }
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index 093c8b6..68f2f44 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -36,6 +36,7 @@
 import com.android.contacts.common.logging.ListEvent;
 import com.android.contacts.common.logging.Logger;
 import com.android.contacts.common.logging.ScreenEvent.ScreenType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.group.GroupMembersFragment;
 import com.android.contacts.group.GroupMetadata;
@@ -53,8 +54,7 @@
 public class GroupMembersActivity extends ContactsDrawerActivity implements
         ActionBarAdapter.Listener,
         MultiSelectContactsListFragment.OnCheckBoxListActionListener,
-        GroupMembersFragment.GroupMembersListener,
-        GroupNameEditDialogFragment.Listener {
+        GroupMembersFragment.GroupMembersListener {
 
     private static final String TAG = "GroupMembers";
 
@@ -382,8 +382,11 @@
                 return true;
             }
             case R.id.menu_rename_group: {
-                GroupNameEditDialogFragment.showUpdateDialog(
-                        getFragmentManager(), TAG_GROUP_NAME_EDIT_DIALOG, mGroupMetadata.groupName);
+                GroupNameEditDialogFragment.newInstanceForUpdate(
+                        new AccountWithDataSet(mGroupMetadata.accountName,
+                                mGroupMetadata.accountType, mGroupMetadata.dataSet),
+                        ACTION_UPDATE_GROUP, mGroupMetadata.groupId, mGroupMetadata.groupName)
+                        .show(getFragmentManager(), TAG_GROUP_NAME_EDIT_DIALOG);
                 return true;
             }
             case R.id.menu_delete_group: {
@@ -567,23 +570,6 @@
         mActionBarAdapter.setSelectionMode(false);
     }
 
-    // GroupNameEditDialogFragment.Listener callbacks
-
-    @Override
-    public void onGroupNameEdit(String groupName, boolean isInsert) {
-        if (isInsert) {
-            super.onGroupNameEdit(groupName, isInsert);
-            return;
-        }
-        startService(ContactSaveService.createGroupRenameIntent(this,
-                mGroupMetadata.groupId, groupName, GroupMembersActivity.class,
-                ACTION_UPDATE_GROUP));
-    }
-
-    @Override
-    public void onGroupNameEditCancelled() {
-    }
-
     // GroupMembersFragment callbacks
 
     @Override
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 8a0ae1b..776a173 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -21,13 +21,16 @@
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
 import android.content.ActivityNotFoundException;
+import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.Intent;
+import android.content.SyncStatusObserver;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.Parcelable;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Intents;
@@ -37,6 +40,7 @@
 import android.support.v4.view.GravityCompat;
 import android.support.v4.view.PagerAdapter;
 import android.support.v4.view.ViewPager;
+import android.support.v4.widget.SwipeRefreshLayout;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyCharacterMap;
@@ -55,6 +59,7 @@
 import com.android.contacts.ContactsDrawerActivity;
 import com.android.contacts.R;
 import com.android.contacts.activities.ActionBarAdapter.TabState;
+import com.android.contacts.common.Experiments;
 import com.android.contacts.common.activity.RequestPermissionsActivity;
 import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.common.interactions.ImportExportDialogFragment;
@@ -74,6 +79,7 @@
 import com.android.contacts.common.util.Constants;
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.common.widget.FloatingActionButtonController;
+import com.android.contacts.commonbind.experiments.Flags;
 import com.android.contacts.editor.EditorIntents;
 import com.android.contacts.interactions.ContactDeletionInteraction;
 import com.android.contacts.interactions.ContactMultiDeletionInteraction;
@@ -89,6 +95,7 @@
 import com.android.contacts.quickcontact.QuickContactActivity;
 import com.android.contacts.util.DialogManager;
 import com.android.contacts.util.SharedPreferenceUtil;
+import com.android.contacts.util.SyncUtil;
 import com.google.android.libraries.material.featurehighlight.FeatureHighlight;
 
 import java.util.List;
@@ -168,6 +175,54 @@
     private final int mInstanceId;
     private static final AtomicInteger sNextInstanceId = new AtomicInteger();
 
+    private Object mStatusChangeListenerHandle;
+
+    private final Handler mHandler = new Handler();
+
+    private SyncStatusObserver mSyncStatusObserver = new SyncStatusObserver() {
+        public void onStatusChanged(int which) {
+            mHandler.post(new Runnable() {
+                public void run() {
+                    onSyncStateUpdated();
+                }
+            });
+        }
+    };
+
+    // Update sync status for accounts in current ContactListFilter
+    private void onSyncStateUpdated() {
+        if (mActionBarAdapter.isSearchMode() || mActionBarAdapter.isSelectionMode()) {
+            return;
+        }
+
+        final ContactListFilter filter = mContactListFilterController.getFilter();
+        if (filter != null) {
+            final SwipeRefreshLayout swipeRefreshLayout = mAllFragment.getSwipeRefreshLayout();
+            if (swipeRefreshLayout == null) {
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "Can not load swipeRefreshLayout, swipeRefreshLayout is null");
+                }
+                return;
+            }
+
+            final List<AccountWithDataSet> accounts = AccountTypeManager.getInstance(this)
+                    .getAccounts(/* contactsWritableOnly */ true);
+            final List<Account> syncableAccounts = filter.getSyncableAccounts(accounts);
+            // If one of the accounts is active or pending, use spinning circle to indicate one of
+            // the syncs is in progress.
+            if (syncableAccounts != null && syncableAccounts.size() > 0) {
+                for (Account account: syncableAccounts) {
+                    if (SyncUtil.isSyncStatusPendingOrActive(account)
+                            || SyncUtil.isUnsyncableGoogleAccount(account)) {
+                        swipeRefreshLayout.setRefreshing(true);
+                        return;
+                    }
+                }
+            }
+            swipeRefreshLayout.setRefreshing(false);
+        }
+    }
+
     public PeopleActivity() {
         mInstanceId = sNextInstanceId.getAndIncrement();
         mIntentResolver = new ContactsIntentResolver(this);
@@ -415,6 +470,11 @@
         mOptionsMenuContactsAvailable = false;
         mProviderStatusWatcher.stop();
         super.onPause();
+
+        if (Flags.getInstance(this).getBoolean(Experiments.PULL_TO_REFRESH)) {
+            ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
+            onSyncStateUpdated();
+        }
     }
 
     @Override
@@ -434,6 +494,15 @@
         // Current tab may have changed since the last onSaveInstanceState().  Make sure
         // the actual contents match the tab.
         updateFragmentsVisibility();
+
+        if (Flags.getInstance(this).getBoolean(Experiments.PULL_TO_REFRESH)) {
+            mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
+                    ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
+                            | ContentResolver.SYNC_OBSERVER_TYPE_PENDING
+                            | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS,
+                    mSyncStatusObserver);
+            onSyncStateUpdated();
+        }
         maybeShowHamburgerFeatureHighlight();
     }
 
@@ -591,6 +660,10 @@
                 updateFragmentsVisibility();
                 invalidateOptionsMenu();
                 showFabWithAnimation(shouldShowFabForAccount());
+                // Determine whether the account has pullToRefresh feature
+                if (Flags.getInstance(this).getBoolean(Experiments.PULL_TO_REFRESH)) {
+                    setSwipeRefreshLayoutEnabledOrNot(mContactListFilterController.getFilter());
+                }
                 break;
             case ActionBarAdapter.Listener.Action.CHANGE_SEARCH_QUERY:
                 final String queryString = mActionBarAdapter.getQueryString();
@@ -1469,6 +1542,33 @@
                         .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
             }
         }
+
+        // Determine whether the account has pullToRefresh feature
+        if (Flags.getInstance(this).getBoolean(Experiments.PULL_TO_REFRESH)) {
+            setSwipeRefreshLayoutEnabledOrNot(filter);
+        }
+    }
+
+    private void setSwipeRefreshLayoutEnabledOrNot(ContactListFilter filter) {
+        final SwipeRefreshLayout swipeRefreshLayout = mAllFragment.getSwipeRefreshLayout();
+        if (swipeRefreshLayout == null) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Can not load swipeRefreshLayout, swipeRefreshLayout is null");
+            }
+            return;
+        }
+
+        swipeRefreshLayout.setRefreshing(false);
+        swipeRefreshLayout.setEnabled(false);
+
+        if (filter != null && !mActionBarAdapter.isSearchMode()
+                && !mActionBarAdapter.isSelectionMode()) {
+            final List<AccountWithDataSet> accounts = AccountTypeManager.getInstance(this)
+                    .getAccounts(/* contactsWritableOnly */ true);
+            if (filter.isSyncable(accounts)) {
+                swipeRefreshLayout.setEnabled(true);
+            }
+        }
     }
 
     private String getActionBarTitleForAccount(ContactListFilter filter) {
diff --git a/src/com/android/contacts/common/CallUtil.java b/src/com/android/contacts/common/CallUtil.java
new file mode 100644
index 0000000..88fca92
--- /dev/null
+++ b/src/com/android/contacts/common/CallUtil.java
@@ -0,0 +1,204 @@
+/*
+ * 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.contacts.common;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.PhoneAccountSdkCompat;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.phone.common.PhoneConstants;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+import android.text.TextUtils;
+
+import java.util.List;
+
+/**
+ * Utilities related to calls that can be used by non system apps. These
+ * use {@link Intent#ACTION_CALL} instead of ACTION_CALL_PRIVILEGED.
+ *
+ * The privileged version of this util exists inside Dialer.
+ */
+public class CallUtil {
+
+    /**
+     * Indicates that the video calling is not available.
+     */
+    public static final int VIDEO_CALLING_DISABLED = 0;
+
+    /**
+     * Indicates that video calling is enabled, regardless of presence status.
+     */
+    public static final int VIDEO_CALLING_ENABLED = 1;
+
+    /**
+     * Indicates that video calling is enabled, but the availability of video call affordances is
+     * determined by the presence status associated with contacts.
+     */
+    public static final int VIDEO_CALLING_PRESENCE = 2;
+
+    /**
+     * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
+     * automatically.
+     */
+    public static Intent getCallWithSubjectIntent(String number,
+            PhoneAccountHandle phoneAccountHandle, String callSubject) {
+
+        final Intent intent = getCallIntent(getCallUri(number));
+        intent.putExtra(TelecomManager.EXTRA_CALL_SUBJECT, callSubject);
+        if (phoneAccountHandle != null) {
+            intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+        }
+        return intent;
+    }
+
+    /**
+     * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
+     * automatically.
+     */
+    public static Intent getCallIntent(String number) {
+        return getCallIntent(getCallUri(number));
+    }
+
+    /**
+     * Return an Intent for making a phone call. A given Uri will be used as is (without any
+     * sanity check).
+     */
+    public static Intent getCallIntent(Uri uri) {
+        return new Intent(Intent.ACTION_CALL, uri);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent} for starting a video call.
+     */
+    public static Intent getVideoCallIntent(String number, String callOrigin) {
+        final Intent intent = new Intent(Intent.ACTION_CALL, getCallUri(number));
+        intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
+                VideoProfile.STATE_BIDIRECTIONAL);
+        if (!TextUtils.isEmpty(callOrigin)) {
+            intent.putExtra(PhoneConstants.EXTRA_CALL_ORIGIN, callOrigin);
+        }
+        return intent;
+    }
+
+    /**
+     * Return Uri with an appropriate scheme, accepting both SIP and usual phone call
+     * numbers.
+     */
+    public static Uri getCallUri(String number) {
+        if (PhoneNumberHelper.isUriNumber(number)) {
+             return Uri.fromParts(PhoneAccount.SCHEME_SIP, number, null);
+        }
+        return Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null);
+    }
+
+    /**
+     * @return Uri that directly dials a user's voicemail inbox.
+     */
+    public static Uri getVoicemailUri() {
+        return Uri.fromParts(PhoneAccount.SCHEME_VOICEMAIL, "", null);
+    }
+
+    /**
+     * Determines if video calling is available, and if so whether presence checking is available
+     * as well.
+     *
+     * Returns a bitmask with {@link #VIDEO_CALLING_ENABLED} to indicate that video calling is
+     * available, and {@link #VIDEO_CALLING_PRESENCE} if presence indication is also available.
+     *
+     * @param context The context
+     * @return A bit-mask describing the current video capabilities.
+     */
+    public static int getVideoCallingAvailability(Context context) {
+        if (!PermissionsUtil.hasPermission(context, android.Manifest.permission.READ_PHONE_STATE)
+                || !CompatUtils.isVideoCompatible()) {
+            return VIDEO_CALLING_DISABLED;
+        }
+        TelecomManager telecommMgr = (TelecomManager)
+                context.getSystemService(Context.TELECOM_SERVICE);
+        if (telecommMgr == null) {
+            return VIDEO_CALLING_DISABLED;
+        }
+
+        List<PhoneAccountHandle> accountHandles = telecommMgr.getCallCapablePhoneAccounts();
+        for (PhoneAccountHandle accountHandle : accountHandles) {
+            PhoneAccount account = telecommMgr.getPhoneAccount(accountHandle);
+            if (account != null) {
+                if (account.hasCapabilities(PhoneAccount.CAPABILITY_VIDEO_CALLING)) {
+                    // Builds prior to N do not have presence support.
+                    if (!CompatUtils.isVideoPresenceCompatible()) {
+                        return VIDEO_CALLING_ENABLED;
+                    }
+
+                    int videoCapabilities = VIDEO_CALLING_ENABLED;
+                    if (account.hasCapabilities(
+                            PhoneAccountSdkCompat.CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE)) {
+                        videoCapabilities |= VIDEO_CALLING_PRESENCE;
+                    }
+                    return videoCapabilities;
+                }
+            }
+        }
+        return VIDEO_CALLING_DISABLED;
+    }
+
+    /**
+     * Determines if one of the call capable phone accounts defined supports video calling.
+     *
+     * @param context The context.
+     * @return {@code true} if one of the call capable phone accounts supports video calling,
+     *      {@code false} otherwise.
+     */
+    public static boolean isVideoEnabled(Context context) {
+        return (getVideoCallingAvailability(context) & VIDEO_CALLING_ENABLED) != 0;
+    }
+
+    /**
+     * Determines if one of the call capable phone accounts defined supports calling with a subject
+     * specified.
+     *
+     * @param context The context.
+     * @return {@code true} if one of the call capable phone accounts supports calling with a
+     *      subject specified, {@code false} otherwise.
+     */
+    public static boolean isCallWithSubjectSupported(Context context) {
+        if (!PermissionsUtil.hasPermission(context, android.Manifest.permission.READ_PHONE_STATE)
+                || !CompatUtils.isCallSubjectCompatible()) {
+            return false;
+        }
+        TelecomManager telecommMgr = (TelecomManager)
+                context.getSystemService(Context.TELECOM_SERVICE);
+        if (telecommMgr == null) {
+            return false;
+        }
+
+        List<PhoneAccountHandle> accountHandles = telecommMgr.getCallCapablePhoneAccounts();
+        for (PhoneAccountHandle accountHandle : accountHandles) {
+            PhoneAccount account = telecommMgr.getPhoneAccount(accountHandle);
+            if (account != null && account.hasCapabilities(PhoneAccount.CAPABILITY_CALL_SUBJECT)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/contacts/common/ClipboardUtils.java b/src/com/android/contacts/common/ClipboardUtils.java
new file mode 100644
index 0000000..27af963
--- /dev/null
+++ b/src/com/android/contacts/common/ClipboardUtils.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 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.contacts.common;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+public class ClipboardUtils {
+    private static final String TAG = "ClipboardUtils";
+
+    private ClipboardUtils() { }
+
+    /**
+     * Copy a text to clipboard.
+     *
+     * @param context Context
+     * @param label Label to show to the user describing this clip.
+     * @param text Text to copy.
+     * @param showToast If {@code true}, a toast is shown to the user.
+     */
+    public static void copyText(Context context, CharSequence label, CharSequence text,
+            boolean showToast) {
+        if (TextUtils.isEmpty(text)) return;
+
+        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(
+                Context.CLIPBOARD_SERVICE);
+        ClipData clipData = ClipData.newPlainText(label == null ? "" : label, text);
+        clipboardManager.setPrimaryClip(clipData);
+
+        if (showToast) {
+            String toastText = context.getString(R.string.toast_text_copied);
+            Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/Collapser.java b/src/com/android/contacts/common/Collapser.java
new file mode 100644
index 0000000..1ab63c5
--- /dev/null
+++ b/src/com/android/contacts/common/Collapser.java
@@ -0,0 +1,96 @@
+/*
+ * 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.contacts.common;
+
+import android.content.Context;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Class used for collapsing data items into groups of similar items. The data items that should be
+ * collapsible should implement the Collapsible interface. The class also contains a utility
+ * function that takes an ArrayList of items and returns a list of the same items collapsed into
+ * groups.
+ */
+public final class Collapser {
+
+    /*
+     * This utility class cannot be instantiated.
+     */
+    private Collapser() {}
+
+    /*
+     * The Collapser uses an n^2 algorithm so we don't want it to run on
+     * lists beyond a certain size. This specifies the maximum size to collapse.
+     */
+    private static final int MAX_LISTSIZE_TO_COLLAPSE = 20;
+
+    /*
+     * Interface implemented by data types that can be collapsed into groups of similar data. This
+     * can be used for example to collapse similar contact data items into a single item.
+     */
+    public interface Collapsible<T> {
+        public void collapseWith(T t);
+        public boolean shouldCollapseWith(T t, Context context);
+
+    }
+
+    /**
+     * Collapses a list of Collapsible items into a list of collapsed items. Items are collapsed
+     * if {@link Collapsible#shouldCollapseWith(Object)} returns true, and are collapsed
+     * through the {@Link Collapsible#collapseWith(Object)} function implemented by the data item.
+     *
+     * @param list List of Objects of type <T extends Collapsible<T>> to be collapsed.
+     */
+    public static <T extends Collapsible<T>> void collapseList(List<T> list, Context context) {
+
+        int listSize = list.size();
+        // The algorithm below is n^2 so don't run on long lists
+        if (listSize > MAX_LISTSIZE_TO_COLLAPSE) {
+            return;
+        }
+
+        for (int i = 0; i < listSize; i++) {
+            T iItem = list.get(i);
+            if (iItem != null) {
+                for (int j = i + 1; j < listSize; j++) {
+                    T jItem = list.get(j);
+                    if (jItem != null) {
+                        if (iItem.shouldCollapseWith(jItem, context)) {
+                            iItem.collapseWith(jItem);
+                            list.set(j, null);
+                        } else if (jItem.shouldCollapseWith(iItem, context)) {
+                            jItem.collapseWith(iItem);
+                            list.set(i, null);
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+
+        // Remove the null items
+        Iterator<T> itr = list.iterator();
+        while (itr.hasNext()) {
+            if (itr.next() == null) {
+                itr.remove();
+            }
+        }
+
+    }
+}
diff --git a/src/com/android/contacts/common/ContactPhotoManager.java b/src/com/android/contacts/common/ContactPhotoManager.java
new file mode 100644
index 0000000..81b6b06
--- /dev/null
+++ b/src/com/android/contacts/common/ContactPhotoManager.java
@@ -0,0 +1,1720 @@
+/*
+ * 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.contacts.common;
+
+import android.app.ActivityManager;
+import android.content.ComponentCallbacks2;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Paint.Style;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.TransitionDrawable;
+import android.media.ThumbnailUtils;
+import android.net.TrafficStats;
+import android.net.Uri;
+import android.net.Uri.Builder;
+import android.os.Handler;
+import android.os.Handler.Callback;
+import android.os.HandlerThread;
+import android.os.Message;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Contacts.Photo;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.LruCache;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.contacts.common.util.BitmapUtil;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.TrafficStatsTags;
+import com.android.contacts.common.util.UriUtils;
+import com.android.contacts.commonbind.util.UserAgentGenerator;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Asynchronously loads contact photos and maintains a cache of photos.
+ */
+public abstract class ContactPhotoManager implements ComponentCallbacks2 {
+    static final String TAG = "ContactPhotoManager";
+    static final boolean DEBUG = false; // Don't submit with true
+    static final boolean DEBUG_SIZES = false; // Don't submit with true
+
+    /** Contact type constants used for default letter images */
+    public static final int TYPE_PERSON = LetterTileDrawable.TYPE_PERSON;
+    public static final int TYPE_BUSINESS = LetterTileDrawable.TYPE_BUSINESS;
+    public static final int TYPE_VOICEMAIL = LetterTileDrawable.TYPE_VOICEMAIL;
+    public static final int TYPE_DEFAULT = LetterTileDrawable.TYPE_DEFAULT;
+
+    /** Scale and offset default constants used for default letter images */
+    public static final float SCALE_DEFAULT = 1.0f;
+    public static final float OFFSET_DEFAULT = 0.0f;
+
+    public static final boolean IS_CIRCULAR_DEFAULT = false;
+
+    /** Uri-related constants used for default letter images */
+    private static final String DISPLAY_NAME_PARAM_KEY = "display_name";
+    private static final String IDENTIFIER_PARAM_KEY = "identifier";
+    private static final String CONTACT_TYPE_PARAM_KEY = "contact_type";
+    private static final String SCALE_PARAM_KEY = "scale";
+    private static final String OFFSET_PARAM_KEY = "offset";
+    private static final String IS_CIRCULAR_PARAM_KEY = "is_circular";
+    private static final String DEFAULT_IMAGE_URI_SCHEME = "defaultimage";
+    private static final Uri DEFAULT_IMAGE_URI = Uri.parse(DEFAULT_IMAGE_URI_SCHEME + "://");
+
+    // Static field used to cache the default letter avatar drawable that is created
+    // using a null {@link DefaultImageRequest}
+    private static Drawable sDefaultLetterAvatar = null;
+
+    private static ContactPhotoManager sInstance;
+
+    /**
+     * Given a {@link DefaultImageRequest}, returns a {@link Drawable}, that when drawn, will
+     * draw a letter tile avatar based on the request parameters defined in the
+     * {@link DefaultImageRequest}.
+     */
+    public static Drawable getDefaultAvatarDrawableForContact(Resources resources, boolean hires,
+            DefaultImageRequest defaultImageRequest) {
+        if (defaultImageRequest == null) {
+            if (sDefaultLetterAvatar == null) {
+                // Cache and return the letter tile drawable that is created by a null request,
+                // so that it doesn't have to be recreated every time it is requested again.
+                sDefaultLetterAvatar = LetterTileDefaultImageProvider.getDefaultImageForContact(
+                        resources, null);
+            }
+            return sDefaultLetterAvatar;
+        }
+        return LetterTileDefaultImageProvider.getDefaultImageForContact(resources,
+                defaultImageRequest);
+    }
+
+    /**
+     * Given a {@link DefaultImageRequest}, returns an Uri that can be used to request a
+     * letter tile avatar when passed to the {@link ContactPhotoManager}. The internal
+     * implementation of this uri is not guaranteed to remain the same across application
+     * versions, so the actual uri should never be persisted in long-term storage and reused.
+     *
+     * @param request A {@link DefaultImageRequest} object with the fields configured
+     * to return a
+     * @return A Uri that when later passed to the {@link ContactPhotoManager} via
+     * {@link #loadPhoto(ImageView, Uri, int, boolean, DefaultImageRequest)}, can be
+     * used to request a default contact image, drawn as a letter tile using the
+     * parameters as configured in the provided {@link DefaultImageRequest}
+     */
+    public static Uri getDefaultAvatarUriForContact(DefaultImageRequest request) {
+        final Builder builder = DEFAULT_IMAGE_URI.buildUpon();
+        if (request != null) {
+            if (!TextUtils.isEmpty(request.displayName)) {
+                builder.appendQueryParameter(DISPLAY_NAME_PARAM_KEY, request.displayName);
+            }
+            if (!TextUtils.isEmpty(request.identifier)) {
+                builder.appendQueryParameter(IDENTIFIER_PARAM_KEY, request.identifier);
+            }
+            if (request.contactType != TYPE_DEFAULT) {
+                builder.appendQueryParameter(CONTACT_TYPE_PARAM_KEY,
+                        String.valueOf(request.contactType));
+            }
+            if (request.scale != SCALE_DEFAULT) {
+                builder.appendQueryParameter(SCALE_PARAM_KEY, String.valueOf(request.scale));
+            }
+            if (request.offset != OFFSET_DEFAULT) {
+                builder.appendQueryParameter(OFFSET_PARAM_KEY, String.valueOf(request.offset));
+            }
+            if (request.isCircular != IS_CIRCULAR_DEFAULT) {
+                builder.appendQueryParameter(IS_CIRCULAR_PARAM_KEY,
+                        String.valueOf(request.isCircular));
+            }
+
+        }
+        return builder.build();
+    }
+
+    /**
+     * Adds a business contact type encoded fragment to the URL.  Used to ensure photo URLS
+     * from Nearby Places can be identified as business photo URLs rather than URLs for personal
+     * contact photos.
+     *
+     * @param photoUrl The photo URL to modify.
+     * @return URL with the contact type parameter added and set to TYPE_BUSINESS.
+     */
+    public static String appendBusinessContactType(String photoUrl) {
+        Uri uri = Uri.parse(photoUrl);
+        Builder builder = uri.buildUpon();
+        builder.encodedFragment(String.valueOf(TYPE_BUSINESS));
+        return builder.build().toString();
+    }
+
+    /**
+     * Removes the contact type information stored in the photo URI encoded fragment.
+     *
+     * @param photoUri The photo URI to remove the contact type from.
+     * @return The photo URI with contact type removed.
+     */
+    public static Uri removeContactType(Uri photoUri) {
+        String encodedFragment = photoUri.getEncodedFragment();
+        if (!TextUtils.isEmpty(encodedFragment)) {
+            Builder builder = photoUri.buildUpon();
+            builder.encodedFragment(null);
+            return builder.build();
+        }
+        return photoUri;
+    }
+
+    /**
+     * Inspects a photo URI to determine if the photo URI represents a business.
+     *
+     * @param photoUri The URI to inspect.
+     * @return Whether the URI represents a business photo or not.
+     */
+    public static boolean isBusinessContactUri(Uri photoUri) {
+        if (photoUri == null) {
+            return false;
+        }
+
+        String encodedFragment = photoUri.getEncodedFragment();
+        return !TextUtils.isEmpty(encodedFragment)
+                && encodedFragment.equals(String.valueOf(TYPE_BUSINESS));
+    }
+
+    protected static DefaultImageRequest getDefaultImageRequestFromUri(Uri uri) {
+        final DefaultImageRequest request = new DefaultImageRequest(
+                uri.getQueryParameter(DISPLAY_NAME_PARAM_KEY),
+                uri.getQueryParameter(IDENTIFIER_PARAM_KEY), false);
+        try {
+            String contactType = uri.getQueryParameter(CONTACT_TYPE_PARAM_KEY);
+            if (!TextUtils.isEmpty(contactType)) {
+                request.contactType = Integer.valueOf(contactType);
+            }
+
+            String scale = uri.getQueryParameter(SCALE_PARAM_KEY);
+            if (!TextUtils.isEmpty(scale)) {
+                request.scale = Float.valueOf(scale);
+            }
+
+            String offset = uri.getQueryParameter(OFFSET_PARAM_KEY);
+            if (!TextUtils.isEmpty(offset)) {
+                request.offset = Float.valueOf(offset);
+            }
+
+            String isCircular = uri.getQueryParameter(IS_CIRCULAR_PARAM_KEY);
+            if (!TextUtils.isEmpty(isCircular)) {
+                request.isCircular = Boolean.valueOf(isCircular);
+            }
+        } catch (NumberFormatException e) {
+            Log.w(TAG, "Invalid DefaultImageRequest image parameters provided, ignoring and using "
+                    + "defaults.");
+        }
+
+        return request;
+    }
+
+    protected boolean isDefaultImageUri(Uri uri) {
+        return DEFAULT_IMAGE_URI_SCHEME.equals(uri.getScheme());
+    }
+
+    /**
+     * Contains fields used to contain contact details and other user-defined settings that might
+     * be used by the ContactPhotoManager to generate a default contact image. This contact image
+     * takes the form of a letter or bitmap drawn on top of a colored tile.
+     */
+    public static class DefaultImageRequest {
+        /**
+         * The contact's display name. The display name is used to
+         */
+        public String displayName;
+
+        /**
+         * A unique and deterministic string that can be used to identify this contact. This is
+         * usually the contact's lookup key, but other contact details can be used as well,
+         * especially for non-local or temporary contacts that might not have a lookup key. This
+         * is used to determine the color of the tile.
+         */
+        public String identifier;
+
+        /**
+         * The type of this contact. This contact type may be used to decide the kind of
+         * image to use in the case where a unique letter cannot be generated from the contact's
+         * display name and identifier. See:
+         * {@link #TYPE_PERSON}
+         * {@link #TYPE_BUSINESS}
+         * {@link #TYPE_PERSON}
+         * {@link #TYPE_DEFAULT}
+         */
+        public int contactType = TYPE_DEFAULT;
+
+        /**
+         * The amount to scale the letter or bitmap to, as a ratio of its default size (from a
+         * range of 0.0f to 2.0f). The default value is 1.0f.
+         */
+        public float scale = SCALE_DEFAULT;
+
+        /**
+         * The amount to vertically offset the letter or image to within the tile.
+         * The provided offset must be within the range of -0.5f to 0.5f.
+         * If set to -0.5f, the letter will be shifted upwards by 0.5 times the height of the canvas
+         * it is being drawn on, which means it will be drawn with the center of the letter starting
+         * at the top edge of the canvas.
+         * If set to 0.5f, the letter will be shifted downwards by 0.5 times the height of the
+         * canvas it is being drawn on, which means it will be drawn with the center of the letter
+         * starting at the bottom edge of the canvas.
+         * The default is 0.0f, which means the letter is drawn in the exact vertical center of
+         * the tile.
+         */
+        public float offset = OFFSET_DEFAULT;
+
+        /**
+         * Whether or not to draw the default image as a circle, instead of as a square/rectangle.
+         */
+        public boolean isCircular = false;
+
+        /**
+         * Used to indicate that a drawable that represents a contact without any contact details
+         * should be returned.
+         */
+        public static DefaultImageRequest EMPTY_DEFAULT_IMAGE_REQUEST = new DefaultImageRequest();
+
+        /**
+         * Used to indicate that a drawable that represents a business without a business photo
+         * should be returned.
+         */
+        public static DefaultImageRequest EMPTY_DEFAULT_BUSINESS_IMAGE_REQUEST =
+                new DefaultImageRequest(null, null, TYPE_BUSINESS, false);
+
+        /**
+         * Used to indicate that a circular drawable that represents a contact without any contact
+         * details should be returned.
+         */
+        public static DefaultImageRequest EMPTY_CIRCULAR_DEFAULT_IMAGE_REQUEST =
+                new DefaultImageRequest(null, null, true);
+
+        /**
+         * Used to indicate that a circular drawable that represents a business without a business
+         * photo should be returned.
+         */
+        public static DefaultImageRequest EMPTY_CIRCULAR_BUSINESS_IMAGE_REQUEST =
+                new DefaultImageRequest(null, null, TYPE_BUSINESS, true);
+
+        public DefaultImageRequest() {
+        }
+
+        public DefaultImageRequest(String displayName, String identifier, boolean isCircular) {
+            this(displayName, identifier, TYPE_DEFAULT, SCALE_DEFAULT, OFFSET_DEFAULT, isCircular);
+        }
+
+        public DefaultImageRequest(String displayName, String identifier, int contactType,
+                boolean isCircular) {
+            this(displayName, identifier, contactType, SCALE_DEFAULT, OFFSET_DEFAULT, isCircular);
+        }
+
+        public DefaultImageRequest(String displayName, String identifier, int contactType,
+                float scale, float offset, boolean isCircular) {
+            this.displayName = displayName;
+            this.identifier = identifier;
+            this.contactType = contactType;
+            this.scale = scale;
+            this.offset = offset;
+            this.isCircular = isCircular;
+        }
+    }
+
+    public static abstract class DefaultImageProvider {
+        /**
+         * Applies the default avatar to the ImageView. Extent is an indicator for the size (width
+         * or height). If darkTheme is set, the avatar is one that looks better on dark background
+         *
+         * @param defaultImageRequest {@link DefaultImageRequest} object that specifies how a
+         * default letter tile avatar should be drawn.
+         */
+        public abstract void applyDefaultImage(ImageView view, int extent, boolean darkTheme,
+                DefaultImageRequest defaultImageRequest);
+    }
+
+    /**
+     * A default image provider that applies a letter tile consisting of a colored background
+     * and a letter in the foreground as the default image for a contact. The color of the
+     * background and the type of letter is decided based on the contact's details.
+     */
+    private static class LetterTileDefaultImageProvider extends DefaultImageProvider {
+        @Override
+        public void applyDefaultImage(ImageView view, int extent, boolean darkTheme,
+                DefaultImageRequest defaultImageRequest) {
+            final Drawable drawable = getDefaultImageForContact(view.getResources(),
+                    defaultImageRequest);
+            view.setImageDrawable(drawable);
+        }
+
+        public static Drawable getDefaultImageForContact(Resources resources,
+                DefaultImageRequest defaultImageRequest) {
+            final LetterTileDrawable drawable = new LetterTileDrawable(resources);
+            if (defaultImageRequest != null) {
+                // If the contact identifier is null or empty, fallback to the
+                // displayName. In that case, use {@code null} for the contact's
+                // display name so that a default bitmap will be used instead of a
+                // letter
+                if (TextUtils.isEmpty(defaultImageRequest.identifier)) {
+                    drawable.setLetterAndColorFromContactDetails(null,
+                            defaultImageRequest.displayName);
+                } else {
+                    drawable.setLetterAndColorFromContactDetails(defaultImageRequest.displayName,
+                            defaultImageRequest.identifier);
+                }
+                drawable.setContactType(defaultImageRequest.contactType);
+                drawable.setScale(defaultImageRequest.scale);
+                drawable.setOffset(defaultImageRequest.offset);
+                drawable.setIsCircular(defaultImageRequest.isCircular);
+            }
+            return drawable;
+        }
+    }
+
+    private static class BlankDefaultImageProvider extends DefaultImageProvider {
+        private static Drawable sDrawable;
+
+        @Override
+        public void applyDefaultImage(ImageView view, int extent, boolean darkTheme,
+                DefaultImageRequest defaultImageRequest) {
+            if (sDrawable == null) {
+                Context context = view.getContext();
+                sDrawable = new ColorDrawable(context.getResources().getColor(
+                        R.color.image_placeholder));
+            }
+            view.setImageDrawable(sDrawable);
+        }
+    }
+
+    public static DefaultImageProvider DEFAULT_AVATAR = new LetterTileDefaultImageProvider();
+
+    public static final DefaultImageProvider DEFAULT_BLANK = new BlankDefaultImageProvider();
+
+    public static ContactPhotoManager getInstance(Context context) {
+        if (sInstance == null) {
+            Context applicationContext = context.getApplicationContext();
+            sInstance = createContactPhotoManager(applicationContext);
+            applicationContext.registerComponentCallbacks(sInstance);
+            if (PermissionsUtil.hasContactsPermissions(context)) {
+                sInstance.preloadPhotosInBackground();
+            }
+        }
+        return sInstance;
+    }
+
+    public static synchronized ContactPhotoManager createContactPhotoManager(Context context) {
+        return new ContactPhotoManagerImpl(context);
+    }
+
+    @VisibleForTesting
+    public static void injectContactPhotoManagerForTesting(ContactPhotoManager photoManager) {
+        sInstance = photoManager;
+    }
+
+    /**
+     * Load thumbnail image into the supplied image view. If the photo is already cached,
+     * it is displayed immediately.  Otherwise a request is sent to load the photo
+     * from the database.
+     */
+    public abstract void loadThumbnail(ImageView view, long photoId, boolean darkTheme,
+            boolean isCircular, DefaultImageRequest defaultImageRequest,
+            DefaultImageProvider defaultProvider);
+
+    /**
+     * Calls {@link #loadThumbnail(ImageView, long, boolean, DefaultImageRequest,
+     * DefaultImageProvider)} using the {@link DefaultImageProvider} {@link #DEFAULT_AVATAR}.
+    */
+    public final void loadThumbnail(ImageView view, long photoId, boolean darkTheme,
+            boolean isCircular, DefaultImageRequest defaultImageRequest) {
+        loadThumbnail(view, photoId, darkTheme, isCircular, defaultImageRequest, DEFAULT_AVATAR);
+    }
+
+
+    /**
+     * Load photo into the supplied image view. If the photo is already cached,
+     * it is displayed immediately. Otherwise a request is sent to load the photo
+     * from the location specified by the URI.
+     *
+     * @param view The target view
+     * @param photoUri The uri of the photo to load
+     * @param requestedExtent Specifies an approximate Max(width, height) of the targetView.
+     * This is useful if the source image can be a lot bigger that the target, so that the decoding
+     * is done using efficient sampling. If requestedExtent is specified, no sampling of the image
+     * is performed
+     * @param darkTheme Whether the background is dark. This is used for default avatars
+     * @param defaultImageRequest {@link DefaultImageRequest} object that specifies how a default
+     * letter tile avatar should be drawn.
+     * @param defaultProvider The provider of default avatars (this is used if photoUri doesn't
+     * refer to an existing image)
+     */
+    public abstract void loadPhoto(ImageView view, Uri photoUri, int requestedExtent,
+            boolean darkTheme, boolean isCircular, DefaultImageRequest defaultImageRequest,
+            DefaultImageProvider defaultProvider);
+
+    /**
+     * Calls {@link #loadPhoto(ImageView, Uri, int, boolean, DefaultImageRequest,
+     * DefaultImageProvider)} with {@link #DEFAULT_AVATAR} and {@code null} display names and
+     * lookup keys.
+     *
+     * @param defaultImageRequest {@link DefaultImageRequest} object that specifies how a default
+     * letter tile avatar should be drawn.
+     */
+    public final void loadPhoto(ImageView view, Uri photoUri, int requestedExtent,
+            boolean darkTheme, boolean isCircular, DefaultImageRequest defaultImageRequest) {
+        loadPhoto(view, photoUri, requestedExtent, darkTheme, isCircular,
+                defaultImageRequest, DEFAULT_AVATAR);
+    }
+
+    /**
+     * Calls {@link #loadPhoto(ImageView, Uri, boolean, boolean, DefaultImageRequest,
+     * DefaultImageProvider)} with {@link #DEFAULT_AVATAR} and with the assumption, that
+     * the image is a thumbnail.
+     *
+     * @param defaultImageRequest {@link DefaultImageRequest} object that specifies how a default
+     * letter tile avatar should be drawn.
+     */
+    public final void loadDirectoryPhoto(ImageView view, Uri photoUri, boolean darkTheme,
+            boolean isCircular, DefaultImageRequest defaultImageRequest) {
+        loadPhoto(view, photoUri, -1, darkTheme, isCircular, defaultImageRequest, DEFAULT_AVATAR);
+    }
+
+    /**
+     * Remove photo from the supplied image view. This also cancels current pending load request
+     * inside this photo manager.
+     */
+    public abstract void removePhoto(ImageView view);
+
+    /**
+     * Cancels all pending requests to load photos asynchronously.
+     */
+    public abstract void cancelPendingRequests(View fragmentRootView);
+
+    /**
+     * Temporarily stops loading photos from the database.
+     */
+    public abstract void pause();
+
+    /**
+     * Resumes loading photos from the database.
+     */
+    public abstract void resume();
+
+    /**
+     * Marks all cached photos for reloading.  We can continue using cache but should
+     * also make sure the photos haven't changed in the background and notify the views
+     * if so.
+     */
+    public abstract void refreshCache();
+
+    /**
+     * Stores the given bitmap directly in the LRU bitmap cache.
+     * @param photoUri The URI of the photo (for future requests).
+     * @param bitmap The bitmap.
+     * @param photoBytes The bytes that were parsed to create the bitmap.
+     */
+    public abstract void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes);
+
+    /**
+     * Initiates a background process that over time will fill up cache with
+     * preload photos.
+     */
+    public abstract void preloadPhotosInBackground();
+
+    // ComponentCallbacks2
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+    }
+
+    // ComponentCallbacks2
+    @Override
+    public void onLowMemory() {
+    }
+
+    // ComponentCallbacks2
+    @Override
+    public void onTrimMemory(int level) {
+    }
+}
+
+class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback {
+    private static final String LOADER_THREAD_NAME = "ContactPhotoLoader";
+
+    private static final int FADE_TRANSITION_DURATION = 200;
+
+    /**
+     * Type of message sent by the UI thread to itself to indicate that some photos
+     * need to be loaded.
+     */
+    private static final int MESSAGE_REQUEST_LOADING = 1;
+
+    /**
+     * Type of message sent by the loader thread to indicate that some photos have
+     * been loaded.
+     */
+    private static final int MESSAGE_PHOTOS_LOADED = 2;
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    private static final String[] COLUMNS = new String[] { Photo._ID, Photo.PHOTO };
+
+    /**
+     * Dummy object used to indicate that a bitmap for a given key could not be stored in the
+     * cache.
+     */
+    private static final BitmapHolder BITMAP_UNAVAILABLE;
+
+    static {
+        BITMAP_UNAVAILABLE = new BitmapHolder(new byte[0], 0);
+        BITMAP_UNAVAILABLE.bitmapRef = new SoftReference<Bitmap>(null);
+    }
+
+    /**
+     * Maintains the state of a particular photo.
+     */
+    private static class BitmapHolder {
+        final byte[] bytes;
+        final int originalSmallerExtent;
+
+        volatile boolean fresh;
+        Bitmap bitmap;
+        Reference<Bitmap> bitmapRef;
+        int decodedSampleSize;
+
+        public BitmapHolder(byte[] bytes, int originalSmallerExtent) {
+            this.bytes = bytes;
+            this.fresh = true;
+            this.originalSmallerExtent = originalSmallerExtent;
+        }
+    }
+
+    private final Context mContext;
+
+    /**
+     * An LRU cache for bitmap holders. The cache contains bytes for photos just
+     * as they come from the database. Each holder has a soft reference to the
+     * actual bitmap.
+     */
+    private final LruCache<Object, BitmapHolder> mBitmapHolderCache;
+
+    /**
+     * {@code true} if ALL entries in {@link #mBitmapHolderCache} are NOT fresh.
+     */
+    private volatile boolean mBitmapHolderCacheAllUnfresh = true;
+
+    /**
+     * Cache size threshold at which bitmaps will not be preloaded.
+     */
+    private final int mBitmapHolderCacheRedZoneBytes;
+
+    /**
+     * Level 2 LRU cache for bitmaps. This is a smaller cache that holds
+     * the most recently used bitmaps to save time on decoding
+     * them from bytes (the bytes are stored in {@link #mBitmapHolderCache}.
+     */
+    private final LruCache<Object, Bitmap> mBitmapCache;
+
+    /**
+     * A map from ImageView to the corresponding photo ID or uri, encapsulated in a request.
+     * The request may swapped out before the photo loading request is started.
+     */
+    private final ConcurrentHashMap<ImageView, Request> mPendingRequests =
+            new ConcurrentHashMap<ImageView, Request>();
+
+    /**
+     * Handler for messages sent to the UI thread.
+     */
+    private final Handler mMainThreadHandler = new Handler(this);
+
+    /**
+     * Thread responsible for loading photos from the database. Created upon
+     * the first request.
+     */
+    private LoaderThread mLoaderThread;
+
+    /**
+     * A gate to make sure we only send one instance of MESSAGE_PHOTOS_NEEDED at a time.
+     */
+    private boolean mLoadingRequested;
+
+    /**
+     * Flag indicating if the image loading is paused.
+     */
+    private boolean mPaused;
+
+    /** Cache size for {@link #mBitmapHolderCache} for devices with "large" RAM. */
+    private static final int HOLDER_CACHE_SIZE = 2000000;
+
+    /** Cache size for {@link #mBitmapCache} for devices with "large" RAM. */
+    private static final int BITMAP_CACHE_SIZE = 36864 * 48; // 1728K
+
+    /** Height/width of a thumbnail image */
+    private static int mThumbnailSize;
+
+    /** For debug: How many times we had to reload cached photo for a stale entry */
+    private final AtomicInteger mStaleCacheOverwrite = new AtomicInteger();
+
+    /** For debug: How many times we had to reload cached photo for a fresh entry.  Should be 0. */
+    private final AtomicInteger mFreshCacheOverwrite = new AtomicInteger();
+
+    /**
+     * The user agent string to use when loading URI based photos.
+     */
+    private String mUserAgent;
+
+    public ContactPhotoManagerImpl(Context context) {
+        mContext = context;
+
+        final ActivityManager am = ((ActivityManager) context.getSystemService(
+                Context.ACTIVITY_SERVICE));
+
+        final float cacheSizeAdjustment = (am.isLowRamDevice()) ? 0.5f : 1.0f;
+
+        final int bitmapCacheSize = (int) (cacheSizeAdjustment * BITMAP_CACHE_SIZE);
+        mBitmapCache = new LruCache<Object, Bitmap>(bitmapCacheSize) {
+            @Override protected int sizeOf(Object key, Bitmap value) {
+                return value.getByteCount();
+            }
+
+            @Override protected void entryRemoved(
+                    boolean evicted, Object key, Bitmap oldValue, Bitmap newValue) {
+                if (DEBUG) dumpStats();
+            }
+        };
+        final int holderCacheSize = (int) (cacheSizeAdjustment * HOLDER_CACHE_SIZE);
+        mBitmapHolderCache = new LruCache<Object, BitmapHolder>(holderCacheSize) {
+            @Override protected int sizeOf(Object key, BitmapHolder value) {
+                return value.bytes != null ? value.bytes.length : 0;
+            }
+
+            @Override protected void entryRemoved(
+                    boolean evicted, Object key, BitmapHolder oldValue, BitmapHolder newValue) {
+                if (DEBUG) dumpStats();
+            }
+        };
+        mBitmapHolderCacheRedZoneBytes = (int) (holderCacheSize * 0.75);
+        Log.i(TAG, "Cache adj: " + cacheSizeAdjustment);
+        if (DEBUG) {
+            Log.d(TAG, "Cache size: " + btk(mBitmapHolderCache.maxSize())
+                    + " + " + btk(mBitmapCache.maxSize()));
+        }
+
+        mThumbnailSize = context.getResources().getDimensionPixelSize(
+                R.dimen.contact_browser_list_item_photo_size);
+
+        // Get a user agent string to use for URI photo requests.
+        mUserAgent = UserAgentGenerator.getUserAgent(context);
+        if (mUserAgent == null) {
+            mUserAgent = "";
+        }
+    }
+
+    /** Converts bytes to K bytes, rounding up.  Used only for debug log. */
+    private static String btk(int bytes) {
+        return ((bytes + 1023) / 1024) + "K";
+    }
+
+    private static final int safeDiv(int dividend, int divisor) {
+        return (divisor  == 0) ? 0 : (dividend / divisor);
+    }
+
+    /**
+     * Dump cache stats on logcat.
+     */
+    private void dumpStats() {
+        if (!DEBUG) return;
+        {
+            int numHolders = 0;
+            int rawBytes = 0;
+            int bitmapBytes = 0;
+            int numBitmaps = 0;
+            for (BitmapHolder h : mBitmapHolderCache.snapshot().values()) {
+                numHolders++;
+                if (h.bytes != null) {
+                    rawBytes += h.bytes.length;
+                }
+                Bitmap b = h.bitmapRef != null ? h.bitmapRef.get() : null;
+                if (b != null) {
+                    numBitmaps++;
+                    bitmapBytes += b.getByteCount();
+                }
+            }
+            Log.d(TAG, "L1: " + btk(rawBytes) + " + " + btk(bitmapBytes) + " = "
+                    + btk(rawBytes + bitmapBytes) + ", " + numHolders + " holders, "
+                    + numBitmaps + " bitmaps, avg: "
+                    + btk(safeDiv(rawBytes, numHolders))
+                    + "," + btk(safeDiv(bitmapBytes,numBitmaps)));
+            Log.d(TAG, "L1 Stats: " + mBitmapHolderCache.toString()
+                    + ", overwrite: fresh=" + mFreshCacheOverwrite.get()
+                    + " stale=" + mStaleCacheOverwrite.get());
+        }
+
+        {
+            int numBitmaps = 0;
+            int bitmapBytes = 0;
+            for (Bitmap b : mBitmapCache.snapshot().values()) {
+                numBitmaps++;
+                bitmapBytes += b.getByteCount();
+            }
+            Log.d(TAG, "L2: " + btk(bitmapBytes) + ", " + numBitmaps + " bitmaps"
+                    + ", avg: " + btk(safeDiv(bitmapBytes, numBitmaps)));
+            // We don't get from L2 cache, so L2 stats is meaningless.
+        }
+    }
+
+    @Override
+    public void onTrimMemory(int level) {
+        if (DEBUG) Log.d(TAG, "onTrimMemory: " + level);
+        if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
+            // Clear the caches.  Note all pending requests will be removed too.
+            clear();
+        }
+    }
+
+    @Override
+    public void preloadPhotosInBackground() {
+        ensureLoaderThread();
+        mLoaderThread.requestPreloading();
+    }
+
+    @Override
+    public void loadThumbnail(ImageView view, long photoId, boolean darkTheme, boolean isCircular,
+            DefaultImageRequest defaultImageRequest, DefaultImageProvider defaultProvider) {
+        if (photoId == 0) {
+            // No photo is needed
+            defaultProvider.applyDefaultImage(view, -1, darkTheme, defaultImageRequest);
+            mPendingRequests.remove(view);
+        } else {
+            if (DEBUG) Log.d(TAG, "loadPhoto request: " + photoId);
+            loadPhotoByIdOrUri(view, Request.createFromThumbnailId(photoId, darkTheme, isCircular,
+                    defaultProvider));
+        }
+    }
+
+    @Override
+    public void loadPhoto(ImageView view, Uri photoUri, int requestedExtent, boolean darkTheme,
+            boolean isCircular, DefaultImageRequest defaultImageRequest,
+            DefaultImageProvider defaultProvider) {
+        if (photoUri == null) {
+            // No photo is needed
+            defaultProvider.applyDefaultImage(view, requestedExtent, darkTheme,
+                    defaultImageRequest);
+            mPendingRequests.remove(view);
+        } else {
+            if (DEBUG) Log.d(TAG, "loadPhoto request: " + photoUri);
+            if (isDefaultImageUri(photoUri)) {
+                createAndApplyDefaultImageForUri(view, photoUri, requestedExtent, darkTheme,
+                        isCircular, defaultProvider);
+            } else {
+                loadPhotoByIdOrUri(view, Request.createFromUri(photoUri, requestedExtent,
+                        darkTheme, isCircular, defaultProvider));
+            }
+        }
+    }
+
+    private void createAndApplyDefaultImageForUri(ImageView view, Uri uri, int requestedExtent,
+            boolean darkTheme, boolean isCircular, DefaultImageProvider defaultProvider) {
+        DefaultImageRequest request = getDefaultImageRequestFromUri(uri);
+        request.isCircular = isCircular;
+        defaultProvider.applyDefaultImage(view, requestedExtent, darkTheme, request);
+    }
+
+    private void loadPhotoByIdOrUri(ImageView view, Request request) {
+        boolean loaded = loadCachedPhoto(view, request, false);
+        if (loaded) {
+            mPendingRequests.remove(view);
+        } else {
+            mPendingRequests.put(view, request);
+            if (!mPaused) {
+                // Send a request to start loading photos
+                requestLoading();
+            }
+        }
+    }
+
+    @Override
+    public void removePhoto(ImageView view) {
+        view.setImageDrawable(null);
+        mPendingRequests.remove(view);
+    }
+
+
+    /**
+     * Cancels pending requests to load photos asynchronously for views inside
+     * {@param fragmentRootView}. If {@param fragmentRootView} is null, cancels all requests.
+     */
+    @Override
+    public void cancelPendingRequests(View fragmentRootView) {
+        if (fragmentRootView == null) {
+            mPendingRequests.clear();
+            return;
+        }
+        final Iterator<Entry<ImageView, Request>> iterator = mPendingRequests.entrySet().iterator();
+        while (iterator.hasNext()) {
+            final ImageView imageView = iterator.next().getKey();
+            // If an ImageView is orphaned (currently scrap) or a child of fragmentRootView, then
+            // we can safely remove its request.
+            if (imageView.getParent() == null || isChildView(fragmentRootView, imageView)) {
+                iterator.remove();
+            }
+        }
+    }
+
+    private static boolean isChildView(View parent, View potentialChild) {
+        return potentialChild.getParent() != null && (potentialChild.getParent() == parent || (
+                potentialChild.getParent() instanceof ViewGroup && isChildView(parent,
+                        (ViewGroup) potentialChild.getParent())));
+    }
+
+    @Override
+    public void refreshCache() {
+        if (mBitmapHolderCacheAllUnfresh) {
+            if (DEBUG) Log.d(TAG, "refreshCache -- no fresh entries.");
+            return;
+        }
+        if (DEBUG) Log.d(TAG, "refreshCache");
+        mBitmapHolderCacheAllUnfresh = true;
+        for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
+            if (holder != BITMAP_UNAVAILABLE) {
+                holder.fresh = false;
+            }
+        }
+    }
+
+    /**
+     * Checks if the photo is present in cache.  If so, sets the photo on the view.
+     *
+     * @return false if the photo needs to be (re)loaded from the provider.
+     */
+    private boolean loadCachedPhoto(ImageView view, Request request, boolean fadeIn) {
+        BitmapHolder holder = mBitmapHolderCache.get(request.getKey());
+        if (holder == null) {
+            // The bitmap has not been loaded ==> show default avatar
+            request.applyDefaultImage(view, request.mIsCircular);
+            return false;
+        }
+
+        if (holder.bytes == null) {
+            request.applyDefaultImage(view, request.mIsCircular);
+            return holder.fresh;
+        }
+
+        Bitmap cachedBitmap = holder.bitmapRef == null ? null : holder.bitmapRef.get();
+        if (cachedBitmap == null) {
+            if (holder.bytes.length < 8 * 1024) {
+                // Small thumbnails are usually quick to inflate. Let's do that on the UI thread
+                inflateBitmap(holder, request.getRequestedExtent());
+                cachedBitmap = holder.bitmap;
+                if (cachedBitmap == null) return false;
+            } else {
+                // This is bigger data. Let's send that back to the Loader so that we can
+                // inflate this in the background
+                request.applyDefaultImage(view, request.mIsCircular);
+                return false;
+            }
+        }
+
+        final Drawable previousDrawable = view.getDrawable();
+        if (fadeIn && previousDrawable != null) {
+            final Drawable[] layers = new Drawable[2];
+            // Prevent cascade of TransitionDrawables.
+            if (previousDrawable instanceof TransitionDrawable) {
+                final TransitionDrawable previousTransitionDrawable =
+                        (TransitionDrawable) previousDrawable;
+                layers[0] = previousTransitionDrawable.getDrawable(
+                        previousTransitionDrawable.getNumberOfLayers() - 1);
+            } else {
+                layers[0] = previousDrawable;
+            }
+            layers[1] = getDrawableForBitmap(mContext.getResources(), cachedBitmap, request);
+            TransitionDrawable drawable = new TransitionDrawable(layers);
+            view.setImageDrawable(drawable);
+            drawable.startTransition(FADE_TRANSITION_DURATION);
+        } else {
+            view.setImageDrawable(
+                    getDrawableForBitmap(mContext.getResources(), cachedBitmap, request));
+        }
+
+        // Put the bitmap in the LRU cache. But only do this for images that are small enough
+        // (we require that at least six of those can be cached at the same time)
+        if (cachedBitmap.getByteCount() < mBitmapCache.maxSize() / 6) {
+            mBitmapCache.put(request.getKey(), cachedBitmap);
+        }
+
+        // Soften the reference
+        holder.bitmap = null;
+
+        return holder.fresh;
+    }
+
+    /**
+     * Given a bitmap, returns a drawable that is configured to display the bitmap based on the
+     * specified request.
+     */
+    private Drawable getDrawableForBitmap(Resources resources, Bitmap bitmap, Request request) {
+        if (request.mIsCircular) {
+            final RoundedBitmapDrawable drawable =
+                    RoundedBitmapDrawableFactory.create(resources, bitmap);
+            drawable.setAntiAlias(true);
+            drawable.setCornerRadius(bitmap.getHeight() / 2);
+            return drawable;
+        } else {
+            return new BitmapDrawable(resources, bitmap);
+        }
+    }
+
+    /**
+     * If necessary, decodes bytes stored in the holder to Bitmap.  As long as the
+     * bitmap is held either by {@link #mBitmapCache} or by a soft reference in
+     * the holder, it will not be necessary to decode the bitmap.
+     */
+    private static void inflateBitmap(BitmapHolder holder, int requestedExtent) {
+        final int sampleSize =
+                BitmapUtil.findOptimalSampleSize(holder.originalSmallerExtent, requestedExtent);
+        byte[] bytes = holder.bytes;
+        if (bytes == null || bytes.length == 0) {
+            return;
+        }
+
+        if (sampleSize == holder.decodedSampleSize) {
+            // Check the soft reference.  If will be retained if the bitmap is also
+            // in the LRU cache, so we don't need to check the LRU cache explicitly.
+            if (holder.bitmapRef != null) {
+                holder.bitmap = holder.bitmapRef.get();
+                if (holder.bitmap != null) {
+                    return;
+                }
+            }
+        }
+
+        try {
+            Bitmap bitmap = BitmapUtil.decodeBitmapFromBytes(bytes, sampleSize);
+
+            // TODO: As a temporary workaround while framework support is being added to
+            // clip non-square bitmaps into a perfect circle, manually crop the bitmap into
+            // into a square if it will be displayed as a thumbnail so that it can be cropped
+            // into a circle.
+            final int height = bitmap.getHeight();
+            final int width = bitmap.getWidth();
+
+            // The smaller dimension of a scaled bitmap can range from anywhere from 0 to just
+            // below twice the length of a thumbnail image due to the way we calculate the optimal
+            // sample size.
+            if (height != width && Math.min(height, width) <= mThumbnailSize * 2) {
+                final int dimension = Math.min(height, width);
+                bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension);
+            }
+            // make bitmap mutable and draw size onto it
+            if (DEBUG_SIZES) {
+                Bitmap original = bitmap;
+                bitmap = bitmap.copy(bitmap.getConfig(), true);
+                original.recycle();
+                Canvas canvas = new Canvas(bitmap);
+                Paint paint = new Paint();
+                paint.setTextSize(16);
+                paint.setColor(Color.BLUE);
+                paint.setStyle(Style.FILL);
+                canvas.drawRect(0.0f, 0.0f, 50.0f, 20.0f, paint);
+                paint.setColor(Color.WHITE);
+                paint.setAntiAlias(true);
+                canvas.drawText(bitmap.getWidth() + "/" + sampleSize, 0, 15, paint);
+            }
+
+            holder.decodedSampleSize = sampleSize;
+            holder.bitmap = bitmap;
+            holder.bitmapRef = new SoftReference<Bitmap>(bitmap);
+            if (DEBUG) {
+                Log.d(TAG, "inflateBitmap " + btk(bytes.length) + " -> "
+                        + bitmap.getWidth() + "x" + bitmap.getHeight()
+                        + ", " + btk(bitmap.getByteCount()));
+            }
+        } catch (OutOfMemoryError e) {
+            // Do nothing - the photo will appear to be missing
+        }
+    }
+
+    public void clear() {
+        if (DEBUG) Log.d(TAG, "clear");
+        mPendingRequests.clear();
+        mBitmapHolderCache.evictAll();
+        mBitmapCache.evictAll();
+    }
+
+    @Override
+    public void pause() {
+        mPaused = true;
+    }
+
+    @Override
+    public void resume() {
+        mPaused = false;
+        if (DEBUG) dumpStats();
+        if (!mPendingRequests.isEmpty()) {
+            requestLoading();
+        }
+    }
+
+    /**
+     * Sends a message to this thread itself to start loading images.  If the current
+     * view contains multiple image views, all of those image views will get a chance
+     * to request their respective photos before any of those requests are executed.
+     * This allows us to load images in bulk.
+     */
+    private void requestLoading() {
+        if (!mLoadingRequested) {
+            mLoadingRequested = true;
+            mMainThreadHandler.sendEmptyMessage(MESSAGE_REQUEST_LOADING);
+        }
+    }
+
+    /**
+     * Processes requests on the main thread.
+     */
+    @Override
+    public boolean handleMessage(Message msg) {
+        switch (msg.what) {
+            case MESSAGE_REQUEST_LOADING: {
+                mLoadingRequested = false;
+                if (!mPaused) {
+                    ensureLoaderThread();
+                    mLoaderThread.requestLoading();
+                }
+                return true;
+            }
+
+            case MESSAGE_PHOTOS_LOADED: {
+                if (!mPaused) {
+                    processLoadedImages();
+                }
+                if (DEBUG) dumpStats();
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public void ensureLoaderThread() {
+        if (mLoaderThread == null) {
+            mLoaderThread = new LoaderThread(mContext.getContentResolver());
+            mLoaderThread.start();
+        }
+    }
+
+    /**
+     * Goes over pending loading requests and displays loaded photos.  If some of the
+     * photos still haven't been loaded, sends another request for image loading.
+     */
+    private void processLoadedImages() {
+        final Iterator<Entry<ImageView, Request>> iterator = mPendingRequests.entrySet().iterator();
+        while (iterator.hasNext()) {
+            final Entry<ImageView, Request> entry = iterator.next();
+            // TODO: Temporarily disable contact photo fading in, until issues with
+            // RoundedBitmapDrawables overlapping the default image drawables are resolved.
+            final boolean loaded = loadCachedPhoto(entry.getKey(), entry.getValue(), false);
+            if (loaded) {
+                iterator.remove();
+            }
+        }
+
+        softenCache();
+
+        if (!mPendingRequests.isEmpty()) {
+            requestLoading();
+        }
+    }
+
+    /**
+     * Removes strong references to loaded bitmaps to allow them to be garbage collected
+     * if needed.  Some of the bitmaps will still be retained by {@link #mBitmapCache}.
+     */
+    private void softenCache() {
+        for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
+            holder.bitmap = null;
+        }
+    }
+
+    /**
+     * Stores the supplied bitmap in cache.
+     */
+    private void cacheBitmap(Object key, byte[] bytes, boolean preloading, int requestedExtent) {
+        if (DEBUG) {
+            BitmapHolder prev = mBitmapHolderCache.get(key);
+            if (prev != null && prev.bytes != null) {
+                Log.d(TAG, "Overwriting cache: key=" + key + (prev.fresh ? " FRESH" : " stale"));
+                if (prev.fresh) {
+                    mFreshCacheOverwrite.incrementAndGet();
+                } else {
+                    mStaleCacheOverwrite.incrementAndGet();
+                }
+            }
+            Log.d(TAG, "Caching data: key=" + key + ", " +
+                    (bytes == null ? "<null>" : btk(bytes.length)));
+        }
+        BitmapHolder holder = new BitmapHolder(bytes,
+                bytes == null ? -1 : BitmapUtil.getSmallerExtentFromBytes(bytes));
+
+        // Unless this image is being preloaded, decode it right away while
+        // we are still on the background thread.
+        if (!preloading) {
+            inflateBitmap(holder, requestedExtent);
+        }
+
+        if (bytes != null) {
+            mBitmapHolderCache.put(key, holder);
+            if (mBitmapHolderCache.get(key) != holder) {
+                Log.w(TAG, "Bitmap too big to fit in cache.");
+                mBitmapHolderCache.put(key, BITMAP_UNAVAILABLE);
+            }
+        } else {
+            mBitmapHolderCache.put(key, BITMAP_UNAVAILABLE);
+        }
+
+        mBitmapHolderCacheAllUnfresh = false;
+    }
+
+    @Override
+    public void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes) {
+        final int smallerExtent = Math.min(bitmap.getWidth(), bitmap.getHeight());
+        // We can pretend here that the extent of the photo was the size that we originally
+        // requested
+        Request request = Request.createFromUri(photoUri, smallerExtent, false /* darkTheme */,
+                false /* isCircular */ , DEFAULT_AVATAR);
+        BitmapHolder holder = new BitmapHolder(photoBytes, smallerExtent);
+        holder.bitmapRef = new SoftReference<Bitmap>(bitmap);
+        mBitmapHolderCache.put(request.getKey(), holder);
+        mBitmapHolderCacheAllUnfresh = false;
+        mBitmapCache.put(request.getKey(), bitmap);
+    }
+
+    /**
+     * Populates an array of photo IDs that need to be loaded. Also decodes bitmaps that we have
+     * already loaded
+     */
+    private void obtainPhotoIdsAndUrisToLoad(Set<Long> photoIds,
+            Set<String> photoIdsAsStrings, Set<Request> uris) {
+        photoIds.clear();
+        photoIdsAsStrings.clear();
+        uris.clear();
+
+        boolean jpegsDecoded = false;
+
+        /*
+         * Since the call is made from the loader thread, the map could be
+         * changing during the iteration. That's not really a problem:
+         * ConcurrentHashMap will allow those changes to happen without throwing
+         * exceptions. Since we may miss some requests in the situation of
+         * concurrent change, we will need to check the map again once loading
+         * is complete.
+         */
+        Iterator<Request> iterator = mPendingRequests.values().iterator();
+        while (iterator.hasNext()) {
+            Request request = iterator.next();
+            final BitmapHolder holder = mBitmapHolderCache.get(request.getKey());
+            if (holder == BITMAP_UNAVAILABLE) {
+                continue;
+            }
+            if (holder != null && holder.bytes != null && holder.fresh &&
+                    (holder.bitmapRef == null || holder.bitmapRef.get() == null)) {
+                // This was previously loaded but we don't currently have the inflated Bitmap
+                inflateBitmap(holder, request.getRequestedExtent());
+                jpegsDecoded = true;
+            } else {
+                if (holder == null || !holder.fresh) {
+                    if (request.isUriRequest()) {
+                        uris.add(request);
+                    } else {
+                        photoIds.add(request.getId());
+                        photoIdsAsStrings.add(String.valueOf(request.mId));
+                    }
+                }
+            }
+        }
+
+        if (jpegsDecoded) mMainThreadHandler.sendEmptyMessage(MESSAGE_PHOTOS_LOADED);
+    }
+
+    /**
+     * The thread that performs loading of photos from the database.
+     */
+    private class LoaderThread extends HandlerThread implements Callback {
+        private static final int BUFFER_SIZE = 1024*16;
+        private static final int MESSAGE_PRELOAD_PHOTOS = 0;
+        private static final int MESSAGE_LOAD_PHOTOS = 1;
+
+        /**
+         * A pause between preload batches that yields to the UI thread.
+         */
+        private static final int PHOTO_PRELOAD_DELAY = 1000;
+
+        /**
+         * Number of photos to preload per batch.
+         */
+        private static final int PRELOAD_BATCH = 25;
+
+        /**
+         * Maximum number of photos to preload.  If the cache size is 2Mb and
+         * the expected average size of a photo is 4kb, then this number should be 2Mb/4kb = 500.
+         */
+        private static final int MAX_PHOTOS_TO_PRELOAD = 100;
+
+        private final ContentResolver mResolver;
+        private final StringBuilder mStringBuilder = new StringBuilder();
+        private final Set<Long> mPhotoIds = Sets.newHashSet();
+        private final Set<String> mPhotoIdsAsStrings = Sets.newHashSet();
+        private final Set<Request> mPhotoUris = Sets.newHashSet();
+        private final List<Long> mPreloadPhotoIds = Lists.newArrayList();
+
+        private Handler mLoaderThreadHandler;
+        private byte mBuffer[];
+
+        private static final int PRELOAD_STATUS_NOT_STARTED = 0;
+        private static final int PRELOAD_STATUS_IN_PROGRESS = 1;
+        private static final int PRELOAD_STATUS_DONE = 2;
+
+        private int mPreloadStatus = PRELOAD_STATUS_NOT_STARTED;
+
+        public LoaderThread(ContentResolver resolver) {
+            super(LOADER_THREAD_NAME);
+            mResolver = resolver;
+        }
+
+        public void ensureHandler() {
+            if (mLoaderThreadHandler == null) {
+                mLoaderThreadHandler = new Handler(getLooper(), this);
+            }
+        }
+
+        /**
+         * Kicks off preloading of the next batch of photos on the background thread.
+         * Preloading will happen after a delay: we want to yield to the UI thread
+         * as much as possible.
+         * <p>
+         * If preloading is already complete, does nothing.
+         */
+        public void requestPreloading() {
+            if (mPreloadStatus == PRELOAD_STATUS_DONE) {
+                return;
+            }
+
+            ensureHandler();
+            if (mLoaderThreadHandler.hasMessages(MESSAGE_LOAD_PHOTOS)) {
+                return;
+            }
+
+            mLoaderThreadHandler.sendEmptyMessageDelayed(
+                    MESSAGE_PRELOAD_PHOTOS, PHOTO_PRELOAD_DELAY);
+        }
+
+        /**
+         * Sends a message to this thread to load requested photos.  Cancels a preloading
+         * request, if any: we don't want preloading to impede loading of the photos
+         * we need to display now.
+         */
+        public void requestLoading() {
+            ensureHandler();
+            mLoaderThreadHandler.removeMessages(MESSAGE_PRELOAD_PHOTOS);
+            mLoaderThreadHandler.sendEmptyMessage(MESSAGE_LOAD_PHOTOS);
+        }
+
+        /**
+         * Receives the above message, loads photos and then sends a message
+         * to the main thread to process them.
+         */
+        @Override
+        public boolean handleMessage(Message msg) {
+            switch (msg.what) {
+                case MESSAGE_PRELOAD_PHOTOS:
+                    preloadPhotosInBackground();
+                    break;
+                case MESSAGE_LOAD_PHOTOS:
+                    loadPhotosInBackground();
+                    break;
+            }
+            return true;
+        }
+
+        /**
+         * The first time it is called, figures out which photos need to be preloaded.
+         * Each subsequent call preloads the next batch of photos and requests
+         * another cycle of preloading after a delay.  The whole process ends when
+         * we either run out of photos to preload or fill up cache.
+         */
+        private void preloadPhotosInBackground() {
+            if (mPreloadStatus == PRELOAD_STATUS_DONE) {
+                return;
+            }
+
+            if (mPreloadStatus == PRELOAD_STATUS_NOT_STARTED) {
+                queryPhotosForPreload();
+                if (mPreloadPhotoIds.isEmpty()) {
+                    mPreloadStatus = PRELOAD_STATUS_DONE;
+                } else {
+                    mPreloadStatus = PRELOAD_STATUS_IN_PROGRESS;
+                }
+                requestPreloading();
+                return;
+            }
+
+            if (mBitmapHolderCache.size() > mBitmapHolderCacheRedZoneBytes) {
+                mPreloadStatus = PRELOAD_STATUS_DONE;
+                return;
+            }
+
+            mPhotoIds.clear();
+            mPhotoIdsAsStrings.clear();
+
+            int count = 0;
+            int preloadSize = mPreloadPhotoIds.size();
+            while(preloadSize > 0 && mPhotoIds.size() < PRELOAD_BATCH) {
+                preloadSize--;
+                count++;
+                Long photoId = mPreloadPhotoIds.get(preloadSize);
+                mPhotoIds.add(photoId);
+                mPhotoIdsAsStrings.add(photoId.toString());
+                mPreloadPhotoIds.remove(preloadSize);
+            }
+
+            loadThumbnails(true);
+
+            if (preloadSize == 0) {
+                mPreloadStatus = PRELOAD_STATUS_DONE;
+            }
+
+            Log.v(TAG, "Preloaded " + count + " photos.  Cached bytes: "
+                    + mBitmapHolderCache.size());
+
+            requestPreloading();
+        }
+
+        private void queryPhotosForPreload() {
+            Cursor cursor = null;
+            try {
+                Uri uri = Contacts.CONTENT_URI.buildUpon().appendQueryParameter(
+                        ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
+                        .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
+                                String.valueOf(MAX_PHOTOS_TO_PRELOAD))
+                        .build();
+                cursor = mResolver.query(uri, new String[] { Contacts.PHOTO_ID },
+                        Contacts.PHOTO_ID + " NOT NULL AND " + Contacts.PHOTO_ID + "!=0",
+                        null,
+                        Contacts.STARRED + " DESC, " + Contacts.LAST_TIME_CONTACTED + " DESC");
+
+                if (cursor != null) {
+                    while (cursor.moveToNext()) {
+                        // Insert them in reverse order, because we will be taking
+                        // them from the end of the list for loading.
+                        mPreloadPhotoIds.add(0, cursor.getLong(0));
+                    }
+                }
+            } finally {
+                if (cursor != null) {
+                    cursor.close();
+                }
+            }
+        }
+
+        private void loadPhotosInBackground() {
+            if (!PermissionsUtil.hasPermission(mContext,
+                    android.Manifest.permission.READ_CONTACTS)) {
+                return;
+            }
+            obtainPhotoIdsAndUrisToLoad(mPhotoIds, mPhotoIdsAsStrings, mPhotoUris);
+            loadThumbnails(false);
+            loadUriBasedPhotos();
+            requestPreloading();
+        }
+
+        /** Loads thumbnail photos with ids */
+        private void loadThumbnails(boolean preloading) {
+            if (mPhotoIds.isEmpty()) {
+                return;
+            }
+
+            // Remove loaded photos from the preload queue: we don't want
+            // the preloading process to load them again.
+            if (!preloading && mPreloadStatus == PRELOAD_STATUS_IN_PROGRESS) {
+                for (Long id : mPhotoIds) {
+                    mPreloadPhotoIds.remove(id);
+                }
+                if (mPreloadPhotoIds.isEmpty()) {
+                    mPreloadStatus = PRELOAD_STATUS_DONE;
+                }
+            }
+
+            mStringBuilder.setLength(0);
+            mStringBuilder.append(Photo._ID + " IN(");
+            for (int i = 0; i < mPhotoIds.size(); i++) {
+                if (i != 0) {
+                    mStringBuilder.append(',');
+                }
+                mStringBuilder.append('?');
+            }
+            mStringBuilder.append(')');
+
+            Cursor cursor = null;
+            try {
+                if (DEBUG) Log.d(TAG, "Loading " + TextUtils.join(",", mPhotoIdsAsStrings));
+                cursor = mResolver.query(Data.CONTENT_URI,
+                        COLUMNS,
+                        mStringBuilder.toString(),
+                        mPhotoIdsAsStrings.toArray(EMPTY_STRING_ARRAY),
+                        null);
+
+                if (cursor != null) {
+                    while (cursor.moveToNext()) {
+                        Long id = cursor.getLong(0);
+                        byte[] bytes = cursor.getBlob(1);
+                        cacheBitmap(id, bytes, preloading, -1);
+                        mPhotoIds.remove(id);
+                    }
+                }
+            } finally {
+                if (cursor != null) {
+                    cursor.close();
+                }
+            }
+
+            // Remaining photos were not found in the contacts database (but might be in profile).
+            for (Long id : mPhotoIds) {
+                if (ContactsContract.isProfileId(id)) {
+                    Cursor profileCursor = null;
+                    try {
+                        profileCursor = mResolver.query(
+                                ContentUris.withAppendedId(Data.CONTENT_URI, id),
+                                COLUMNS, null, null, null);
+                        if (profileCursor != null && profileCursor.moveToFirst()) {
+                            cacheBitmap(profileCursor.getLong(0), profileCursor.getBlob(1),
+                                    preloading, -1);
+                        } else {
+                            // Couldn't load a photo this way either.
+                            cacheBitmap(id, null, preloading, -1);
+                        }
+                    } finally {
+                        if (profileCursor != null) {
+                            profileCursor.close();
+                        }
+                    }
+                } else {
+                    // Not a profile photo and not found - mark the cache accordingly
+                    cacheBitmap(id, null, preloading, -1);
+                }
+            }
+
+            mMainThreadHandler.sendEmptyMessage(MESSAGE_PHOTOS_LOADED);
+        }
+
+        /**
+         * Loads photos referenced with Uris. Those can be remote thumbnails
+         * (from directory searches), display photos etc
+         */
+        private void loadUriBasedPhotos() {
+            for (Request uriRequest : mPhotoUris) {
+                // Keep the original URI and use this to key into the cache.  Failure to do so will
+                // result in an image being continually reloaded into cache if the original URI
+                // has a contact type encodedFragment (eg nearby places business photo URLs).
+                Uri originalUri = uriRequest.getUri();
+
+                // Strip off the "contact type" we added to the URI to ensure it was identifiable as
+                // a business photo -- there is no need to pass this on to the server.
+                Uri uri = ContactPhotoManager.removeContactType(originalUri);
+
+                if (mBuffer == null) {
+                    mBuffer = new byte[BUFFER_SIZE];
+                }
+                try {
+                    if (DEBUG) Log.d(TAG, "Loading " + uri);
+                    final String scheme = uri.getScheme();
+                    InputStream is = null;
+                    if (scheme.equals("http") || scheme.equals("https")) {
+                        TrafficStats.setThreadStatsTag(TrafficStatsTags.CONTACT_PHOTO_DOWNLOAD_TAG);
+                        final HttpURLConnection connection =
+                                (HttpURLConnection) new URL(uri.toString()).openConnection();
+
+                        // Include the user agent if it is specified.
+                        if (!TextUtils.isEmpty(mUserAgent)) {
+                            connection.setRequestProperty("User-Agent", mUserAgent);
+                        }
+                        try {
+                            is = connection.getInputStream();
+                        } catch (IOException e) {
+                            connection.disconnect();
+                            is = null;
+                        }
+                        TrafficStats.clearThreadStatsTag();
+                    } else {
+                        is = mResolver.openInputStream(uri);
+                    }
+                    if (is != null) {
+                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                        try {
+                            int size;
+                            while ((size = is.read(mBuffer)) != -1) {
+                                baos.write(mBuffer, 0, size);
+                            }
+                        } finally {
+                            is.close();
+                        }
+                        cacheBitmap(originalUri, baos.toByteArray(), false,
+                                uriRequest.getRequestedExtent());
+                        mMainThreadHandler.sendEmptyMessage(MESSAGE_PHOTOS_LOADED);
+                    } else {
+                        Log.v(TAG, "Cannot load photo " + uri);
+                        cacheBitmap(originalUri, null, false, uriRequest.getRequestedExtent());
+                    }
+                } catch (final Exception | OutOfMemoryError ex) {
+                    Log.v(TAG, "Cannot load photo " + uri, ex);
+                    cacheBitmap(originalUri, null, false, uriRequest.getRequestedExtent());
+                }
+            }
+        }
+    }
+
+    /**
+     * A holder for either a Uri or an id and a flag whether this was requested for the dark or
+     * light theme
+     */
+    private static final class Request {
+        private final long mId;
+        private final Uri mUri;
+        private final boolean mDarkTheme;
+        private final int mRequestedExtent;
+        private final DefaultImageProvider mDefaultProvider;
+        /**
+         * Whether or not the contact photo is to be displayed as a circle
+         */
+        private final boolean mIsCircular;
+
+        private Request(long id, Uri uri, int requestedExtent, boolean darkTheme,
+                boolean isCircular, DefaultImageProvider defaultProvider) {
+            mId = id;
+            mUri = uri;
+            mDarkTheme = darkTheme;
+            mIsCircular = isCircular;
+            mRequestedExtent = requestedExtent;
+            mDefaultProvider = defaultProvider;
+        }
+
+        public static Request createFromThumbnailId(long id, boolean darkTheme, boolean isCircular,
+                DefaultImageProvider defaultProvider) {
+            return new Request(id, null /* no URI */, -1, darkTheme, isCircular, defaultProvider);
+        }
+
+        public static Request createFromUri(Uri uri, int requestedExtent, boolean darkTheme,
+                boolean isCircular, DefaultImageProvider defaultProvider) {
+            return new Request(0 /* no ID */, uri, requestedExtent, darkTheme, isCircular,
+                    defaultProvider);
+        }
+
+        public boolean isUriRequest() {
+            return mUri != null;
+        }
+
+        public Uri getUri() {
+            return mUri;
+        }
+
+        public long getId() {
+            return mId;
+        }
+
+        public int getRequestedExtent() {
+            return mRequestedExtent;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + (int) (mId ^ (mId >>> 32));
+            result = prime * result + mRequestedExtent;
+            result = prime * result + ((mUri == null) ? 0 : mUri.hashCode());
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) return true;
+            if (obj == null) return false;
+            if (getClass() != obj.getClass()) return false;
+            final Request that = (Request) obj;
+            if (mId != that.mId) return false;
+            if (mRequestedExtent != that.mRequestedExtent) return false;
+            if (!UriUtils.areEqual(mUri, that.mUri)) return false;
+            // Don't compare equality of mDarkTheme because it is only used in the default contact
+            // photo case. When the contact does have a photo, the contact photo is the same
+            // regardless of mDarkTheme, so we shouldn't need to put the photo request on the queue
+            // twice.
+            return true;
+        }
+
+        public Object getKey() {
+            return mUri == null ? mId : mUri;
+        }
+
+        /**
+         * Applies the default image to the current view. If the request is URI-based, looks for
+         * the contact type encoded fragment to determine if this is a request for a business photo,
+         * in which case we will load the default business photo.
+         *
+         * @param view The current image view to apply the image to.
+         * @param isCircular Whether the image is circular or not.
+         */
+        public void applyDefaultImage(ImageView view, boolean isCircular) {
+            final DefaultImageRequest request;
+
+            if (isCircular) {
+                request = ContactPhotoManager.isBusinessContactUri(mUri)
+                        ? DefaultImageRequest.EMPTY_CIRCULAR_BUSINESS_IMAGE_REQUEST
+                        : DefaultImageRequest.EMPTY_CIRCULAR_DEFAULT_IMAGE_REQUEST;
+            } else {
+                request = ContactPhotoManager.isBusinessContactUri(mUri)
+                        ? DefaultImageRequest.EMPTY_DEFAULT_BUSINESS_IMAGE_REQUEST
+                        : DefaultImageRequest.EMPTY_DEFAULT_IMAGE_REQUEST;
+            }
+            mDefaultProvider.applyDefaultImage(view, mRequestedExtent, mDarkTheme, request);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/ContactPresenceIconUtil.java b/src/com/android/contacts/common/ContactPresenceIconUtil.java
new file mode 100644
index 0000000..2f4c9ee
--- /dev/null
+++ b/src/com/android/contacts/common/ContactPresenceIconUtil.java
@@ -0,0 +1,48 @@
+/*
+ * 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.contacts.common;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract.StatusUpdates;
+
+/**
+ * Define the contact present show policy in Contacts
+ */
+public class ContactPresenceIconUtil {
+    /**
+     * Get the presence icon resource according the status.
+     *
+     * @return null means don't show the status icon.
+     */
+    public static Drawable getPresenceIcon (Context context, int status) {
+        // We don't show the offline status in Contacts
+        switch(status) {
+            case StatusUpdates.AVAILABLE:
+            case StatusUpdates.IDLE:
+            case StatusUpdates.AWAY:
+            case StatusUpdates.DO_NOT_DISTURB:
+            case StatusUpdates.INVISIBLE:
+                return context.getResources().getDrawable(
+                        StatusUpdates.getPresenceIconResourceId(status));
+            case StatusUpdates.OFFLINE:
+            // The undefined status is treated as OFFLINE in getPresenceIconResourceId();
+            default:
+                return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/ContactStatusUtil.java b/src/com/android/contacts/common/ContactStatusUtil.java
new file mode 100644
index 0000000..a7d1925
--- /dev/null
+++ b/src/com/android/contacts/common/ContactStatusUtil.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 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.contacts.common;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.ContactsContract.StatusUpdates;
+
+/**
+ * Provides static function to get default contact status message.
+ */
+public class ContactStatusUtil {
+
+    private static final String TAG = "ContactStatusUtil";
+
+    public static String getStatusString(Context context, int presence) {
+        Resources resources = context.getResources();
+        switch (presence) {
+            case StatusUpdates.AVAILABLE:
+                return resources.getString(R.string.status_available);
+            case StatusUpdates.IDLE:
+            case StatusUpdates.AWAY:
+                return resources.getString(R.string.status_away);
+            case StatusUpdates.DO_NOT_DISTURB:
+                return resources.getString(R.string.status_busy);
+            case StatusUpdates.OFFLINE:
+            case StatusUpdates.INVISIBLE:
+            default:
+                return null;
+        }
+    }
+
+}
diff --git a/src/com/android/contacts/common/ContactTileLoaderFactory.java b/src/com/android/contacts/common/ContactTileLoaderFactory.java
new file mode 100644
index 0000000..f75950e
--- /dev/null
+++ b/src/com/android/contacts/common/ContactTileLoaderFactory.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2011 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.contacts.common;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+
+/**
+ * Used to create {@link CursorLoader}s to load different groups of
+ * {@link com.android.contacts.list.ContactTileView}.
+ */
+public final class ContactTileLoaderFactory {
+
+    public final static int CONTACT_ID = 0;
+    public final static int DISPLAY_NAME = 1;
+    public final static int STARRED = 2;
+    public final static int PHOTO_URI = 3;
+    public final static int LOOKUP_KEY = 4;
+    public final static int CONTACT_PRESENCE = 5;
+    public final static int CONTACT_STATUS = 6;
+
+    // Only used for StrequentPhoneOnlyLoader
+    public final static int PHONE_NUMBER = 5;
+    public final static int PHONE_NUMBER_TYPE = 6;
+    public final static int PHONE_NUMBER_LABEL = 7;
+    public final static int IS_DEFAULT_NUMBER = 8;
+    public final static int PINNED = 9;
+    // The _ID field returned for strequent items actually contains data._id instead of
+    // contacts._id because the query is performed on the data table. In order to obtain the
+    // contact id for strequent items, we thus have to use Phone.contact_id instead.
+    public final static int CONTACT_ID_FOR_DATA = 10;
+    public final static int DISPLAY_NAME_ALTERNATIVE = 11;
+
+    private static final String[] COLUMNS = new String[] {
+        Contacts._ID, // ..........................................0
+        Contacts.DISPLAY_NAME, // .................................1
+        Contacts.STARRED, // ......................................2
+        Contacts.PHOTO_URI, // ....................................3
+        Contacts.LOOKUP_KEY, // ...................................4
+        Contacts.CONTACT_PRESENCE, // .............................5
+        Contacts.CONTACT_STATUS, // ...............................6
+    };
+
+    /**
+     * Projection used for the {@link Contacts#CONTENT_STREQUENT_URI}
+     * query when {@link ContactsContract#STREQUENT_PHONE_ONLY} flag
+     * is set to true. The main difference is the lack of presence
+     * and status data and the addition of phone number and label.
+     */
+    @VisibleForTesting
+    public static final String[] COLUMNS_PHONE_ONLY = new String[] {
+        Contacts._ID, // ..........................................0
+        Contacts.DISPLAY_NAME_PRIMARY, // .........................1
+        Contacts.STARRED, // ......................................2
+        Contacts.PHOTO_URI, // ....................................3
+        Contacts.LOOKUP_KEY, // ...................................4
+        Phone.NUMBER, // ..........................................5
+        Phone.TYPE, // ............................................6
+        Phone.LABEL, // ...........................................7
+        Phone.IS_SUPER_PRIMARY, //.................................8
+        Contacts.PINNED, // .......................................9
+        Phone.CONTACT_ID, //.......................................10
+        Contacts.DISPLAY_NAME_ALTERNATIVE, // .....................11
+    };
+
+    private static final String STARRED_ORDER = Contacts.DISPLAY_NAME+" COLLATE NOCASE ASC";
+
+    public static CursorLoader createStrequentLoader(Context context) {
+        return new CursorLoader(context, Contacts.CONTENT_STREQUENT_URI, COLUMNS, null, null,
+                STARRED_ORDER);
+    }
+
+    public static CursorLoader createStrequentPhoneOnlyLoader(Context context) {
+        Uri uri = Contacts.CONTENT_STREQUENT_URI.buildUpon()
+                .appendQueryParameter(ContactsContract.STREQUENT_PHONE_ONLY, "true").build();
+
+        return new CursorLoader(context, uri, COLUMNS_PHONE_ONLY, null, null, null);
+    }
+
+    public static CursorLoader createStarredLoader(Context context) {
+        return new CursorLoader(context, Contacts.CONTENT_URI, COLUMNS, Contacts.STARRED + "=?",
+                new String[]{"1"},  STARRED_ORDER);
+    }
+
+    public static CursorLoader createFrequentLoader(Context context) {
+        return new CursorLoader(context, Contacts.CONTENT_FREQUENT_URI, COLUMNS,
+                 Contacts.STARRED + "=?", new String[]{"0"}, null);
+    }
+}
diff --git a/src/com/android/contacts/common/ContactsUtils.java b/src/com/android/contacts/common/ContactsUtils.java
new file mode 100644
index 0000000..38fdbf2
--- /dev/null
+++ b/src/com/android/contacts/common/ContactsUtils.java
@@ -0,0 +1,280 @@
+/*
+ * 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.contacts.common;
+
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.support.annotation.IntDef;
+import android.provider.ContactsContract.DisplayPhoto;
+import android.text.TextUtils;
+import android.util.Pair;
+
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.dataitem.ImDataItem;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.compat.ContactsCompat;
+import com.android.contacts.common.compat.DirectoryCompat;
+import com.android.contacts.common.model.AccountTypeManager;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
+public class ContactsUtils {
+    private static final String TAG = "ContactsUtils";
+
+    // Telecomm related schemes are in CallUtil
+    public static final String SCHEME_IMTO = "imto";
+    public static final String SCHEME_MAILTO = "mailto";
+    public static final String SCHEME_SMSTO = "smsto";
+
+    private static final int DEFAULT_THUMBNAIL_SIZE = 96;
+
+    private static int sThumbnailSize = -1;
+
+    public static final boolean FLAG_N_FEATURE = Build.VERSION.SDK_INT >= 24;
+
+    // TODO find a proper place for the canonical version of these
+    public interface ProviderNames {
+        String YAHOO = "Yahoo";
+        String GTALK = "GTalk";
+        String MSN = "MSN";
+        String ICQ = "ICQ";
+        String AIM = "AIM";
+        String XMPP = "XMPP";
+        String JABBER = "JABBER";
+        String SKYPE = "SKYPE";
+        String QQ = "QQ";
+    }
+
+    /**
+     * This looks up the provider name defined in
+     * ProviderNames from the predefined IM protocol id.
+     * This is used for interacting with the IM application.
+     *
+     * @param protocol the protocol ID
+     * @return the provider name the IM app uses for the given protocol, or null if no
+     * provider is defined for the given protocol
+     * @hide
+     */
+    public static String lookupProviderNameFromId(int protocol) {
+        switch (protocol) {
+            case Im.PROTOCOL_GOOGLE_TALK:
+                return ProviderNames.GTALK;
+            case Im.PROTOCOL_AIM:
+                return ProviderNames.AIM;
+            case Im.PROTOCOL_MSN:
+                return ProviderNames.MSN;
+            case Im.PROTOCOL_YAHOO:
+                return ProviderNames.YAHOO;
+            case Im.PROTOCOL_ICQ:
+                return ProviderNames.ICQ;
+            case Im.PROTOCOL_JABBER:
+                return ProviderNames.JABBER;
+            case Im.PROTOCOL_SKYPE:
+                return ProviderNames.SKYPE;
+            case Im.PROTOCOL_QQ:
+                return ProviderNames.QQ;
+        }
+        return null;
+    }
+
+
+    public static final long USER_TYPE_CURRENT = 0;
+    public static final long USER_TYPE_WORK = 1;
+
+    /**
+     * UserType indicates the user type of the contact. If the contact is from Work User (Work
+     * Profile in Android Multi-User System), it's {@link #USER_TYPE_WORK}, otherwise,
+     * {@link #USER_TYPE_CURRENT}. Please note that current user can be in work profile, where the
+     * dialer is running inside Work Profile.
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({USER_TYPE_CURRENT, USER_TYPE_WORK})
+    public @interface UserType {}
+
+    /**
+     * Test if the given {@link CharSequence} contains any graphic characters,
+     * first checking {@link TextUtils#isEmpty(CharSequence)} to handle null.
+     */
+    public static boolean isGraphic(CharSequence str) {
+        return !TextUtils.isEmpty(str) && TextUtils.isGraphic(str);
+    }
+
+    /**
+     * Returns true if two objects are considered equal.  Two null references are equal here.
+     */
+    @NeededForTesting
+    public static boolean areObjectsEqual(Object a, Object b) {
+        return a == b || (a != null && a.equals(b));
+    }
+
+    /**
+     * Returns true if two {@link Intent}s are both null, or have the same action.
+     */
+    public static final boolean areIntentActionEqual(Intent a, Intent b) {
+        if (a == b) {
+            return true;
+        }
+        if (a == null || b == null) {
+            return false;
+        }
+        return TextUtils.equals(a.getAction(), b.getAction());
+    }
+
+    public static boolean areGroupWritableAccountsAvailable(Context context) {
+        final List<AccountWithDataSet> accounts =
+                AccountTypeManager.getInstance(context).getGroupWritableAccounts();
+        return !accounts.isEmpty();
+    }
+
+    /**
+     * Returns the size (width and height) of thumbnail pictures as configured in the provider. This
+     * can safely be called from the UI thread, as the provider can serve this without performing
+     * a database access
+     */
+    public static int getThumbnailSize(Context context) {
+        if (sThumbnailSize == -1) {
+            final Cursor c = context.getContentResolver().query(
+                    DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI,
+                    new String[] { DisplayPhoto.THUMBNAIL_MAX_DIM }, null, null, null);
+            if (c != null) {
+                try {
+                    if (c.moveToFirst()) {
+                        sThumbnailSize = c.getInt(0);
+                    }
+                } finally {
+                    c.close();
+                }
+            }
+        }
+        return sThumbnailSize != -1 ? sThumbnailSize : DEFAULT_THUMBNAIL_SIZE;
+    }
+
+    private static Intent getCustomImIntent(ImDataItem im, int protocol) {
+        String host = im.getCustomProtocol();
+        final String data = im.getData();
+        if (TextUtils.isEmpty(data)) {
+            return null;
+        }
+        if (protocol != Im.PROTOCOL_CUSTOM) {
+            // Try bringing in a well-known host for specific protocols
+            host = ContactsUtils.lookupProviderNameFromId(protocol);
+        }
+        if (TextUtils.isEmpty(host)) {
+            return null;
+        }
+        final String authority = host.toLowerCase();
+        final Uri imUri = new Uri.Builder().scheme(SCHEME_IMTO).authority(
+                authority).appendPath(data).build();
+        final Intent intent = new Intent(Intent.ACTION_SENDTO, imUri);
+        return intent;
+    }
+
+    /**
+     * Returns the proper Intent for an ImDatItem. If available, a secondary intent is stored
+     * in the second Pair slot
+     */
+    public static Pair<Intent, Intent> buildImIntent(Context context, ImDataItem im) {
+        Intent intent = null;
+        Intent secondaryIntent = null;
+        final boolean isEmail = im.isCreatedFromEmail();
+
+        if (!isEmail && !im.isProtocolValid()) {
+            return new Pair<>(null, null);
+        }
+
+        final String data = im.getData();
+        if (TextUtils.isEmpty(data)) {
+            return new Pair<>(null, null);
+        }
+
+        final int protocol = isEmail ? Im.PROTOCOL_GOOGLE_TALK : im.getProtocol();
+
+        if (protocol == Im.PROTOCOL_GOOGLE_TALK) {
+            final int chatCapability = im.getChatCapability();
+            if ((chatCapability & Im.CAPABILITY_HAS_CAMERA) != 0) {
+                intent = new Intent(Intent.ACTION_SENDTO,
+                                Uri.parse("xmpp:" + data + "?message"));
+                secondaryIntent = new Intent(Intent.ACTION_SENDTO,
+                        Uri.parse("xmpp:" + data + "?call"));
+            } else if ((chatCapability & Im.CAPABILITY_HAS_VOICE) != 0) {
+                // Allow Talking and Texting
+                intent =
+                    new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message"));
+                secondaryIntent =
+                    new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?call"));
+            } else {
+                intent =
+                    new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message"));
+            }
+        } else {
+            // Build an IM Intent
+            intent = getCustomImIntent(im, protocol);
+        }
+        return new Pair<>(intent, secondaryIntent);
+    }
+
+    /**
+     * Determine UserType from directory id and contact id.
+     *
+     * 3 types of query
+     *
+     * 1. 2 profile query: content://com.android.contacts/phone_lookup_enterprise/1234567890
+     * personal and work contact are mixed into one cursor. no directory id. contact_id indicates if
+     * it's work contact
+     *
+     * 2. work local query:
+     * content://com.android.contacts/phone_lookup_enterprise/1234567890?directory=1000000000
+     * either directory_id or contact_id is enough to identify work contact
+     *
+     * 3. work remote query:
+     * content://com.android.contacts/phone_lookup_enterprise/1234567890?directory=1000000003
+     * contact_id is random. only directory_id is available
+     *
+     * Summary: If directory_id is not null, always use directory_id to identify work contact.
+     * (which is the case here) Otherwise, use contact_id.
+     *
+     * @param directoryId directory id of ContactsProvider query
+     * @param contactId contact id
+     * @return UserType indicates the user type of the contact. A directory id or contact id larger
+     *         than a thredshold indicates that the contact is stored in Work Profile, but not in
+     *         current user. It's a contract by ContactsProvider and check by
+     *         Contacts.isEnterpriseDirectoryId and Contacts.isEnterpriseContactId. Currently, only
+     *         2 kinds of users can be detected from the directoryId and contactId as
+     *         ContactsProvider can only access current and work user's contacts
+     */
+    public static @UserType long determineUserType(Long directoryId, Long contactId) {
+        // First check directory id
+        if (directoryId != null) {
+            return DirectoryCompat.isEnterpriseDirectoryId(directoryId) ? USER_TYPE_WORK
+                    : USER_TYPE_CURRENT;
+        }
+        // Only check contact id if directory id is null
+        if (contactId != null && contactId != 0L
+                && ContactsCompat.isEnterpriseContactId(contactId)) {
+            return USER_TYPE_WORK;
+        } else {
+            return USER_TYPE_CURRENT;
+        }
+
+    }
+}
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
new file mode 100644
index 0000000..c811e27
--- /dev/null
+++ b/src/com/android/contacts/common/Experiments.java
@@ -0,0 +1,25 @@
+/*
+ * 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.contacts.common;
+
+/**
+ * Experiment flag names.
+ */
+public final class Experiments {
+
+    private Experiments() {
+    }
+}
diff --git a/src/com/android/contacts/common/GeoUtil.java b/src/com/android/contacts/common/GeoUtil.java
new file mode 100644
index 0000000..cd0139b
--- /dev/null
+++ b/src/com/android/contacts/common/GeoUtil.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2012 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.contacts.common;
+
+import android.app.Application;
+import android.content.Context;
+
+import com.android.contacts.common.location.CountryDetector;
+
+import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import com.google.i18n.phonenumbers.Phonenumber;
+
+import java.util.Locale;
+
+/**
+ * Static methods related to Geo.
+ */
+public class GeoUtil {
+
+    /**
+     * Returns the country code of the country the user is currently in. Before calling this
+     * method, make sure that {@link CountryDetector#initialize(Context)} has already been called
+     * in {@link Application#onCreate()}.
+     * @return The ISO 3166-1 two letters country code of the country the user
+     *         is in.
+     */
+    public static String getCurrentCountryIso(Context context) {
+        // The {@link CountryDetector} should never return null so this is safe to return as-is.
+        return CountryDetector.getInstance(context).getCurrentCountryIso();
+    }
+
+    public static String getGeocodedLocationFor(Context context,  String phoneNumber) {
+        final PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
+        final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
+        try {
+            final Phonenumber.PhoneNumber structuredPhoneNumber =
+                    phoneNumberUtil.parse(phoneNumber, getCurrentCountryIso(context));
+            final Locale locale = context.getResources().getConfiguration().locale;
+            return geocoder.getDescriptionForNumber(structuredPhoneNumber, locale);
+        } catch (NumberParseException e) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/GroupMetaData.java b/src/com/android/contacts/common/GroupMetaData.java
new file mode 100644
index 0000000..fa86ae2
--- /dev/null
+++ b/src/com/android/contacts/common/GroupMetaData.java
@@ -0,0 +1,69 @@
+/*
+ * 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.contacts.common;
+
+/**
+ * Meta-data for a contact group.  We load all groups associated with the contact's
+ * constituent accounts.
+ */
+public final class GroupMetaData {
+    private String mAccountName;
+    private String mAccountType;
+    private String mDataSet;
+    private long mGroupId;
+    private String mTitle;
+    private boolean mDefaultGroup;
+    private boolean mFavorites;
+
+    public GroupMetaData(String accountName, String accountType, String dataSet, long groupId,
+            String title, boolean defaultGroup, boolean favorites) {
+        this.mAccountName = accountName;
+        this.mAccountType = accountType;
+        this.mDataSet = dataSet;
+        this.mGroupId = groupId;
+        this.mTitle = title;
+        this.mDefaultGroup = defaultGroup;
+        this.mFavorites = favorites;
+    }
+
+    public String getAccountName() {
+        return mAccountName;
+    }
+
+    public String getAccountType() {
+        return mAccountType;
+    }
+
+    public String getDataSet() {
+        return mDataSet;
+    }
+
+    public long getGroupId() {
+        return mGroupId;
+    }
+
+    public String getTitle() {
+        return mTitle;
+    }
+
+    public boolean isDefaultGroup() {
+        return mDefaultGroup;
+    }
+
+    public boolean isFavorites() {
+        return mFavorites;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/MoreContactUtils.java b/src/com/android/contacts/common/MoreContactUtils.java
new file mode 100644
index 0000000..9b9f800
--- /dev/null
+++ b/src/com/android/contacts/common/MoreContactUtils.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2012 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.contacts.common;
+
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.contacts.common.model.account.AccountType;
+
+/**
+ * Shared static contact utility methods.
+ */
+public class MoreContactUtils {
+
+    private static final String WAIT_SYMBOL_AS_STRING = String.valueOf(PhoneNumberUtils.WAIT);
+
+    /**
+     * Returns true if two data with mimetypes which represent values in contact entries are
+     * considered equal for collapsing in the GUI. For caller-id, use
+     * {@link android.telephony.PhoneNumberUtils#compare(android.content.Context, String, String)}
+     * instead
+     */
+    public static boolean shouldCollapse(CharSequence mimetype1, CharSequence data1,
+              CharSequence mimetype2, CharSequence data2) {
+        // different mimetypes? don't collapse
+        if (!TextUtils.equals(mimetype1, mimetype2)) return false;
+
+        // exact same string? good, bail out early
+        if (TextUtils.equals(data1, data2)) return true;
+
+        // so if either is null, these two must be different
+        if (data1 == null || data2 == null) return false;
+
+        // if this is not about phone numbers, we know this is not a match (of course, some
+        // mimetypes could have more sophisticated matching is the future, e.g. addresses)
+        if (!TextUtils.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE,
+                mimetype1)) {
+            return false;
+        }
+
+        return shouldCollapsePhoneNumbers(data1.toString(), data2.toString());
+    }
+
+    // TODO: Move this to PhoneDataItem.shouldCollapse override
+    private static boolean shouldCollapsePhoneNumbers(String number1, String number2) {
+        // Work around to address b/20724444. We want to distinguish between #555, *555 and 555.
+        // This makes no attempt to distinguish between 555 and 55*5, since 55*5 is an improbable
+        // number. PhoneNumberUtil already distinguishes between 555 and 55#5.
+        if (number1.contains("#") != number2.contains("#")
+                || number1.contains("*") != number2.contains("*")) {
+            return false;
+        }
+
+        // Now do the full phone number thing. split into parts, separated by waiting symbol
+        // and compare them individually
+        final String[] dataParts1 = number1.split(WAIT_SYMBOL_AS_STRING);
+        final String[] dataParts2 = number2.split(WAIT_SYMBOL_AS_STRING);
+        if (dataParts1.length != dataParts2.length) return false;
+        final PhoneNumberUtil util = PhoneNumberUtil.getInstance();
+        for (int i = 0; i < dataParts1.length; i++) {
+            // Match phone numbers represented by keypad letters, in which case prefer the
+            // phone number with letters.
+            final String dataPart1 = PhoneNumberUtils.convertKeypadLettersToDigits(dataParts1[i]);
+            final String dataPart2 = dataParts2[i];
+
+            // substrings equal? shortcut, don't parse
+            if (TextUtils.equals(dataPart1, dataPart2)) continue;
+
+            // do a full parse of the numbers
+            final PhoneNumberUtil.MatchType result = util.isNumberMatch(dataPart1, dataPart2);
+            switch (result) {
+                case NOT_A_NUMBER:
+                    // don't understand the numbers? let's play it safe
+                    return false;
+                case NO_MATCH:
+                    return false;
+                case EXACT_MATCH:
+                    break;
+                case NSN_MATCH:
+                    try {
+                        // For NANP phone numbers, match when one has +1 and the other does not.
+                        // In this case, prefer the +1 version.
+                        if (util.parse(dataPart1, null).getCountryCode() == 1) {
+                            // At this point, the numbers can be either case 1 or 2 below....
+                            //
+                            // case 1)
+                            // +14155551212    <--- country code 1
+                            //  14155551212    <--- 1 is trunk prefix, not country code
+                            //
+                            // and
+                            //
+                            // case 2)
+                            // +14155551212
+                            //   4155551212
+                            //
+                            // From b/7519057, case 2 needs to be equal.  But also that bug, case 3
+                            // below should not be equal.
+                            //
+                            // case 3)
+                            // 14155551212
+                            //  4155551212
+                            //
+                            // So in order to make sure transitive equality is valid, case 1 cannot
+                            // be equal.  Otherwise, transitive equality breaks and the following
+                            // would all be collapsed:
+                            //   4155551212  |
+                            //  14155551212  |---->   +14155551212
+                            // +14155551212  |
+                            //
+                            // With transitive equality, the collapsed values should be:
+                            //   4155551212  |         14155551212
+                            //  14155551212  |---->   +14155551212
+                            // +14155551212  |
+
+                            // Distinguish between case 1 and 2 by checking for trunk prefix '1'
+                            // at the start of number 2.
+                            if (dataPart2.trim().charAt(0) == '1') {
+                                // case 1
+                                return false;
+                            }
+                            break;
+                        }
+                    } catch (NumberParseException e) {
+                        // This is the case where the first number does not have a country code.
+                        // examples:
+                        // (123) 456-7890   &   123-456-7890  (collapse)
+                        // 0049 (8092) 1234   &   +49/80921234  (unit test says do not collapse)
+
+                        // Check the second number.  If it also does not have a country code, then
+                        // we should collapse.  If it has a country code, then it's a different
+                        // number and we should not collapse (this conclusion is based on an
+                        // existing unit test).
+                        try {
+                            util.parse(dataPart2, null);
+                        } catch (NumberParseException e2) {
+                            // Number 2 also does not have a country.  Collapse.
+                            break;
+                        }
+                    }
+                    return false;
+                case SHORT_NSN_MATCH:
+                    return false;
+                default:
+                    throw new IllegalStateException("Unknown result value from phone number " +
+                            "library");
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Returns the {@link android.graphics.Rect} with left, top, right, and bottom coordinates
+     * that are equivalent to the given {@link android.view.View}'s bounds. This is equivalent to
+     * how the target {@link android.graphics.Rect} is calculated in
+     * {@link android.provider.ContactsContract.QuickContact#showQuickContact}.
+     */
+    public static Rect getTargetRectFromView(View view) {
+        final int[] pos = new int[2];
+        view.getLocationOnScreen(pos);
+
+        final Rect rect = new Rect();
+        rect.left = pos[0];
+        rect.top = pos[1];
+        rect.right = pos[0] + view.getWidth();
+        rect.bottom = pos[1] + view.getHeight();
+        return rect;
+    }
+
+    /**
+     * Returns a header view based on the R.layout.list_separator, where the
+     * containing {@link android.widget.TextView} is set using the given textResourceId.
+     */
+    public static TextView createHeaderView(Context context, int textResourceId) {
+        final TextView textView = (TextView) View.inflate(context, R.layout.list_separator, null);
+        textView.setText(context.getString(textResourceId));
+        return textView;
+    }
+
+    /**
+     * Set the top padding on the header view dynamically, based on whether the header is in
+     * the first row or not.
+     */
+    public static void setHeaderViewBottomPadding(Context context, TextView textView,
+            boolean isFirstRow) {
+        final int topPadding;
+        if (isFirstRow) {
+            topPadding = (int) context.getResources().getDimension(
+                    R.dimen.frequently_contacted_title_top_margin_when_first_row);
+        } else {
+            topPadding = (int) context.getResources().getDimension(
+                    R.dimen.frequently_contacted_title_top_margin);
+        }
+        textView.setPaddingRelative(textView.getPaddingStart(), topPadding,
+                textView.getPaddingEnd(), textView.getPaddingBottom());
+    }
+
+
+    /**
+     * Returns the intent to launch for the given invitable account type and contact lookup URI.
+     * This will return null if the account type is not invitable (i.e. there is no
+     * {@link AccountType#getInviteContactActivityClassName()} or
+     * {@link AccountType#syncAdapterPackageName}).
+     */
+    public static Intent getInvitableIntent(AccountType accountType, Uri lookupUri) {
+        String syncAdapterPackageName = accountType.syncAdapterPackageName;
+        String className = accountType.getInviteContactActivityClassName();
+        if (TextUtils.isEmpty(syncAdapterPackageName) || TextUtils.isEmpty(className)) {
+            return null;
+        }
+        Intent intent = new Intent();
+        intent.setClassName(syncAdapterPackageName, className);
+
+        intent.setAction(ContactsContract.Intents.INVITE_CONTACT);
+
+        // Data is the lookup URI.
+        intent.setData(lookupUri);
+        return intent;
+    }
+}
diff --git a/src/com/android/contacts/common/activity/AppCompatTransactionSafeActivity.java b/src/com/android/contacts/common/activity/AppCompatTransactionSafeActivity.java
new file mode 100644
index 0000000..e70a9fd
--- /dev/null
+++ b/src/com/android/contacts/common/activity/AppCompatTransactionSafeActivity.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.contacts.common.activity;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+/**
+ * A common superclass that keeps track of whether an {@link AppCompatActivity} has saved its state
+ * yet or not, copied from {@link com.android.contacts.common.activity.TransactionSafeActivity},
+ * which will be deprecated after Kitkat backporting is done.
+ */
+public abstract class AppCompatTransactionSafeActivity extends AppCompatActivity {
+
+    private boolean mIsSafeToCommitTransactions;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        mIsSafeToCommitTransactions = false;
+    }
+
+    /**
+     * Returns true if it is safe to commit {@link FragmentTransaction}s at this time, based on
+     * whether {@link FragmentActivity#onSaveInstanceState} has been called or not.
+     *
+     * Make sure that the current activity calls into
+     * {@link super.onSaveInstanceState(Bundle outState)} (if that method is overridden),
+     * so the flag is properly set.
+     */
+    public boolean isSafeToCommitTransactions() {
+        return mIsSafeToCommitTransactions;
+    }
+}
diff --git a/src/com/android/contacts/common/activity/LicenseActivity.java b/src/com/android/contacts/common/activity/LicenseActivity.java
new file mode 100644
index 0000000..71bcd84
--- /dev/null
+++ b/src/com/android/contacts/common/activity/LicenseActivity.java
@@ -0,0 +1,59 @@
+/*
+ * 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.contacts.common.activity;
+
+import com.android.contacts.common.R;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.MenuItem;
+import android.webkit.WebView;
+
+/**
+ * Displays the licenses for all open source libraries.
+ */
+public class LicenseActivity extends Activity {
+    private static final String LICENSE_FILE = "file:///android_asset/licenses.html";
+    private WebView mWebView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.licenses);
+        mWebView = (WebView) findViewById(R.id.webview);
+        mWebView.loadUrl(LICENSE_FILE);
+        final ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        mWebView.destroy();
+        super.onDestroy();
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            finish();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/src/com/android/contacts/common/activity/RequestDesiredPermissionsActivity.java b/src/com/android/contacts/common/activity/RequestDesiredPermissionsActivity.java
new file mode 100644
index 0000000..8098fdf
--- /dev/null
+++ b/src/com/android/contacts/common/activity/RequestDesiredPermissionsActivity.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.contacts.common.activity;
+
+import android.Manifest.permission;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Requests permissions that are not absolutely required by the calling Activity;
+ * if permissions are denied, the calling Activity is still restarted.
+ *
+ * Activities that have a set of permissions that must be granted in order for the Activity to
+ * function propertly should call
+ * {@link RequestPermissionsActivity#startPermissionActivity(Activity, String[], Class)}
+ * before calling {@link RequestDesiredPermissionsActivity#startPermissionActivity(Activity)}.
+ */
+public class RequestDesiredPermissionsActivity extends RequestPermissionsActivityBase {
+
+    private static String[] sDesiredPermissions;
+
+    @Override
+    protected String[] getPermissions() {
+        return getPermissions(getPackageManager());
+    }
+
+    /**
+     * If any desired permission that Contacts app needs are missing, open an Activity
+     * to prompt user for these permissions. After that calling activity is restarted
+     * and in the second run permission check is skipped.
+     *
+     * This is designed to be called inside {@link android.app.Activity#onCreate}
+     */
+    public static boolean startPermissionActivity(Activity activity) {
+        final Bundle extras = activity.getIntent().getExtras();
+        if (extras != null && extras.getBoolean(EXTRA_STARTED_PERMISSIONS_ACTIVITY, false)) {
+            return false;
+        }
+        return startPermissionActivity(activity,
+                getPermissions(activity.getPackageManager()),
+                RequestDesiredPermissionsActivity.class);
+    }
+
+    private static String[] getPermissions(PackageManager packageManager) {
+        if (sDesiredPermissions == null) {
+            final List<String> permissions = new ArrayList<>();
+            // Calendar group
+            permissions.add(permission.READ_CALENDAR);
+
+            if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+                // SMS group
+                permissions.add(permission.READ_SMS);
+            }
+            sDesiredPermissions = permissions.toArray(new String[0]);
+        }
+        return sDesiredPermissions;
+    }
+
+    @Override
+    public void onRequestPermissionsResult(
+            int requestCode, String permissions[], int[] grantResults) {
+        mPreviousActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
+        startActivity(mPreviousActivityIntent);
+        overridePendingTransition(0, 0);
+
+        finish();
+        overridePendingTransition(0, 0);
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/activity/RequestImportVCardPermissionsActivity.java b/src/com/android/contacts/common/activity/RequestImportVCardPermissionsActivity.java
new file mode 100644
index 0000000..df98d12
--- /dev/null
+++ b/src/com/android/contacts/common/activity/RequestImportVCardPermissionsActivity.java
@@ -0,0 +1,51 @@
+/*
+ * 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.contacts.common.activity;
+
+import android.Manifest.permission;
+import android.app.Activity;
+
+/**
+ * Activity that requests permissions needed for ImportVCardActivity.
+ */
+public class RequestImportVCardPermissionsActivity extends RequestPermissionsActivity {
+
+    private static final String[] REQUIRED_PERMISSIONS = new String[] {
+            // Contacts group
+            permission.GET_ACCOUNTS,
+            permission.READ_CONTACTS,
+            permission.WRITE_CONTACTS,
+            // Storage group
+            permission.READ_EXTERNAL_STORAGE,
+    };
+
+    @Override
+    protected String[] getPermissions() {
+        return REQUIRED_PERMISSIONS;
+    }
+
+    /**
+     * If any permissions the Contacts app needs are missing, open an Activity
+     * to prompt the user for these permissions. Moreover, finish the current activity.
+     *
+     * This is designed to be called inside {@link android.app.Activity#onCreate}
+     */
+    public static boolean startPermissionActivity(Activity activity) {
+        return startPermissionActivity(activity, REQUIRED_PERMISSIONS,
+                RequestImportVCardPermissionsActivity.class);
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/activity/RequestPermissionsActivity.java b/src/com/android/contacts/common/activity/RequestPermissionsActivity.java
new file mode 100644
index 0000000..126cd64
--- /dev/null
+++ b/src/com/android/contacts/common/activity/RequestPermissionsActivity.java
@@ -0,0 +1,84 @@
+/*
+ * 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.contacts.common.activity;
+
+import com.android.contacts.common.R;
+
+import android.Manifest.permission;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Activity that requests permissions needed for activities exported from Contacts.
+ */
+public class RequestPermissionsActivity extends RequestPermissionsActivityBase {
+
+    private static String[] sRequiredPermissions;
+
+    @Override
+    protected String[] getPermissions() {
+        return getPermissions(getPackageManager());
+    }
+
+    public static boolean startPermissionActivity(Activity activity) {
+        return startPermissionActivity(activity,
+                getPermissions(activity.getPackageManager()),
+                RequestPermissionsActivity.class);
+    }
+
+    private static String[] getPermissions(PackageManager packageManager) {
+        if (sRequiredPermissions == null) {
+            final List<String> permissions = new ArrayList<>();
+            // Contacts group
+            permissions.add(permission.GET_ACCOUNTS);
+            permissions.add(permission.READ_CONTACTS);
+            permissions.add(permission.WRITE_CONTACTS);
+
+            if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+                // Phone group
+                // These are only used in a few places such as QuickContactActivity and
+                // ImportExportDialogFragment.  We work around missing this permission when
+                // telephony is not available on the device (i.e. on tablets).
+                permissions.add(permission.CALL_PHONE);
+                permissions.add(permission.READ_CALL_LOG);
+                permissions.add(permission.READ_PHONE_STATE);
+            }
+            sRequiredPermissions = permissions.toArray(new String[0]);
+        }
+        return sRequiredPermissions;
+    }
+
+    @Override
+    public void onRequestPermissionsResult(
+            int requestCode, String permissions[], int[] grantResults) {
+        if (permissions != null && permissions.length > 0
+                && isAllGranted(permissions, grantResults)) {
+            mPreviousActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
+            startActivity(mPreviousActivityIntent);
+            finish();
+            overridePendingTransition(0, 0);
+        } else {
+            Toast.makeText(this, R.string.missing_required_permission, Toast.LENGTH_SHORT).show();
+            finish();
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java b/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java
new file mode 100644
index 0000000..999c545
--- /dev/null
+++ b/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java
@@ -0,0 +1,147 @@
+/*
+ * 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.contacts.common.activity;
+
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.util.PermissionsUtil;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.Trace;
+import android.support.v4.app.ActivityCompat;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * Activity that asks the user for all {@link #getPermissions} if any are missing.
+ *
+ * NOTE: As a result of b/22095159, this can behave oddly in the case where the final permission
+ * you are requesting causes an application restart.
+ */
+public abstract class RequestPermissionsActivityBase extends Activity
+        implements ActivityCompat.OnRequestPermissionsResultCallback {
+
+    public static final String PREVIOUS_ACTIVITY_INTENT = "previous_intent";
+
+    /** Whether the permissions activity was already started. */
+    protected static final String EXTRA_STARTED_PERMISSIONS_ACTIVITY =
+            "started_permissions_activity";
+
+    private static final int PERMISSIONS_REQUEST_ALL_PERMISSIONS = 1;
+
+    /**
+     * @return list of permissions that are needed in order for {@link #PREVIOUS_ACTIVITY_INTENT}
+     * to operate. You only need to return a single permission per permission group you care about.
+     */
+    protected abstract String[] getPermissions();
+
+    protected Intent mPreviousActivityIntent;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mPreviousActivityIntent = (Intent) getIntent().getExtras().get(PREVIOUS_ACTIVITY_INTENT);
+
+        // Only start a requestPermissions() flow when first starting this activity the first time.
+        // The process is likely to be restarted during the permission flow (necessary to enable
+        // permissions) so this is important to track.
+        if (savedInstanceState == null) {
+            requestPermissions();
+        }
+    }
+
+    /**
+     * If any permissions the Contacts app needs are missing, open an Activity
+     * to prompt the user for these permissions. Moreover, finish the current activity.
+     *
+     * This is designed to be called inside {@link android.app.Activity#onCreate}
+     */
+    protected static boolean startPermissionActivity(Activity activity,
+            String[] requiredPermissions, Class<?> newActivityClass) {
+        if (!hasPermissions(activity, requiredPermissions)) {
+            final Intent intent = new Intent(activity,  newActivityClass);
+            activity.getIntent().putExtra(EXTRA_STARTED_PERMISSIONS_ACTIVITY, true);
+            intent.putExtra(PREVIOUS_ACTIVITY_INTENT, activity.getIntent());
+            activity.startActivity(intent);
+            activity.finish();
+            return true;
+        }
+
+        // Account type initialization must be delayed until the Contacts permission group
+        // has been granted (since GET_ACCOUNTS) falls under that groups.  Previously it
+        // was initialized in ContactApplication which would cause problems as
+        // AccountManager.getAccounts would return an empty array. See b/22690336
+        AccountTypeManager.getInstance(activity);
+
+        return false;
+    }
+
+    protected boolean isAllGranted(String permissions[], int[] grantResult) {
+        for (int i = 0; i < permissions.length; i++) {
+            if (grantResult[i] != PackageManager.PERMISSION_GRANTED
+                    && isPermissionRequired(permissions[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private boolean isPermissionRequired(String p) {
+        return Arrays.asList(getPermissions()).contains(p);
+    }
+
+    private void requestPermissions() {
+        Trace.beginSection("requestPermissions");
+        try {
+            // Construct a list of missing permissions
+            final ArrayList<String> unsatisfiedPermissions = new ArrayList<>();
+            for (String permission : getPermissions()) {
+                if (!PermissionsUtil.hasPermission(this, permission)) {
+                    unsatisfiedPermissions.add(permission);
+                }
+            }
+            if (unsatisfiedPermissions.size() == 0) {
+                throw new RuntimeException("Request permission activity was called even"
+                        + " though all permissions are satisfied.");
+            }
+            ActivityCompat.requestPermissions(
+                    this,
+                    unsatisfiedPermissions.toArray(new String[unsatisfiedPermissions.size()]),
+                    PERMISSIONS_REQUEST_ALL_PERMISSIONS);
+        } finally {
+            Trace.endSection();
+        }
+    }
+
+    protected static boolean hasPermissions(Context context, String[] permissions) {
+        Trace.beginSection("hasPermission");
+        try {
+            for (String permission : permissions) {
+                if (!PermissionsUtil.hasPermission(context, permission)) {
+                    return false;
+                }
+            }
+            return true;
+        } finally {
+            Trace.endSection();
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/activity/TransactionSafeActivity.java b/src/com/android/contacts/common/activity/TransactionSafeActivity.java
new file mode 100644
index 0000000..6c2e4fe
--- /dev/null
+++ b/src/com/android/contacts/common/activity/TransactionSafeActivity.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.activity;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+/**
+ * A common superclass that keeps track of whether an {@link Activity} has saved its state yet or
+ * not.
+ */
+public abstract class TransactionSafeActivity extends Activity {
+
+    private boolean mIsSafeToCommitTransactions;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        mIsSafeToCommitTransactions = false;
+    }
+
+    /**
+     * Returns true if it is safe to commit {@link FragmentTransaction}s at this time, based on
+     * whether {@link Activity#onSaveInstanceState} has been called or not.
+     *
+     * Make sure that the current activity calls into
+     * {@link super.onSaveInstanceState(Bundle outState)} (if that method is overridden),
+     * so the flag is properly set.
+     */
+    public boolean isSafeToCommitTransactions() {
+        return mIsSafeToCommitTransactions;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/CallSdkCompat.java b/src/com/android/contacts/common/compat/CallSdkCompat.java
new file mode 100644
index 0000000..fd06d85
--- /dev/null
+++ b/src/com/android/contacts/common/compat/CallSdkCompat.java
@@ -0,0 +1,57 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.telecom.Call;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class CallSdkCompat {
+    public static class Details {
+        // TODO: This property is hidden in the N release; replace with actual when the API is
+        // made public.
+        public static final int PROPERTY_IS_EXTERNAL_CALL = 0x00000040;
+        public static final int PROPERTY_ENTERPRISE_CALL = Call.Details.PROPERTY_ENTERPRISE_CALL;
+        // TODO: This capability is hidden in the N release; replace with actual when the API is
+        // made public.
+        public static final int CAPABILITY_CAN_PULL_CALL = 0x00800000;
+        public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO =
+                Call.Details.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO;
+    }
+
+    /**
+     * TODO: This API is hidden in the N release; replace the implementation with a call to the
+     * actual once it is made public.
+     */
+    public static void pullExternalCall(Call call) {
+        if (!CompatUtils.isNCompatible()) {
+            return;
+        }
+        Class<?> callClass = Call.class;
+        try {
+            Method pullExternalCallMethod = callClass.getDeclaredMethod("pullExternalCall");
+            pullExternalCallMethod.invoke(call);
+        } catch (NoSuchMethodException e) {
+            // Ignore requests to pull call if there is a problem.
+        } catch (InvocationTargetException e) {
+            // Ignore requests to pull call if there is a problem.
+        } catch (IllegalAccessException e) {
+            // Ignore requests to pull call if there is a problem.
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/compat/CallableCompat.java b/src/com/android/contacts/common/compat/CallableCompat.java
new file mode 100644
index 0000000..d25d4be
--- /dev/null
+++ b/src/com/android/contacts/common/compat/CallableCompat.java
@@ -0,0 +1,36 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Callable;
+
+import com.android.contacts.common.ContactsUtils;
+
+public class CallableCompat {
+
+    // TODO: Use N APIs
+    private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
+            Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
+
+    public static Uri getContentFilterUri() {
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return ENTERPRISE_CONTENT_FILTER_URI;
+        }
+        return Callable.CONTENT_FILTER_URI;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/CompatUtils.java b/src/com/android/contacts/common/compat/CompatUtils.java
new file mode 100644
index 0000000..567f183
--- /dev/null
+++ b/src/com/android/contacts/common/compat/CompatUtils.java
@@ -0,0 +1,272 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.os.Build;
+import android.os.Build.VERSION;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.model.CPOWrapper;
+
+import java.lang.reflect.InvocationTargetException;
+
+public final class CompatUtils {
+
+    private static final String TAG = CompatUtils.class.getSimpleName();
+
+    /**
+     * These 4 variables are copied from ContentProviderOperation for compatibility.
+     */
+    public final static int TYPE_INSERT = 1;
+
+    public final static int TYPE_UPDATE = 2;
+
+    public final static int TYPE_DELETE = 3;
+
+    public final static int TYPE_ASSERT = 4;
+
+    /**
+     * Returns whether the operation in CPOWrapper is of TYPE_INSERT;
+     */
+    public static boolean isInsertCompat(CPOWrapper cpoWrapper) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return cpoWrapper.getOperation().isInsert();
+        }
+        return (cpoWrapper.getType() == TYPE_INSERT);
+    }
+
+    /**
+     * Returns whether the operation in CPOWrapper is of TYPE_UPDATE;
+     */
+    public static boolean isUpdateCompat(CPOWrapper cpoWrapper) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return cpoWrapper.getOperation().isUpdate();
+        }
+        return (cpoWrapper.getType() == TYPE_UPDATE);
+    }
+
+    /**
+     * Returns whether the operation in CPOWrapper is of TYPE_DELETE;
+     */
+    public static boolean isDeleteCompat(CPOWrapper cpoWrapper) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return cpoWrapper.getOperation().isDelete();
+        }
+        return (cpoWrapper.getType() == TYPE_DELETE);
+    }
+    /**
+     * Returns whether the operation in CPOWrapper is of TYPE_ASSERT;
+     */
+    public static boolean isAssertQueryCompat(CPOWrapper cpoWrapper) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return cpoWrapper.getOperation().isAssertQuery();
+        }
+        return (cpoWrapper.getType() == TYPE_ASSERT);
+    }
+
+    /**
+     * PrioritizedMimeType is added in API level 23.
+     */
+    public static boolean hasPrioritizedMimeType() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+                >= Build.VERSION_CODES.M;
+    }
+
+    /**
+     * Determines if this version is compatible with multi-SIM and the phone account APIs. Can also
+     * force the version to be lower through SdkVersionOverride.
+     *
+     * @return {@code true} if multi-SIM capability is available, {@code false} otherwise.
+     */
+    public static boolean isMSIMCompatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
+                >= Build.VERSION_CODES.LOLLIPOP_MR1;
+    }
+
+    /**
+     * Determines if this version is compatible with video calling. Can also force the version to be
+     * lower through SdkVersionOverride.
+     *
+     * @return {@code true} if video calling is allowed, {@code false} otherwise.
+     */
+    public static boolean isVideoCompatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
+                >= Build.VERSION_CODES.M;
+    }
+
+    /**
+     * Determines if this version is capable of using presence checking for video calling. Support
+     * for video call presence indication is added in SDK 24.
+     *
+     * @return {@code true} if video presence checking is allowed, {@code false} otherwise.
+     */
+    public static boolean isVideoPresenceCompatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+                > Build.VERSION_CODES.M;
+    }
+
+    /**
+     * Determines if this version is compatible with call subject. Can also force the version to be
+     * lower through SdkVersionOverride.
+     *
+     * @return {@code true} if call subject is a feature on this device, {@code false} otherwise.
+     */
+    public static boolean isCallSubjectCompatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
+                >= Build.VERSION_CODES.M;
+    }
+
+    /**
+     * Determines if this version is compatible with a default dialer. Can also force the version to
+     * be lower through {@link SdkVersionOverride}.
+     *
+     * @return {@code true} if default dialer is a feature on this device, {@code false} otherwise.
+     */
+    public static boolean isDefaultDialerCompatible() {
+        return isMarshmallowCompatible();
+    }
+
+    /**
+     * Determines if this version is compatible with Lollipop Mr1-specific APIs. Can also force the
+     * version to be lower through SdkVersionOverride.
+     *
+     * @return {@code true} if runtime sdk is compatible with Lollipop MR1, {@code false} otherwise.
+     */
+    public static boolean isLollipopMr1Compatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP_MR1)
+                >= Build.VERSION_CODES.LOLLIPOP_MR1;
+    }
+
+    /**
+     * Determines if this version is compatible with Marshmallow-specific APIs. Can also force the
+     * version to be lower through SdkVersionOverride.
+     *
+     * @return {@code true} if runtime sdk is compatible with Marshmallow, {@code false} otherwise.
+     */
+    public static boolean isMarshmallowCompatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
+                >= Build.VERSION_CODES.M;
+    }
+
+    /**
+     * Determines if this version is compatible with N-specific APIs.
+     *
+     * @return {@code true} if runtime sdk is compatible with N and the app is built with N, {@code
+     * false} otherwise.
+     */
+    public static boolean isNCompatible() {
+        return VERSION.SDK_INT >= 24;
+    }
+
+    /**
+     * Determines if the given class is available. Can be used to check if system apis exist at
+     * runtime.
+     *
+     * @param className the name of the class to look for.
+     * @return {@code true} if the given class is available, {@code false} otherwise or if className
+     * is empty.
+     */
+    public static boolean isClassAvailable(@Nullable String className) {
+        if (TextUtils.isEmpty(className)) {
+            return false;
+        }
+        try {
+            Class.forName(className);
+            return true;
+        } catch (ClassNotFoundException e) {
+            return false;
+        } catch (Throwable t) {
+            Log.e(TAG, "Unexpected exception when checking if class:" + className + " exists at "
+                    + "runtime", t);
+            return false;
+        }
+    }
+
+    /**
+     * Determines if the given class's method is available to call. Can be used to check if system
+     * apis exist at runtime.
+     *
+     * @param className the name of the class to look for
+     * @param methodName the name of the method to look for
+     * @param parameterTypes the needed parameter types for the method to look for
+     * @return {@code true} if the given class is available, {@code false} otherwise or if className
+     * or methodName are empty.
+     */
+    public static boolean isMethodAvailable(@Nullable String className, @Nullable String methodName,
+            Class<?>... parameterTypes) {
+        if (TextUtils.isEmpty(className) || TextUtils.isEmpty(methodName)) {
+            return false;
+        }
+
+        try {
+            Class.forName(className).getMethod(methodName, parameterTypes);
+            return true;
+        } catch (ClassNotFoundException | NoSuchMethodException e) {
+            Log.v(TAG, "Could not find method: " + className + "#" + methodName);
+            return false;
+        } catch (Throwable t) {
+            Log.e(TAG, "Unexpected exception when checking if method: " + className + "#"
+                    + methodName + " exists at runtime", t);
+            return false;
+        }
+    }
+
+    /**
+     * Invokes a given class's method using reflection. Can be used to call system apis that exist
+     * at runtime but not in the SDK.
+     *
+     * @param instance The instance of the class to invoke the method on.
+     * @param methodName The name of the method to invoke.
+     * @param parameterTypes The needed parameter types for the method.
+     * @param parameters The parameter values to pass into the method.
+     * @return The result of the invocation or {@code null} if instance or methodName are empty, or
+     * if the reflection fails.
+     */
+    @Nullable
+    public static Object invokeMethod(@Nullable Object instance, @Nullable String methodName,
+            Class<?>[] parameterTypes, Object[] parameters) {
+        if (instance == null || TextUtils.isEmpty(methodName)) {
+            return null;
+        }
+
+        String className = instance.getClass().getName();
+        try {
+            return Class.forName(className).getMethod(methodName, parameterTypes)
+                    .invoke(instance, parameters);
+        } catch (ClassNotFoundException | NoSuchMethodException | IllegalArgumentException
+                | IllegalAccessException | InvocationTargetException e) {
+            Log.v(TAG, "Could not invoke method: " + className + "#" + methodName);
+            return null;
+        } catch (Throwable t) {
+            Log.e(TAG, "Unexpected exception when invoking method: " + className
+                    + "#" + methodName + " at runtime", t);
+            return null;
+        }
+    }
+
+    /**
+     * Determines if this version is compatible with Lollipop-specific APIs. Can also force the
+     * version to be lower through SdkVersionOverride.
+     *
+     * @return {@code true} if call subject is a feature on this device, {@code false} otherwise.
+     */
+    public static boolean isLollipopCompatible() {
+        return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
+                >= Build.VERSION_CODES.LOLLIPOP;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/ContactsCompat.java b/src/com/android/contacts/common/compat/ContactsCompat.java
new file mode 100644
index 0000000..5a5e46a
--- /dev/null
+++ b/src/com/android/contacts/common/compat/ContactsCompat.java
@@ -0,0 +1,61 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
+
+import com.android.contacts.common.ContactsUtils;
+
+/**
+ * Compatibility class for {@link ContactsContract.Contacts}
+ */
+public class ContactsCompat {
+    /**
+     * Not instantiable.
+     */
+    private ContactsCompat() {
+    }
+
+    // TODO: Use N APIs
+    private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
+            Uri.withAppendedPath(Contacts.CONTENT_URI, "filter_enterprise");
+
+    // Copied from ContactsContract.Contacts#ENTERPRISE_CONTACT_ID_BASE, which is hidden.
+    private static final long ENTERPRISE_CONTACT_ID_BASE = 1000000000;
+
+    public static Uri getContentUri() {
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return ENTERPRISE_CONTENT_FILTER_URI;
+        }
+        return Contacts.CONTENT_FILTER_URI;
+    }
+
+    /**
+     * Return {@code true} if a contact ID is from the contacts provider on the enterprise profile.
+     */
+    public static boolean isEnterpriseContactId(long contactId) {
+        if (CompatUtils.isLollipopCompatible()) {
+            return Contacts.isEnterpriseContactId(contactId);
+        } else {
+            // copied from ContactsContract.Contacts.isEnterpriseContactId
+            return (contactId >= ENTERPRISE_CONTACT_ID_BASE) &&
+                    (contactId < ContactsContract.Profile.MIN_ID);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/compat/DirectoryCompat.java b/src/com/android/contacts/common/compat/DirectoryCompat.java
new file mode 100644
index 0000000..682e14c
--- /dev/null
+++ b/src/com/android/contacts/common/compat/DirectoryCompat.java
@@ -0,0 +1,54 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Directory;
+
+import com.android.contacts.common.ContactsUtils;
+
+public class DirectoryCompat {
+
+    public static Uri getContentUri() {
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return DirectorySdkCompat.ENTERPRISE_CONTENT_URI;
+        }
+        return Directory.CONTENT_URI;
+    }
+
+    public static boolean isInvisibleDirectory(long directoryId) {
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return (directoryId == Directory.LOCAL_INVISIBLE
+                    || directoryId == DirectorySdkCompat.ENTERPRISE_LOCAL_INVISIBLE);
+        }
+        return directoryId == Directory.LOCAL_INVISIBLE;
+    }
+
+    public static boolean isRemoteDirectoryId(long directoryId) {
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return DirectorySdkCompat.isRemoteDirectoryId(directoryId);
+        }
+        return !(directoryId == Directory.DEFAULT || directoryId == Directory.LOCAL_INVISIBLE);
+    }
+
+    public static boolean isEnterpriseDirectoryId(long directoryId) {
+        return ContactsUtils.FLAG_N_FEATURE
+                ? DirectorySdkCompat.isEnterpriseDirectoryId(directoryId)
+                : false;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/DirectorySdkCompat.java b/src/com/android/contacts/common/compat/DirectorySdkCompat.java
new file mode 100644
index 0000000..b919466
--- /dev/null
+++ b/src/com/android/contacts/common/compat/DirectorySdkCompat.java
@@ -0,0 +1,37 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.provider.ContactsContract.Directory;
+
+public class DirectorySdkCompat {
+
+    private static final String TAG = "DirectorySdkCompat";
+
+    public static final Uri ENTERPRISE_CONTENT_URI = Directory.ENTERPRISE_CONTENT_URI;
+    public static final long ENTERPRISE_LOCAL_DEFAULT = Directory.ENTERPRISE_DEFAULT;
+    public static final long ENTERPRISE_LOCAL_INVISIBLE = Directory.ENTERPRISE_LOCAL_INVISIBLE;
+
+    public static boolean isRemoteDirectoryId(long directoryId) {
+        return CompatUtils.isNCompatible() ? Directory.isRemoteDirectoryId(directoryId) : false;
+    }
+
+    public static boolean isEnterpriseDirectoryId(long directoryId) {
+        return CompatUtils.isNCompatible() ? Directory.isEnterpriseDirectoryId(directoryId) : false;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/EventCompat.java b/src/com/android/contacts/common/compat/EventCompat.java
new file mode 100644
index 0000000..f37aeff
--- /dev/null
+++ b/src/com/android/contacts/common/compat/EventCompat.java
@@ -0,0 +1,58 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.content.res.Resources;
+import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.text.TextUtils;
+
+/**
+ * Compatibility class for {@link Event}
+ */
+public class EventCompat {
+    /**
+     * Not instantiable.
+     */
+    private EventCompat() {
+    }
+
+    /**
+     * Return a {@link CharSequence} that best describes the given type, possibly substituting
+     * the given label value for TYPE_CUSTOM.
+     */
+    public static CharSequence getTypeLabel(Resources res, int type, CharSequence label) {
+        if (CompatUtils.isLollipopCompatible()) {
+            return Event.getTypeLabel(res, type, label);
+        } else {
+            return getTypeLabelInternal(res, type, label);
+        }
+    }
+
+    /**
+     * The method was added in API level 21, and below is the implementation copied from
+     * {@link Event#getTypeLabel(Resources, int, CharSequence)}
+     */
+    private static CharSequence getTypeLabelInternal(Resources res, int type, CharSequence label) {
+        if (type == BaseTypes.TYPE_CUSTOM && !TextUtils.isEmpty(label)) {
+            return label;
+        } else {
+            return res.getText(Event.getTypeResource(type));
+        }
+    }
+
+}
diff --git a/src/com/android/contacts/common/compat/MetadataSyncEnabledCompat.java b/src/com/android/contacts/common/compat/MetadataSyncEnabledCompat.java
new file mode 100644
index 0000000..4a9650f
--- /dev/null
+++ b/src/com/android/contacts/common/compat/MetadataSyncEnabledCompat.java
@@ -0,0 +1,29 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.content.Context;
+import android.provider.Settings;
+
+public class MetadataSyncEnabledCompat {
+    public static boolean isMetadataSyncEnabled(Context context) {
+        return CompatUtils.isNCompatible()
+                ? (Settings.Global.getInt(context.getContentResolver(),
+                        Settings.Global.CONTACT_METADATA_SYNC_ENABLED, 0) == 1)
+                : false;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/compat/MultiWindowCompat.java b/src/com/android/contacts/common/compat/MultiWindowCompat.java
new file mode 100644
index 0000000..6641279
--- /dev/null
+++ b/src/com/android/contacts/common/compat/MultiWindowCompat.java
@@ -0,0 +1,28 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.app.Activity;
+
+public class MultiWindowCompat {
+    /**
+     * Returns true if the activity is currently in multi-window mode.
+     */
+    public static boolean isInMultiWindowMode(Activity activity) {
+        return CompatUtils.isNCompatible() ? activity.isInMultiWindowMode() : false;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/compat/PhoneAccountCompat.java b/src/com/android/contacts/common/compat/PhoneAccountCompat.java
new file mode 100644
index 0000000..00f4211
--- /dev/null
+++ b/src/com/android/contacts/common/compat/PhoneAccountCompat.java
@@ -0,0 +1,101 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
+import android.support.annotation.Nullable;
+import android.telecom.PhoneAccount;
+import android.util.Log;
+
+/**
+ * Compatiblity class for {@link android.telecom.PhoneAccount}
+ */
+public class PhoneAccountCompat {
+
+    private static final String TAG = PhoneAccountCompat.class.getSimpleName();
+
+    /**
+     * Gets the {@link Icon} associated with the given {@link PhoneAccount}
+     *
+     * @param phoneAccount the PhoneAccount from which to retrieve the Icon
+     * @return the Icon, or null
+     */
+    @Nullable
+    public static Icon getIcon(@Nullable PhoneAccount phoneAccount) {
+        if (phoneAccount == null) {
+            return null;
+        }
+
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return phoneAccount.getIcon();
+        }
+
+        return null;
+    }
+
+    /**
+     * Builds and returns an icon {@code Drawable} to represent this {@code PhoneAccount} in a user
+     * interface.
+     *
+     * @param phoneAccount the PhoneAccount from which to build the icon.
+     * @param context A {@code Context} to use for loading Drawables.
+     *
+     * @return An icon for this PhoneAccount, or null
+     */
+    @Nullable
+    public static Drawable createIconDrawable(@Nullable PhoneAccount phoneAccount,
+            @Nullable Context context) {
+        if (phoneAccount == null || context == null) {
+            return null;
+        }
+
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return createIconDrawableMarshmallow(phoneAccount, context);
+        }
+
+        if (CompatUtils.isLollipopMr1Compatible()) {
+            return createIconDrawableLollipopMr1(phoneAccount, context);
+        }
+        return null;
+    }
+
+    @Nullable
+    private static Drawable createIconDrawableMarshmallow(PhoneAccount phoneAccount,
+            Context context) {
+        Icon accountIcon = getIcon(phoneAccount);
+        if (accountIcon == null) {
+            return null;
+        }
+        return accountIcon.loadDrawable(context);
+    }
+
+    @Nullable
+    private static Drawable createIconDrawableLollipopMr1(PhoneAccount phoneAccount,
+            Context context) {
+        try {
+            return (Drawable) PhoneAccount.class.getMethod("createIconDrawable", Context.class)
+                    .invoke(phoneAccount, context);
+        } catch (ReflectiveOperationException e) {
+            return null;
+        } catch (Throwable t) {
+            Log.e(TAG, "Unexpected exception when attempting to call "
+                    + "android.telecom.PhoneAccount#createIconDrawable", t);
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/compat/PhoneAccountSdkCompat.java b/src/com/android/contacts/common/compat/PhoneAccountSdkCompat.java
new file mode 100644
index 0000000..5cbf617
--- /dev/null
+++ b/src/com/android/contacts/common/compat/PhoneAccountSdkCompat.java
@@ -0,0 +1,37 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.os.Bundle;
+import android.telecom.PhoneAccount;
+
+public class PhoneAccountSdkCompat {
+
+    private static final String TAG = "PhoneAccountSdkCompat";
+
+    public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH =
+            PhoneAccount.EXTRA_CALL_SUBJECT_MAX_LENGTH;
+    public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING =
+            PhoneAccount.EXTRA_CALL_SUBJECT_CHARACTER_ENCODING;
+
+    public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE =
+            PhoneAccount.CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE;
+
+    public static Bundle getExtras(PhoneAccount account) {
+        return CompatUtils.isNCompatible() ? account.getExtras() : null;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/PhoneCompat.java b/src/com/android/contacts/common/compat/PhoneCompat.java
new file mode 100644
index 0000000..5277761
--- /dev/null
+++ b/src/com/android/contacts/common/compat/PhoneCompat.java
@@ -0,0 +1,36 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+
+import com.android.contacts.common.ContactsUtils;
+
+public class PhoneCompat {
+
+    // TODO: Use N APIs
+    private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
+            Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+
+    public static Uri getContentFilterUri() {
+        if (ContactsUtils.FLAG_N_FEATURE) {
+            return ENTERPRISE_CONTENT_FILTER_URI;
+        }
+        return Phone.CONTENT_FILTER_URI;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/PhoneLookupSdkCompat.java b/src/com/android/contacts/common/compat/PhoneLookupSdkCompat.java
new file mode 100644
index 0000000..0c0a898
--- /dev/null
+++ b/src/com/android/contacts/common/compat/PhoneLookupSdkCompat.java
@@ -0,0 +1,23 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.provider.ContactsContract;
+
+public class PhoneLookupSdkCompat {
+    public static final String CONTACT_ID = ContactsContract.PhoneLookup.CONTACT_ID;
+}
diff --git a/src/com/android/contacts/common/compat/PhoneNumberFormattingTextWatcherCompat.java b/src/com/android/contacts/common/compat/PhoneNumberFormattingTextWatcherCompat.java
new file mode 100644
index 0000000..42b604e
--- /dev/null
+++ b/src/com/android/contacts/common/compat/PhoneNumberFormattingTextWatcherCompat.java
@@ -0,0 +1,27 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.telephony.PhoneNumberFormattingTextWatcher;
+
+public class PhoneNumberFormattingTextWatcherCompat {
+    public static PhoneNumberFormattingTextWatcher newInstance(String countryCode) {
+        if (CompatUtils.isLollipopCompatible()) {
+            return new PhoneNumberFormattingTextWatcher(countryCode);
+        }
+        return new PhoneNumberFormattingTextWatcher();
+    }
+}
diff --git a/src/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java b/src/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java
new file mode 100644
index 0000000..9a8fa41
--- /dev/null
+++ b/src/com/android/contacts/common/compat/PhoneNumberUtilsCompat.java
@@ -0,0 +1,188 @@
+/*
+ * 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.contacts.common.compat;
+
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import android.telephony.PhoneNumberUtils;
+import android.text.Spannable;
+import android.text.TextUtils;
+import android.text.style.TtsSpan;
+
+/**
+ * This class contains static utility methods extracted from PhoneNumberUtils, and the
+ * methods were added in API level 23. In this way, we could enable the corresponding functionality
+ * for pre-M devices. We need maintain this class and keep it synced with PhoneNumberUtils.
+ * Another thing to keep in mind is that we use com.google.i18n rather than com.android.i18n in
+ * here, so we need make sure the application behavior is preserved.
+ */
+public class PhoneNumberUtilsCompat {
+    /**
+     * Not instantiable.
+     */
+    private PhoneNumberUtilsCompat() {}
+
+    public static String normalizeNumber(String phoneNumber) {
+        if (CompatUtils.isLollipopCompatible()) {
+            return PhoneNumberUtils.normalizeNumber(phoneNumber);
+        } else {
+            return normalizeNumberInternal(phoneNumber);
+        }
+    }
+
+    /**
+     * Implementation copied from {@link PhoneNumberUtils#normalizeNumber}
+     */
+    private static String normalizeNumberInternal(String phoneNumber) {
+        if (TextUtils.isEmpty(phoneNumber)) {
+            return "";
+        }
+        StringBuilder sb = new StringBuilder();
+        int len = phoneNumber.length();
+        for (int i = 0; i < len; i++) {
+            char c = phoneNumber.charAt(i);
+            // Character.digit() supports ASCII and Unicode digits (fullwidth, Arabic-Indic, etc.)
+            int digit = Character.digit(c, 10);
+            if (digit != -1) {
+                sb.append(digit);
+            } else if (sb.length() == 0 && c == '+') {
+                sb.append(c);
+            } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+                return normalizeNumber(PhoneNumberUtils.convertKeypadLettersToDigits(phoneNumber));
+            }
+        }
+        return sb.toString();
+    }
+
+    public static String formatNumber(
+            String phoneNumber, String phoneNumberE164, String defaultCountryIso) {
+        if (CompatUtils.isLollipopCompatible()) {
+            return PhoneNumberUtils.formatNumber(phoneNumber, phoneNumberE164, defaultCountryIso);
+        } else {
+            // This method was deprecated in API level 21, so it's only used on pre-L SDKs.
+            return PhoneNumberUtils.formatNumber(phoneNumber);
+        }
+    }
+
+    public static CharSequence createTtsSpannable(CharSequence phoneNumber) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return PhoneNumberUtils.createTtsSpannable(phoneNumber);
+        } else {
+            return createTtsSpannableInternal(phoneNumber);
+        }
+    }
+
+    public static TtsSpan createTtsSpan(String phoneNumber) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return PhoneNumberUtils.createTtsSpan(phoneNumber);
+        } else if (CompatUtils.isLollipopCompatible()) {
+            return createTtsSpanLollipop(phoneNumber);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Copied from {@link PhoneNumberUtils#createTtsSpannable}
+     */
+    private static CharSequence createTtsSpannableInternal(CharSequence phoneNumber) {
+        if (phoneNumber == null) {
+            return null;
+        }
+        Spannable spannable = Spannable.Factory.getInstance().newSpannable(phoneNumber);
+        addTtsSpanInternal(spannable, 0, spannable.length());
+        return spannable;
+    }
+
+    /**
+     * Compat method for addTtsSpan, see {@link PhoneNumberUtils#addTtsSpan}
+     */
+    public static void addTtsSpan(Spannable s, int start, int endExclusive) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            PhoneNumberUtils.addTtsSpan(s, start, endExclusive);
+        } else {
+            addTtsSpanInternal(s, start, endExclusive);
+        }
+    }
+
+    /**
+     * Copied from {@link PhoneNumberUtils#addTtsSpan}
+     */
+    private static void addTtsSpanInternal(Spannable s, int start, int endExclusive) {
+        s.setSpan(createTtsSpan(s.subSequence(start, endExclusive).toString()),
+                start,
+                endExclusive,
+                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+    }
+
+    /**
+     * Copied from {@link PhoneNumberUtils#createTtsSpan}
+     */
+    private static TtsSpan createTtsSpanLollipop(String phoneNumberString) {
+        if (phoneNumberString == null) {
+            return null;
+        }
+
+        // Parse the phone number
+        final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
+        PhoneNumber phoneNumber = null;
+        try {
+            // Don't supply a defaultRegion so this fails for non-international numbers because
+            // we don't want to TalkBalk to read a country code (e.g. +1) if it is not already
+            // present
+            phoneNumber = phoneNumberUtil.parse(phoneNumberString, /* defaultRegion */ null);
+        } catch (NumberParseException ignored) {
+        }
+
+        // Build a telephone tts span
+        final TtsSpan.TelephoneBuilder builder = new TtsSpan.TelephoneBuilder();
+        if (phoneNumber == null) {
+            // Strip separators otherwise TalkBack will be silent
+            // (this behavior was observed with TalkBalk 4.0.2 from their alpha channel)
+            builder.setNumberParts(splitAtNonNumerics(phoneNumberString));
+        } else {
+            if (phoneNumber.hasCountryCode()) {
+                builder.setCountryCode(Integer.toString(phoneNumber.getCountryCode()));
+            }
+            builder.setNumberParts(Long.toString(phoneNumber.getNationalNumber()));
+        }
+        return builder.build();
+    }
+
+
+
+    /**
+     * Split a phone number using spaces, ignoring anything that is not a digit
+     * @param number A {@code CharSequence} before splitting, e.g., "+20(123)-456#"
+     * @return A {@code String} after splitting, e.g., "20 123 456".
+     */
+    private static String splitAtNonNumerics(CharSequence number) {
+        StringBuilder sb = new StringBuilder(number.length());
+        for (int i = 0; i < number.length(); i++) {
+            sb.append(PhoneNumberUtils.isISODigit(number.charAt(i))
+                    ? number.charAt(i)
+                    : " ");
+        }
+        // It is very important to remove extra spaces. At time of writing, any leading or trailing
+        // spaces, or any sequence of more than one space, will confuse TalkBack and cause the TTS
+        // span to be non-functional!
+        return sb.toString().replaceAll(" +", " ").trim();
+    }
+
+}
diff --git a/src/com/android/contacts/common/compat/ProviderStatusCompat.java b/src/com/android/contacts/common/compat/ProviderStatusCompat.java
new file mode 100644
index 0000000..84338de
--- /dev/null
+++ b/src/com/android/contacts/common/compat/ProviderStatusCompat.java
@@ -0,0 +1,70 @@
+
+/*
+ * 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.contacts.common.compat;
+
+import android.os.Build;
+import android.provider.ContactsContract.ProviderStatus;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.SdkVersionOverride;
+
+/**
+ * This class contains constants from the pre-M version of ContactsContract.ProviderStatus class
+ * and also the mappings between pre-M constants and M constants for compatibility purpose,
+ * because ProviderStatus class constant names and values changed and the class became visible in
+ * API level 23.
+ */
+public class ProviderStatusCompat {
+    /**
+     * Not instantiable.
+     */
+    private ProviderStatusCompat() {
+    }
+
+    public static final boolean USE_CURRENT_VERSION = CompatUtils.isMarshmallowCompatible();
+
+    public static final int STATUS_EMPTY = USE_CURRENT_VERSION ?
+            ProviderStatus.STATUS_EMPTY : ProviderStatusCompat.STATUS_NO_ACCOUNTS_NO_CONTACTS;
+
+    public static final int STATUS_BUSY = USE_CURRENT_VERSION ?
+            ProviderStatus.STATUS_BUSY : ProviderStatusCompat.STATUS_UPGRADING;
+
+    /**
+     * Default status of the provider, using the actual constant to guard against errors
+     */
+    public static final int STATUS_NORMAL = ProviderStatus.STATUS_NORMAL;
+
+    /**
+     * The following three constants are from pre-M.
+     *
+     * The status used when the provider is in the process of upgrading.  Contacts
+     * are temporarily unaccessible.
+     */
+    private static final int STATUS_UPGRADING = 1;
+
+    /**
+     * The status used during a locale change.
+     */
+    public static final int STATUS_CHANGING_LOCALE = 3;
+
+    /**
+     * The status that indicates that there are no accounts and no contacts
+     * on the device.
+     */
+    private static final int STATUS_NO_ACCOUNTS_NO_CONTACTS = 4;
+}
diff --git a/src/com/android/contacts/common/compat/SdkVersionOverride.java b/src/com/android/contacts/common/compat/SdkVersionOverride.java
new file mode 100644
index 0000000..ebde623
--- /dev/null
+++ b/src/com/android/contacts/common/compat/SdkVersionOverride.java
@@ -0,0 +1,45 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.os.Build.VERSION;
+
+/**
+ * Class used to override the current sdk version to test specific branches of compatibility
+ * logic. When such branching occurs, use {@link #getSdkVersion(int)} rather than explicitly
+ * calling {@link VERSION#SDK_INT}. This allows the sdk version to be forced to a specific value.
+ */
+public class SdkVersionOverride {
+
+    /**
+     * Flag used to determine if override sdk versions are returned.
+     */
+    private static final boolean ALLOW_OVERRIDE_VERSION = false;
+
+    private SdkVersionOverride() {}
+
+    /**
+     * Gets the sdk version
+     *
+     * @param overrideVersion the version to attempt using
+     * @return overrideVersion if the {@link #ALLOW_OVERRIDE_VERSION} flag is set to {@code true},
+     * otherwise the current version
+     */
+    public static int getSdkVersion(int overrideVersion) {
+        return ALLOW_OVERRIDE_VERSION ? overrideVersion : VERSION.SDK_INT;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/TelecomManagerUtil.java b/src/com/android/contacts/common/compat/TelecomManagerUtil.java
new file mode 100644
index 0000000..30c541c
--- /dev/null
+++ b/src/com/android/contacts/common/compat/TelecomManagerUtil.java
@@ -0,0 +1,31 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.content.Intent;
+import android.telecom.TelecomManager;
+
+/**
+ * Utility class for TelecomManager
+ */
+public class TelecomManagerUtil {
+    /**
+     * Creates {@link Intent} to launch the activity to manage blocked numbers.
+     */
+    public static Intent createManageBlockedNumbersIntent(TelecomManager tm) {
+        return CompatUtils.isNCompatible() ? tm.createManageBlockedNumbersIntent() : null;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/TelephonyManagerCompat.java b/src/com/android/contacts/common/compat/TelephonyManagerCompat.java
new file mode 100644
index 0000000..ec7907f
--- /dev/null
+++ b/src/com/android/contacts/common/compat/TelephonyManagerCompat.java
@@ -0,0 +1,173 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+
+import com.android.contacts.common.ContactsUtils;
+
+public class TelephonyManagerCompat {
+    public static final String TELEPHONY_MANAGER_CLASS = "android.telephony.TelephonyManager";
+
+    /**
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     * @return true if the current device is "voice capable".
+     * <p>
+     * "Voice capable" means that this device supports circuit-switched
+     * (i.e. voice) phone calls over the telephony network, and is allowed
+     * to display the in-call UI while a cellular voice call is active.
+     * This will be false on "data only" devices which can't make voice
+     * calls and don't support any in-call UI.
+     * <p>
+     * Note: the meaning of this flag is subtly different from the
+     * PackageManager.FEATURE_TELEPHONY system feature, which is available
+     * on any device with a telephony radio, even if the device is
+     * data-only.
+     */
+    public static boolean isVoiceCapable(@Nullable TelephonyManager telephonyManager) {
+        if (telephonyManager == null) {
+            return false;
+        }
+        if (CompatUtils.isLollipopMr1Compatible()
+                || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS, "isVoiceCapable")) {
+            // isVoiceCapable was unhidden in L-MR1
+            return telephonyManager.isVoiceCapable();
+        }
+        final int phoneType = telephonyManager.getPhoneType();
+        return phoneType == TelephonyManager.PHONE_TYPE_CDMA ||
+                phoneType == TelephonyManager.PHONE_TYPE_GSM;
+    }
+
+    /**
+     * Returns the number of phones available.
+     * Returns 1 for Single standby mode (Single SIM functionality)
+     * Returns 2 for Dual standby mode.(Dual SIM functionality)
+     *
+     * Returns 1 if the method or telephonyManager is not available.
+     *
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     */
+    public static int getPhoneCount(@Nullable TelephonyManager telephonyManager) {
+        if (telephonyManager == null) {
+            return 1;
+        }
+        if (CompatUtils.isMarshmallowCompatible() || CompatUtils
+                .isMethodAvailable(TELEPHONY_MANAGER_CLASS, "getPhoneCount")) {
+            return telephonyManager.getPhoneCount();
+        }
+        return 1;
+    }
+
+    /**
+     * Returns the unique device ID of a subscription, for example, the IMEI for
+     * GSM and the MEID for CDMA phones. Return null if device ID is not available.
+     *
+     * <p>Requires Permission:
+     *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
+     *
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     * @param slotId of which deviceID is returned
+     */
+    public static String getDeviceId(@Nullable TelephonyManager telephonyManager, int slotId) {
+        if (telephonyManager == null) {
+            return null;
+        }
+        if (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS,
+                        "getDeviceId", Integer.class)) {
+            return telephonyManager.getDeviceId(slotId);
+        }
+        return null;
+    }
+
+    /**
+     * Whether the phone supports TTY mode.
+     *
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     * @return {@code true} if the device supports TTY mode, and {@code false} otherwise.
+     */
+
+    public static boolean isTtyModeSupported(@Nullable TelephonyManager telephonyManager) {
+        if (telephonyManager == null) {
+            return false;
+        }
+        if (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS, "isTtyModeSupported")) {
+            return telephonyManager.isTtyModeSupported();
+        }
+        return false;
+    }
+
+    /**
+     * Whether the phone supports hearing aid compatibility.
+     *
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     * @return {@code true} if the device supports hearing aid compatibility, and {@code false}
+     * otherwise.
+     */
+    public static boolean isHearingAidCompatibilitySupported(
+            @Nullable TelephonyManager telephonyManager) {
+        if (telephonyManager == null) {
+            return false;
+        }
+        if (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELEPHONY_MANAGER_CLASS,
+                        "isHearingAidCompatibilitySupported")) {
+            return telephonyManager.isHearingAidCompatibilitySupported();
+        }
+        return false;
+    }
+
+    /**
+     * Returns the URI for the per-account voicemail ringtone set in Phone settings.
+     *
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     * @param accountHandle The handle for the {@link android.telecom.PhoneAccount} for which to
+     * retrieve the voicemail ringtone.
+     * @return The URI for the ringtone to play when receiving a voicemail from a specific
+     * PhoneAccount.
+     */
+    @Nullable
+    public static Uri getVoicemailRingtoneUri(TelephonyManager telephonyManager,
+            PhoneAccountHandle accountHandle) {
+        if (!CompatUtils.isNCompatible()) {
+            return null;
+        }
+        return TelephonyManagerSdkCompat
+                .getVoicemailRingtoneUri(telephonyManager, accountHandle);
+    }
+
+    /**
+     * Returns whether vibration is set for voicemail notification in Phone settings.
+     *
+     * @param telephonyManager The telephony manager instance to use for method calls.
+     * @param accountHandle The handle for the {@link android.telecom.PhoneAccount} for which to
+     * retrieve the voicemail vibration setting.
+     * @return {@code true} if the vibration is set for this PhoneAccount, {@code false} otherwise.
+     */
+    public static boolean isVoicemailVibrationEnabled(TelephonyManager telephonyManager,
+            PhoneAccountHandle accountHandle) {
+        if (!CompatUtils.isNCompatible()) {
+            return true;
+        }
+        return TelephonyManagerSdkCompat
+                .isVoicemailVibrationEnabled(telephonyManager, accountHandle);
+    }
+}
diff --git a/src/com/android/contacts/common/compat/TelephonyManagerSdkCompat.java b/src/com/android/contacts/common/compat/TelephonyManagerSdkCompat.java
new file mode 100644
index 0000000..acabfdf
--- /dev/null
+++ b/src/com/android/contacts/common/compat/TelephonyManagerSdkCompat.java
@@ -0,0 +1,38 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.net.Uri;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+
+/**
+ * On N and above, this will look up voicemail notification settings from Telephony.
+ */
+public class TelephonyManagerSdkCompat {
+    public static Uri getVoicemailRingtoneUri(TelephonyManager telephonyManager,
+            PhoneAccountHandle accountHandle) {
+        return CompatUtils.isNCompatible()
+                ? telephonyManager.getVoicemailRingtoneUri(accountHandle) : null;
+    }
+
+    public static boolean isVoicemailVibrationEnabled(TelephonyManager telephonyManager,
+            PhoneAccountHandle accountHandle) {
+        return CompatUtils.isNCompatible()
+                ? telephonyManager.isVoicemailVibrationEnabled(accountHandle) : false;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/TelephonyThreadsCompat.java b/src/com/android/contacts/common/compat/TelephonyThreadsCompat.java
new file mode 100644
index 0000000..d9642c7
--- /dev/null
+++ b/src/com/android/contacts/common/compat/TelephonyThreadsCompat.java
@@ -0,0 +1,168 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.BaseColumns;
+import android.provider.Telephony;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.Patterns;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * This class contains static utility methods and variables extracted from Telephony and
+ * SqliteWrapper, and the methods were made visible in API level 23. In this way, we could
+ * enable the corresponding functionality for pre-M devices. We need maintain this class and keep
+ * it synced with Telephony and SqliteWrapper.
+ */
+public class TelephonyThreadsCompat {
+    /**
+     * Not instantiable.
+     */
+    private TelephonyThreadsCompat() {}
+
+    private static final String TAG = "TelephonyThreadsCompat";
+
+    public static long getOrCreateThreadId(Context context, String recipient) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M) {
+            return Telephony.Threads.getOrCreateThreadId(context, recipient);
+        } else {
+            return getOrCreateThreadIdInternal(context, recipient);
+        }
+    }
+
+    // Below is code copied from Telephony and SqliteWrapper
+    /**
+     * Private {@code content://} style URL for this table. Used by
+     * {@link #getOrCreateThreadId(Context, Set)}.
+     */
+    private static final Uri THREAD_ID_CONTENT_URI = Uri.parse("content://mms-sms/threadID");
+
+    private static final String[] ID_PROJECTION = { BaseColumns._ID };
+
+    /**
+     * Regex pattern for names and email addresses.
+     * <ul>
+     *     <li><em>mailbox</em> = {@code name-addr}</li>
+     *     <li><em>name-addr</em> = {@code [display-name] angle-addr}</li>
+     *     <li><em>angle-addr</em> = {@code [CFWS] "<" addr-spec ">" [CFWS]}</li>
+     * </ul>
+     */
+    private static final Pattern NAME_ADDR_EMAIL_PATTERN =
+            Pattern.compile("\\s*(\"[^\"]*\"|[^<>\"]+)\\s*<([^<>]+)>\\s*");
+
+    /**
+     * Copied from {@link Telephony.Threads#getOrCreateThreadId(Context, String)}
+     */
+    private static long getOrCreateThreadIdInternal(Context context, String recipient) {
+        Set<String> recipients = new HashSet<String>();
+
+        recipients.add(recipient);
+        return getOrCreateThreadIdInternal(context, recipients);
+    }
+
+    /**
+     * Given the recipients list and subject of an unsaved message,
+     * return its thread ID.  If the message starts a new thread,
+     * allocate a new thread ID.  Otherwise, use the appropriate
+     * existing thread ID.
+     *
+     * <p>Find the thread ID of the same set of recipients (in any order,
+     * without any additions). If one is found, return it. Otherwise,
+     * return a unique thread ID.</p>
+     */
+    private static long getOrCreateThreadIdInternal(Context context, Set<String> recipients) {
+        Uri.Builder uriBuilder = THREAD_ID_CONTENT_URI.buildUpon();
+
+        for (String recipient : recipients) {
+            if (isEmailAddress(recipient)) {
+                recipient = extractAddrSpec(recipient);
+            }
+
+            uriBuilder.appendQueryParameter("recipient", recipient);
+        }
+
+        Uri uri = uriBuilder.build();
+
+        Cursor cursor = query(
+                context.getContentResolver(), uri, ID_PROJECTION, null, null, null);
+        if (cursor != null) {
+            try {
+                if (cursor.moveToFirst()) {
+                    return cursor.getLong(0);
+                } else {
+                    Log.e(TAG, "getOrCreateThreadId returned no rows!");
+                }
+            } finally {
+                cursor.close();
+            }
+        }
+
+        Log.e(TAG, "getOrCreateThreadId failed with uri " + uri.toString());
+        throw new IllegalArgumentException("Unable to find or allocate a thread ID.");
+    }
+
+    /**
+     * Copied from {@link SqliteWrapper#query}
+     */
+    private static Cursor query(ContentResolver resolver, Uri uri, String[] projection,
+            String selection, String[] selectionArgs, String sortOrder) {
+        try {
+            return resolver.query(uri, projection, selection, selectionArgs, sortOrder);
+        } catch (Exception e) {
+            Log.e(TAG, "Catch an exception when query: ", e);
+            return null;
+        }
+    }
+
+    /**
+     * Is the specified address an email address?
+     *
+     * @param address the input address to test
+     * @return true if address is an email address; false otherwise.
+     */
+    private static boolean isEmailAddress(String address) {
+        if (TextUtils.isEmpty(address)) {
+            return false;
+        }
+
+        String s = extractAddrSpec(address);
+        Matcher match = Patterns.EMAIL_ADDRESS.matcher(s);
+        return match.matches();
+    }
+
+    /**
+     * Helper method to extract email address from address string.
+     */
+    private static String extractAddrSpec(String address) {
+        Matcher match = NAME_ADDR_EMAIL_PATTERN.matcher(address);
+
+        if (match.matches()) {
+            return match.group(2);
+        }
+        return address;
+    }
+}
diff --git a/src/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/src/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
new file mode 100644
index 0000000..6292b7f
--- /dev/null
+++ b/src/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
@@ -0,0 +1,282 @@
+/*
+ * 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.contacts.common.compat.telecom;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.Context;
+import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+
+import com.android.contacts.common.compat.CompatUtils;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Compatibility class for {@link android.telecom.TelecomManager}.
+ */
+public class TelecomManagerCompat {
+    public static final String TELECOM_MANAGER_CLASS = "android.telecom.TelecomManager";
+    /**
+     * Places a new outgoing call to the provided address using the system telecom service with
+     * the specified intent.
+     *
+     * @param activity {@link Activity} used to start another activity for the given intent
+     * @param telecomManager the {@link TelecomManager} used to place a call, if possible
+     * @param intent the intent for the call
+     */
+    public static void placeCall(@Nullable Activity activity,
+            @Nullable TelecomManager telecomManager, @Nullable Intent intent) {
+        if (activity == null || telecomManager == null || intent == null) {
+            return;
+        }
+        if (CompatUtils.isMarshmallowCompatible()) {
+            telecomManager.placeCall(intent.getData(), intent.getExtras());
+            return;
+        }
+        activity.startActivityForResult(intent, 0);
+    }
+
+    /**
+     * Get the URI for running an adn query.
+     *
+     * @param telecomManager the {@link TelecomManager} used for method calls, if possible.
+     * @param accountHandle The handle for the account to derive an adn query URI for or
+     * {@code null} to return a URI which will use the default account.
+     * @return The URI (with the content:// scheme) specific to the specified {@link PhoneAccount}
+     * for the the content retrieve.
+     */
+    public static Uri getAdnUriForPhoneAccount(@Nullable TelecomManager telecomManager,
+            PhoneAccountHandle accountHandle) {
+        if (telecomManager != null && (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELECOM_MANAGER_CLASS, "getAdnUriForPhoneAccount",
+                        PhoneAccountHandle.class))) {
+            return telecomManager.getAdnUriForPhoneAccount(accountHandle);
+        }
+        return Uri.parse("content://icc/adn");
+    }
+
+    /**
+     * Returns a list of {@link PhoneAccountHandle}s which can be used to make and receive phone
+     * calls. The returned list includes only those accounts which have been explicitly enabled
+     * by the user.
+     *
+     * @param telecomManager the {@link TelecomManager} used for method calls, if possible.
+     * @return A list of PhoneAccountHandle objects.
+     */
+    public static List<PhoneAccountHandle> getCallCapablePhoneAccounts(
+            @Nullable TelecomManager telecomManager) {
+        if (telecomManager != null && (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELECOM_MANAGER_CLASS,
+                        "getCallCapablePhoneAccounts"))) {
+            return telecomManager.getCallCapablePhoneAccounts();
+        }
+        return new ArrayList<>();
+    }
+
+    /**
+     * Used to determine the currently selected default dialer package.
+     *
+     * @param telecomManager the {@link TelecomManager} used for method calls, if possible.
+     * @return package name for the default dialer package or null if no package has been
+     *         selected as the default dialer.
+     */
+    @Nullable
+    public static String getDefaultDialerPackage(@Nullable TelecomManager telecomManager) {
+        if (telecomManager != null && CompatUtils.isDefaultDialerCompatible()) {
+            return telecomManager.getDefaultDialerPackage();
+        }
+        return null;
+    }
+
+    /**
+     * Return the {@link PhoneAccount} which will be used to place outgoing calls to addresses with
+     * the specified {@code uriScheme}. This PhoneAccount will always be a member of the
+     * list which is returned from invoking {@link TelecomManager#getCallCapablePhoneAccounts()}.
+     * The specific account returned depends on the following priorities:
+     *
+     * 1. If the user-selected default PhoneAccount supports the specified scheme, it will
+     * be returned.
+     * 2. If there exists only one PhoneAccount that supports the specified scheme, it
+     * will be returned.
+     *
+     * If no PhoneAccount fits the criteria above, this method will return {@code null}.
+     *
+     * @param telecomManager the {@link TelecomManager} used for method calls, if possible.
+     * @param uriScheme The URI scheme.
+     * @return The {@link PhoneAccountHandle} corresponding to the account to be used.
+     */
+    @Nullable
+    public static PhoneAccountHandle getDefaultOutgoingPhoneAccount(
+            @Nullable TelecomManager telecomManager, @Nullable String uriScheme) {
+        if (telecomManager != null && (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELECOM_MANAGER_CLASS,
+                        "getDefaultOutgoingPhoneAccount", String.class))) {
+            return telecomManager.getDefaultOutgoingPhoneAccount(uriScheme);
+        }
+        return null;
+    }
+
+    /**
+     * Return the line 1 phone number for given phone account.
+     *
+     * @param telecomManager the {@link TelecomManager} to use in the event that
+     *    {@link TelecomManager#getLine1Number(PhoneAccountHandle)} is available
+     * @param telephonyManager the {@link TelephonyManager} to use if TelecomManager#getLine1Number
+     *    is unavailable
+     * @param phoneAccountHandle the phoneAccountHandle upon which to check the line one number
+     * @return the line one number
+     */
+    @Nullable
+    public static String getLine1Number(@Nullable TelecomManager telecomManager,
+            @Nullable TelephonyManager telephonyManager,
+            @Nullable PhoneAccountHandle phoneAccountHandle) {
+        if (telecomManager != null && CompatUtils.isMarshmallowCompatible()) {
+            return telecomManager.getLine1Number(phoneAccountHandle);
+        }
+        if (telephonyManager != null) {
+            return telephonyManager.getLine1Number();
+        }
+        return null;
+    }
+
+    /**
+     * Return whether a given phone number is the configured voicemail number for a
+     * particular phone account.
+     *
+     * @param telecomManager the {@link TelecomManager} to use for checking the number.
+     * @param accountHandle The handle for the account to check the voicemail number against
+     * @param number The number to look up.
+     */
+    public static boolean isVoiceMailNumber(@Nullable TelecomManager telecomManager,
+            @Nullable PhoneAccountHandle accountHandle, @Nullable String number) {
+        if (telecomManager != null && (CompatUtils.isMarshmallowCompatible()
+                || CompatUtils.isMethodAvailable(TELECOM_MANAGER_CLASS, "isVoiceMailNumber",
+                        PhoneAccountHandle.class, String.class))) {
+            return telecomManager.isVoiceMailNumber(accountHandle, number);
+        }
+        return PhoneNumberUtils.isVoiceMailNumber(number);
+    }
+
+    /**
+     * Return the {@link PhoneAccount} for a specified {@link PhoneAccountHandle}. Object includes
+     * resources which can be used in a user interface.
+     *
+     * @param telecomManager the {@link TelecomManager} used for method calls, if possible.
+     * @param account The {@link PhoneAccountHandle}.
+     * @return The {@link PhoneAccount} object or null if it doesn't exist.
+     */
+    @Nullable
+    public static PhoneAccount getPhoneAccount(@Nullable TelecomManager telecomManager,
+            @Nullable PhoneAccountHandle accountHandle) {
+        if (telecomManager != null && (CompatUtils.isMethodAvailable(
+                TELECOM_MANAGER_CLASS, "getPhoneAccount", PhoneAccountHandle.class))) {
+            return telecomManager.getPhoneAccount(accountHandle);
+        }
+        return null;
+    }
+
+    /**
+     * Return the voicemail number for a given phone account.
+     *
+     * @param telecomManager The {@link TelecomManager} object to use for retrieving the voicemail
+     * number if accountHandle is specified.
+     * @param telephonyManager The {@link TelephonyManager} object to use for retrieving the
+     * voicemail number if accountHandle is null.
+     * @param accountHandle The handle for the phone account.
+     * @return The voicemail number for the phone account, and {@code null} if one has not been
+     *         configured.
+     */
+    @Nullable
+    public static String getVoiceMailNumber(@Nullable TelecomManager telecomManager,
+            @Nullable TelephonyManager telephonyManager,
+            @Nullable PhoneAccountHandle accountHandle) {
+        if (telecomManager != null && (CompatUtils.isMethodAvailable(
+                TELECOM_MANAGER_CLASS, "getVoiceMailNumber", PhoneAccountHandle.class))) {
+            return telecomManager.getVoiceMailNumber(accountHandle);
+        } else if (telephonyManager != null){
+            return telephonyManager.getVoiceMailNumber();
+        }
+        return null;
+    }
+
+    /**
+     * Processes the specified dial string as an MMI code.
+     * MMI codes are any sequence of characters entered into the dialpad that contain a "*" or "#".
+     * Some of these sequences launch special behavior through handled by Telephony.
+     *
+     * @param telecomManager The {@link TelecomManager} object to use for handling MMI.
+     * @param dialString The digits to dial.
+     * @return {@code true} if the digits were processed as an MMI code, {@code false} otherwise.
+     */
+    public static boolean handleMmi(@Nullable TelecomManager telecomManager,
+            @Nullable String dialString, @Nullable PhoneAccountHandle accountHandle) {
+        if (telecomManager == null || TextUtils.isEmpty(dialString)) {
+            return false;
+        }
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return telecomManager.handleMmi(dialString, accountHandle);
+        }
+
+        Object handleMmiResult = CompatUtils.invokeMethod(
+                telecomManager,
+                "handleMmi",
+                new Class<?>[] {PhoneAccountHandle.class, String.class},
+                new Object[] {accountHandle, dialString});
+        if (handleMmiResult != null) {
+            return (boolean) handleMmiResult;
+        }
+
+        return telecomManager.handleMmi(dialString);
+    }
+
+    /**
+     * Silences the ringer if a ringing call exists. Noop if {@link TelecomManager#silenceRinger()}
+     * is unavailable.
+     *
+     * @param telecomManager the TelecomManager to use to silence the ringer.
+     */
+    public static void silenceRinger(@Nullable TelecomManager telecomManager) {
+        if (telecomManager != null && (CompatUtils.isMarshmallowCompatible() || CompatUtils
+                .isMethodAvailable(TELECOM_MANAGER_CLASS, "silenceRinger"))) {
+            telecomManager.silenceRinger();
+        }
+    }
+
+    /**
+     * Returns the current SIM call manager. Apps must be prepared for this method to return null,
+     * indicating that there currently exists no registered SIM call manager.
+     *
+     * @param telecomManager the {@link TelecomManager} to use to fetch the SIM call manager.
+     * @return The phone account handle of the current sim call manager.
+     */
+    @Nullable
+    public static PhoneAccountHandle getSimCallManager(TelecomManager telecomManager) {
+        if (telecomManager != null && (CompatUtils.isMarshmallowCompatible() || CompatUtils
+                .isMethodAvailable(TELECOM_MANAGER_CLASS, "getSimCallManager"))) {
+            return telecomManager.getSimCallManager();
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/contacts/common/database/ContactUpdateUtils.java b/src/com/android/contacts/common/database/ContactUpdateUtils.java
new file mode 100644
index 0000000..1bd08aa
--- /dev/null
+++ b/src/com/android/contacts/common/database/ContactUpdateUtils.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.database;
+
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.util.Log;
+
+/**
+ * Static methods to update contact information.
+ */
+public class ContactUpdateUtils {
+
+    private static final String TAG = ContactUpdateUtils.class.getSimpleName();
+
+    public static void setSuperPrimary(Context context, long dataId) {
+        if (dataId == -1) {
+            Log.e(TAG, "Invalid arguments for setSuperPrimary request");
+            return;
+        }
+
+        // Update the primary values in the data record.
+        ContentValues values = new ContentValues(2);
+        values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
+        values.put(ContactsContract.Data.IS_PRIMARY, 1);
+
+        context.getContentResolver().update(
+                ContentUris.withAppendedId(ContactsContract.Data.CONTENT_URI, dataId),
+                values, null, null);
+    }
+}
diff --git a/src/com/android/contacts/common/database/EmptyCursor.java b/src/com/android/contacts/common/database/EmptyCursor.java
new file mode 100644
index 0000000..ad00eff
--- /dev/null
+++ b/src/com/android/contacts/common/database/EmptyCursor.java
@@ -0,0 +1,84 @@
+/*
+* Copyright (C) 2012 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.contacts.common.database;
+
+import android.database.AbstractCursor;
+import android.database.CursorIndexOutOfBoundsException;
+
+/**
+ * A cursor that is empty.
+ * <p>
+ * If you want an empty cursor, this class is better than a MatrixCursor because it has less
+ * overhead.
+ */
+final public class EmptyCursor extends AbstractCursor {
+
+    private String[] mColumns;
+
+    public EmptyCursor(String[] columns) {
+        this.mColumns = columns;
+    }
+
+    @Override
+    public int getCount() {
+        return 0;
+    }
+
+    @Override
+    public String[] getColumnNames() {
+        return mColumns;
+    }
+
+    @Override
+    public String getString(int column) {
+        throw cursorException();
+    }
+
+    @Override
+    public short getShort(int column) {
+        throw cursorException();
+    }
+
+    @Override
+    public int getInt(int column) {
+        throw cursorException();
+    }
+
+    @Override
+    public long getLong(int column) {
+        throw cursorException();
+    }
+
+    @Override
+    public float getFloat(int column) {
+        throw cursorException();
+    }
+
+    @Override
+    public double getDouble(int column) {
+        throw cursorException();
+    }
+
+    @Override
+    public boolean isNull(int column) {
+        throw cursorException();
+    }
+
+    private CursorIndexOutOfBoundsException cursorException() {
+        return new CursorIndexOutOfBoundsException("Operation not permitted on an empty cursor.");
+    }
+}
diff --git a/src/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/src/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
new file mode 100644
index 0000000..aefc0fd
--- /dev/null
+++ b/src/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.database;
+
+import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
+import android.database.Cursor;
+import android.net.Uri;
+
+/**
+ * An {@AsyncQueryHandler} that will never return a null cursor.
+ * <p>
+ * Instead, will return a {@link Cursor} with 0 records.
+ */
+public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
+
+    public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
+        super(cr);
+    }
+
+    @Override
+    public void startQuery(int token, Object cookie, Uri uri, String[] projection, String selection,
+            String[] selectionArgs, String orderBy) {
+        final CookieWithProjection projectionCookie = new CookieWithProjection(cookie, projection);
+        super.startQuery(token, projectionCookie, uri, projection, selection, selectionArgs,
+                orderBy);
+    }
+
+    @Override
+    protected final void onQueryComplete(int token, Object cookie, Cursor cursor) {
+        CookieWithProjection projectionCookie = (CookieWithProjection) cookie;
+
+        super.onQueryComplete(token, projectionCookie.originalCookie, cursor);
+
+        if (cursor == null) {
+            cursor = new EmptyCursor(projectionCookie.projection);
+        }
+        onNotNullableQueryComplete(token, projectionCookie.originalCookie, cursor);
+    }
+
+    protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
+
+    /**
+     * Class to add projection to an existing cookie.
+     */
+    private static class CookieWithProjection {
+        public final Object originalCookie;
+        public final String[] projection;
+
+        public CookieWithProjection(Object cookie, String[] projection) {
+            this.originalCookie = cookie;
+            this.projection = projection;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/dialog/CallSubjectDialog.java b/src/com/android/contacts/common/dialog/CallSubjectDialog.java
new file mode 100644
index 0000000..a17c4fc
--- /dev/null
+++ b/src/com/android/contacts/common/dialog/CallSubjectDialog.java
@@ -0,0 +1,623 @@
+/*
+ * 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.contacts.common.dialog;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.Uri;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ListView;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.PhoneAccountSdkCompat;
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.contacts.common.util.UriUtils;
+import com.android.phone.common.animation.AnimUtils;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Implements a dialog which prompts for a call subject for an outgoing call.  The dialog includes
+ * a pop up list of historical call subjects.
+ */
+public class CallSubjectDialog extends Activity {
+    private static final String TAG = "CallSubjectDialog";
+    private static final int CALL_SUBJECT_LIMIT = 16;
+    private static final int CALL_SUBJECT_HISTORY_SIZE = 5;
+
+    private static final int REQUEST_SUBJECT = 1001;
+
+    public static final String PREF_KEY_SUBJECT_HISTORY_COUNT = "subject_history_count";
+    public static final String PREF_KEY_SUBJECT_HISTORY_ITEM = "subject_history_item";
+
+    /**
+     * Activity intent argument bundle keys:
+     */
+    public static final String ARG_PHOTO_ID = "PHOTO_ID";
+    public static final String ARG_PHOTO_URI = "PHOTO_URI";
+    public static final String ARG_CONTACT_URI = "CONTACT_URI";
+    public static final String ARG_NAME_OR_NUMBER = "NAME_OR_NUMBER";
+    public static final String ARG_IS_BUSINESS = "IS_BUSINESS";
+    public static final String ARG_NUMBER = "NUMBER";
+    public static final String ARG_DISPLAY_NUMBER = "DISPLAY_NUMBER";
+    public static final String ARG_NUMBER_LABEL = "NUMBER_LABEL";
+    public static final String ARG_PHONE_ACCOUNT_HANDLE = "PHONE_ACCOUNT_HANDLE";
+
+    private int mAnimationDuration;
+    private Charset mMessageEncoding;
+    private View mBackgroundView;
+    private View mDialogView;
+    private QuickContactBadge mContactPhoto;
+    private TextView mNameView;
+    private TextView mNumberView;
+    private EditText mCallSubjectView;
+    private TextView mCharacterLimitView;
+    private View mHistoryButton;
+    private View mSendAndCallButton;
+    private ListView mSubjectList;
+
+    private int mLimit = CALL_SUBJECT_LIMIT;
+    private int mPhotoSize;
+    private SharedPreferences mPrefs;
+    private List<String> mSubjectHistory;
+
+    private long mPhotoID;
+    private Uri mPhotoUri;
+    private Uri mContactUri;
+    private String mNameOrNumber;
+    private boolean mIsBusiness;
+    private String mNumber;
+    private String mDisplayNumber;
+    private String mNumberLabel;
+    private PhoneAccountHandle mPhoneAccountHandle;
+
+    /**
+     * Handles changes to the text in the subject box.  Ensures the character limit is updated.
+     */
+    private final TextWatcher mTextWatcher = new TextWatcher() {
+        @Override
+        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            // no-op
+        }
+
+        @Override
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+            updateCharacterLimit();
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+            // no-op
+        }
+    };
+
+    /**
+     * Click listener which handles user clicks outside of the dialog.
+     */
+    private View.OnClickListener mBackgroundListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            finish();
+        }
+    };
+
+    /**
+     * Handles displaying the list of past call subjects.
+     */
+    private final View.OnClickListener mHistoryOnClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            hideSoftKeyboard(CallSubjectDialog.this, mCallSubjectView);
+            showCallHistory(mSubjectList.getVisibility() == View.GONE);
+        }
+    };
+
+    /**
+     * Handles starting a call with a call subject specified.
+     */
+    private final View.OnClickListener mSendAndCallOnClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            String subject = mCallSubjectView.getText().toString();
+            Intent intent = CallUtil.getCallWithSubjectIntent(mNumber, mPhoneAccountHandle,
+                    subject);
+
+            TelecomManagerCompat.placeCall(
+                    CallSubjectDialog.this,
+                    (TelecomManager) getSystemService(Context.TELECOM_SERVICE),
+                    intent);
+
+            mSubjectHistory.add(subject);
+            saveSubjectHistory(mSubjectHistory);
+            finish();
+        }
+    };
+
+    /**
+     * Handles auto-hiding the call history when user clicks in the call subject field to give it
+     * focus.
+     */
+    private final View.OnClickListener mCallSubjectClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (mSubjectList.getVisibility() == View.VISIBLE) {
+                showCallHistory(false);
+            }
+        }
+    };
+
+    /**
+     * Item click listener which handles user clicks on the items in the list view.  Dismisses
+     * the activity, returning the subject to the caller and closing the activity with the
+     * {@link Activity#RESULT_OK} result code.
+     */
+    private AdapterView.OnItemClickListener mItemClickListener =
+            new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
+                    mCallSubjectView.setText(mSubjectHistory.get(position));
+                    showCallHistory(false);
+                }
+            };
+
+    /**
+     * Show the call subject dialog given a phone number to dial (e.g. from the dialpad).
+     *
+     * @param activity The activity.
+     * @param number The number to dial.
+     */
+    public static void start(Activity activity, String number) {
+        start(activity,
+                -1 /* photoId */,
+                null /* photoUri */,
+                null /* contactUri */,
+                number /* nameOrNumber */,
+                false /* isBusiness */,
+                number /* number */,
+                null /* displayNumber */,
+                null /* numberLabel */,
+                null /* phoneAccountHandle */);
+    }
+
+    /**
+     * Creates a call subject dialog.
+     *
+     * @param activity The current activity.
+     * @param photoId The photo ID (used to populate contact photo).
+     * @param photoUri The photo Uri (used to populate contact photo).
+     * @param contactUri The Contact URI (used so quick contact can be invoked from contact photo).
+     * @param nameOrNumber The name or number of the callee.
+     * @param isBusiness {@code true} if a business is being called (used for contact photo).
+     * @param number The raw number to dial.
+     * @param displayNumber The number to dial, formatted for display.
+     * @param numberLabel The label for the number (if from a contact).
+     * @param phoneAccountHandle The phone account handle.
+     */
+    public static void start(Activity activity, long photoId, Uri photoUri, Uri contactUri,
+            String nameOrNumber, boolean isBusiness, String number, String displayNumber,
+            String numberLabel, PhoneAccountHandle phoneAccountHandle) {
+        Bundle arguments = new Bundle();
+        arguments.putLong(ARG_PHOTO_ID, photoId);
+        arguments.putParcelable(ARG_PHOTO_URI, photoUri);
+        arguments.putParcelable(ARG_CONTACT_URI, contactUri);
+        arguments.putString(ARG_NAME_OR_NUMBER, nameOrNumber);
+        arguments.putBoolean(ARG_IS_BUSINESS, isBusiness);
+        arguments.putString(ARG_NUMBER, number);
+        arguments.putString(ARG_DISPLAY_NUMBER, displayNumber);
+        arguments.putString(ARG_NUMBER_LABEL, numberLabel);
+        arguments.putParcelable(ARG_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+        start(activity, arguments);
+    }
+
+    /**
+     * Shows the call subject dialog given a Bundle containing all the arguments required to
+     * display the dialog (e.g. from Quick Contacts).
+     *
+     * @param activity The activity.
+     * @param arguments The arguments bundle.
+     */
+    public static void start(Activity activity, Bundle arguments) {
+        Intent intent = new Intent(activity, CallSubjectDialog.class);
+        intent.putExtras(arguments);
+        activity.startActivity(intent);
+    }
+
+    /**
+     * Creates the dialog, inflating the layout and populating it with the name and phone number.
+     *
+     * @param savedInstanceState The last saved instance state of the Fragment,
+     * or null if this is a freshly created Fragment.
+     *
+     * @return Dialog instance.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mAnimationDuration = getResources().getInteger(R.integer.call_subject_animation_duration);
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+        mPhotoSize = getResources().getDimensionPixelSize(
+                R.dimen.call_subject_dialog_contact_photo_size);
+        readArguments();
+        loadConfiguration();
+        mSubjectHistory = loadSubjectHistory(mPrefs);
+
+        setContentView(R.layout.dialog_call_subject);
+        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
+                ViewGroup.LayoutParams.MATCH_PARENT);
+        mBackgroundView = findViewById(R.id.call_subject_dialog);
+        mBackgroundView.setOnClickListener(mBackgroundListener);
+        mDialogView = findViewById(R.id.dialog_view);
+        mContactPhoto = (QuickContactBadge) findViewById(R.id.contact_photo);
+        mNameView = (TextView) findViewById(R.id.name);
+        mNumberView = (TextView) findViewById(R.id.number);
+        mCallSubjectView = (EditText) findViewById(R.id.call_subject);
+        mCallSubjectView.addTextChangedListener(mTextWatcher);
+        mCallSubjectView.setOnClickListener(mCallSubjectClickListener);
+        InputFilter[] filters = new InputFilter[1];
+        filters[0] = new InputFilter.LengthFilter(mLimit);
+        mCallSubjectView.setFilters(filters);
+        mCharacterLimitView = (TextView) findViewById(R.id.character_limit);
+        mHistoryButton = findViewById(R.id.history_button);
+        mHistoryButton.setOnClickListener(mHistoryOnClickListener);
+        mHistoryButton.setVisibility(mSubjectHistory.isEmpty() ? View.GONE : View.VISIBLE);
+        mSendAndCallButton = findViewById(R.id.send_and_call_button);
+        mSendAndCallButton.setOnClickListener(mSendAndCallOnClickListener);
+        mSubjectList = (ListView) findViewById(R.id.subject_list);
+        mSubjectList.setOnItemClickListener(mItemClickListener);
+        mSubjectList.setVisibility(View.GONE);
+
+        updateContactInfo();
+        updateCharacterLimit();
+    }
+
+    /**
+     * Populates the contact info fields based on the current contact information.
+     */
+    private void updateContactInfo() {
+        if (mContactUri != null) {
+            setPhoto(mPhotoID, mPhotoUri, mContactUri, mNameOrNumber, mIsBusiness);
+        } else {
+            mContactPhoto.setVisibility(View.GONE);
+        }
+        mNameView.setText(mNameOrNumber);
+        if (!TextUtils.isEmpty(mNumberLabel) && !TextUtils.isEmpty(mDisplayNumber)) {
+            mNumberView.setVisibility(View.VISIBLE);
+            mNumberView.setText(getString(R.string.call_subject_type_and_number,
+                    mNumberLabel, mDisplayNumber));
+        } else {
+            mNumberView.setVisibility(View.GONE);
+            mNumberView.setText(null);
+        }
+    }
+
+    /**
+     * Reads arguments from the fragment arguments and populates the necessary instance variables.
+     */
+    private void readArguments() {
+        Bundle arguments = getIntent().getExtras();
+        if (arguments == null) {
+            Log.e(TAG, "Arguments cannot be null.");
+            return;
+        }
+        mPhotoID = arguments.getLong(ARG_PHOTO_ID);
+        mPhotoUri = arguments.getParcelable(ARG_PHOTO_URI);
+        mContactUri = arguments.getParcelable(ARG_CONTACT_URI);
+        mNameOrNumber = arguments.getString(ARG_NAME_OR_NUMBER);
+        mIsBusiness = arguments.getBoolean(ARG_IS_BUSINESS);
+        mNumber = arguments.getString(ARG_NUMBER);
+        mDisplayNumber = arguments.getString(ARG_DISPLAY_NUMBER);
+        mNumberLabel = arguments.getString(ARG_NUMBER_LABEL);
+        mPhoneAccountHandle = arguments.getParcelable(ARG_PHONE_ACCOUNT_HANDLE);
+    }
+
+    /**
+     * Updates the character limit display, coloring the text RED when the limit is reached or
+     * exceeded.
+     */
+    private void updateCharacterLimit() {
+        String subjectText = mCallSubjectView.getText().toString();
+        final int length;
+
+        // If a message encoding is specified, use that to count bytes in the message.
+        if (mMessageEncoding != null) {
+            length = subjectText.getBytes(mMessageEncoding).length;
+        } else {
+            // No message encoding specified, so just count characters entered.
+            length = subjectText.length();
+        }
+
+        mCharacterLimitView.setText(
+                getString(R.string.call_subject_limit, length, mLimit));
+        if (length >= mLimit) {
+            mCharacterLimitView.setTextColor(getResources().getColor(
+                    R.color.call_subject_limit_exceeded));
+        } else {
+            mCharacterLimitView.setTextColor(getResources().getColor(
+                    R.color.dialtacts_secondary_text_color));
+        }
+    }
+
+    /**
+     * Sets the photo on the quick contact photo.
+     *
+     * @param photoId
+     * @param photoUri
+     * @param contactUri
+     * @param displayName
+     * @param isBusiness
+     */
+    private void setPhoto(long photoId, Uri photoUri, Uri contactUri, String displayName,
+            boolean isBusiness) {
+        mContactPhoto.assignContactUri(contactUri);
+        if (CompatUtils.isLollipopCompatible()) {
+            mContactPhoto.setOverlay(null);
+        }
+
+        int contactType;
+        if (isBusiness) {
+            contactType = ContactPhotoManager.TYPE_BUSINESS;
+        } else {
+            contactType = ContactPhotoManager.TYPE_DEFAULT;
+        }
+
+        String lookupKey = null;
+        if (contactUri != null) {
+            lookupKey = UriUtils.getLookupKeyFromUri(contactUri);
+        }
+
+        ContactPhotoManager.DefaultImageRequest
+                request = new ContactPhotoManager.DefaultImageRequest(
+                displayName, lookupKey, contactType, true /* isCircular */);
+
+        if (photoId == 0 && photoUri != null) {
+            ContactPhotoManager.getInstance(this).loadPhoto(mContactPhoto, photoUri,
+                    mPhotoSize, false /* darkTheme */, true /* isCircular */, request);
+        } else {
+            ContactPhotoManager.getInstance(this).loadThumbnail(mContactPhoto, photoId,
+                    false /* darkTheme */, true /* isCircular */, request);
+        }
+    }
+
+    /**
+     * Loads the subject history from shared preferences.
+     *
+     * @param prefs Shared preferences.
+     * @return List of subject history strings.
+     */
+    public static List<String> loadSubjectHistory(SharedPreferences prefs) {
+        int historySize = prefs.getInt(PREF_KEY_SUBJECT_HISTORY_COUNT, 0);
+        List<String> subjects = new ArrayList(historySize);
+
+        for (int ix = 0 ; ix < historySize; ix++) {
+            String historyItem = prefs.getString(PREF_KEY_SUBJECT_HISTORY_ITEM + ix, null);
+            if (!TextUtils.isEmpty(historyItem)) {
+                subjects.add(historyItem);
+            }
+        }
+
+        return subjects;
+    }
+
+    /**
+     * Saves the subject history list to shared prefs, removing older items so that there are only
+     * {@link #CALL_SUBJECT_HISTORY_SIZE} items at most.
+     *
+     * @param history The history.
+     */
+    private void saveSubjectHistory(List<String> history) {
+        // Remove oldest subject(s).
+        while (history.size() > CALL_SUBJECT_HISTORY_SIZE) {
+            history.remove(0);
+        }
+
+        SharedPreferences.Editor editor = mPrefs.edit();
+        int historyCount = 0;
+        for (String subject : history) {
+            if (!TextUtils.isEmpty(subject)) {
+                editor.putString(PREF_KEY_SUBJECT_HISTORY_ITEM + historyCount,
+                        subject);
+                historyCount++;
+            }
+        }
+        editor.putInt(PREF_KEY_SUBJECT_HISTORY_COUNT, historyCount);
+        editor.apply();
+    }
+
+    /**
+     * Hide software keyboard for the given {@link View}.
+     */
+    public void hideSoftKeyboard(Context context, View view) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(
+                Context.INPUT_METHOD_SERVICE);
+        if (imm != null) {
+            imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+        }
+    }
+
+    /**
+     * Hides or shows the call history list.
+     *
+     * @param show {@code true} if the call history should be shown, {@code false} otherwise.
+     */
+    private void showCallHistory(final boolean show) {
+        // Bail early if the visibility has not changed.
+        if ((show && mSubjectList.getVisibility() == View.VISIBLE) ||
+                (!show && mSubjectList.getVisibility() == View.GONE)) {
+            return;
+        }
+
+        final int dialogStartingBottom = mDialogView.getBottom();
+        if (show) {
+            // Showing the subject list; bind the list of history items to the list and show it.
+            ArrayAdapter<String> adapter = new ArrayAdapter<String>(CallSubjectDialog.this,
+                    R.layout.call_subject_history_list_item, mSubjectHistory);
+            mSubjectList.setAdapter(adapter);
+            mSubjectList.setVisibility(View.VISIBLE);
+        } else {
+            // Hiding the subject list.
+            mSubjectList.setVisibility(View.GONE);
+        }
+
+        // Use a ViewTreeObserver so that we can animate between the pre-layout and post-layout
+        // states.
+        final ViewTreeObserver observer = mBackgroundView.getViewTreeObserver();
+        observer.addOnPreDrawListener(
+                new ViewTreeObserver.OnPreDrawListener() {
+                    @Override
+                    public boolean onPreDraw() {
+                        // We don't want to continue getting called.
+                        if (observer.isAlive()) {
+                            observer.removeOnPreDrawListener(this);
+                        }
+
+                        // Determine the amount the dialog has shifted due to the relayout.
+                        int shiftAmount = dialogStartingBottom - mDialogView.getBottom();
+
+                        // If the dialog needs to be shifted, do that now.
+                        if (shiftAmount != 0) {
+                            // Start animation in translated state and animate to translationY 0.
+                            mDialogView.setTranslationY(shiftAmount);
+                            mDialogView.animate()
+                                    .translationY(0)
+                                    .setInterpolator(AnimUtils.EASE_OUT_EASE_IN)
+                                    .setDuration(mAnimationDuration)
+                                    .start();
+                        }
+
+                        if (show) {
+                            // Show the subhect list.
+                            mSubjectList.setTranslationY(mSubjectList.getHeight());
+
+                            mSubjectList.animate()
+                                    .translationY(0)
+                                    .setInterpolator(AnimUtils.EASE_OUT_EASE_IN)
+                                    .setDuration(mAnimationDuration)
+                                    .setListener(new AnimatorListenerAdapter() {
+                                        @Override
+                                        public void onAnimationEnd(Animator animation) {
+                                            super.onAnimationEnd(animation);
+                                        }
+
+                                        @Override
+                                        public void onAnimationStart(Animator animation) {
+                                            super.onAnimationStart(animation);
+                                            mSubjectList.setVisibility(View.VISIBLE);
+                                        }
+                                    })
+                                    .start();
+                        } else {
+                            // Hide the subject list.
+                            mSubjectList.setTranslationY(0);
+
+                            mSubjectList.animate()
+                                    .translationY(mSubjectList.getHeight())
+                                    .setInterpolator(AnimUtils.EASE_OUT_EASE_IN)
+                                    .setDuration(mAnimationDuration)
+                                    .setListener(new AnimatorListenerAdapter() {
+                                        @Override
+                                        public void onAnimationEnd(Animator animation) {
+                                            super.onAnimationEnd(animation);
+                                            mSubjectList.setVisibility(View.GONE);
+                                        }
+
+                                        @Override
+                                        public void onAnimationStart(Animator animation) {
+                                            super.onAnimationStart(animation);
+                                        }
+                                    })
+                                    .start();
+                        }
+                        return true;
+                    }
+                }
+        );
+    }
+
+    /**
+     * Loads the message encoding and maximum message length from the phone account extras for the
+     * current phone account.
+     */
+    private void loadConfiguration() {
+        // Only attempt to load configuration from the phone account extras if the SDK is N or
+        // later.  If we've got a prior SDK the default encoding and message length will suffice.
+        int sdk = android.os.Build.VERSION.SDK_INT;
+        if(sdk <= android.os.Build.VERSION_CODES.M) {
+            return;
+        }
+
+        if (mPhoneAccountHandle == null) {
+            return;
+        }
+
+        TelecomManager telecomManager =
+                (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
+        final PhoneAccount account = telecomManager.getPhoneAccount(mPhoneAccountHandle);
+
+        Bundle phoneAccountExtras = PhoneAccountSdkCompat.getExtras(account);
+        if (phoneAccountExtras == null) {
+            return;
+        }
+
+        // Get limit, if provided; otherwise default to existing value.
+        mLimit = phoneAccountExtras
+                .getInt(PhoneAccountSdkCompat.EXTRA_CALL_SUBJECT_MAX_LENGTH, mLimit);
+
+        // Get charset; default to none (e.g. count characters 1:1).
+        String charsetName = phoneAccountExtras.getString(
+                PhoneAccountSdkCompat.EXTRA_CALL_SUBJECT_CHARACTER_ENCODING);
+
+        if (!TextUtils.isEmpty(charsetName)) {
+            try {
+                mMessageEncoding = Charset.forName(charsetName);
+            } catch (java.nio.charset.UnsupportedCharsetException uce) {
+                // Character set was invalid; log warning and fallback to none.
+                Log.w(TAG, "Invalid charset: " + charsetName);
+                mMessageEncoding = null;
+            }
+        } else {
+            // No character set specified, so count characters 1:1.
+            mMessageEncoding = null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java b/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java
new file mode 100644
index 0000000..2fab3e1
--- /dev/null
+++ b/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.dialog;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.util.PermissionsUtil;
+
+/**
+ * Dialog that clears the frequently contacted list after confirming with the user.
+ */
+public class ClearFrequentsDialog extends DialogFragment {
+    /** Preferred way to show this dialog */
+    public static void show(FragmentManager fragmentManager) {
+        ClearFrequentsDialog dialog = new ClearFrequentsDialog();
+        dialog.show(fragmentManager, "clearFrequents");
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        final Context context = getActivity().getApplicationContext();
+        final ContentResolver resolver = getActivity().getContentResolver();
+        final OnClickListener okListener = new OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                if (!PermissionsUtil.hasContactsPermissions(context)) {
+                    return;
+                }
+                final IndeterminateProgressDialog progressDialog = IndeterminateProgressDialog.show(
+                        getFragmentManager(), getString(R.string.clearFrequentsProgress_title),
+                        null, 500);
+                final AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
+                    @Override
+                    protected Void doInBackground(Void... params) {
+                        resolver.delete(ContactsContract.DataUsageFeedback.DELETE_USAGE_URI,
+                                null, null);
+                        return null;
+                    }
+
+                    @Override
+                    protected void onPostExecute(Void result) {
+                        progressDialog.dismiss();
+                    }
+                };
+                task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+            }
+        };
+        return new AlertDialog.Builder(getActivity())
+            .setTitle(R.string.clearFrequentsConfirmation_title)
+            .setMessage(R.string.clearFrequentsConfirmation)
+            .setNegativeButton(android.R.string.cancel, null)
+            .setPositiveButton(android.R.string.ok, okListener)
+            .setCancelable(true)
+            .create();
+    }
+}
diff --git a/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java b/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java
new file mode 100644
index 0000000..2fe059f
--- /dev/null
+++ b/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.dialog;
+
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Handler;
+
+/**
+ * Indeterminate progress dialog wrapped up in a DialogFragment to work even when the device
+ * orientation is changed. Currently, only supports adding a title and/or message to the progress
+ * dialog.  There is an additional parameter of the minimum amount of time to display the progress
+ * dialog even after a call to dismiss the dialog {@link #dismiss()} or
+ * {@link #dismissAllowingStateLoss()}.
+ * <p>
+ * To create and show the progress dialog, use
+ * {@link #show(FragmentManager, CharSequence, CharSequence, long)} and retain the reference to the
+ * IndeterminateProgressDialog instance.
+ * <p>
+ * To dismiss the dialog, use {@link #dismiss()} or {@link #dismissAllowingStateLoss()} on the
+ * instance.  The instance returned by
+ * {@link #show(FragmentManager, CharSequence, CharSequence, long)} is guaranteed to be valid
+ * after a device orientation change because the {@link #setRetainInstance(boolean)} is called
+ * internally with true.
+ */
+public class IndeterminateProgressDialog extends DialogFragment {
+    private static final String TAG = IndeterminateProgressDialog.class.getSimpleName();
+
+    private CharSequence mTitle;
+    private CharSequence mMessage;
+    private long mMinDisplayTime;
+    private long mShowTime = 0;
+    private boolean mActivityReady = false;
+    private Dialog mOldDialog;
+    private final Handler mHandler = new Handler();
+    private boolean mCalledSuperDismiss = false;
+    private boolean mAllowStateLoss;
+    private final Runnable mDismisser = new Runnable() {
+        @Override
+        public void run() {
+            superDismiss();
+        }
+    };
+
+    /**
+     * Creates and shows an indeterminate progress dialog.  Once the progress dialog is shown, it
+     * will be shown for at least the minDisplayTime (in milliseconds), so that the progress dialog
+     * does not flash in and out to quickly.
+     */
+    public static IndeterminateProgressDialog show(FragmentManager fragmentManager,
+            CharSequence title, CharSequence message, long minDisplayTime) {
+        IndeterminateProgressDialog dialogFragment = new IndeterminateProgressDialog();
+        dialogFragment.mTitle = title;
+        dialogFragment.mMessage = message;
+        dialogFragment.mMinDisplayTime = minDisplayTime;
+        dialogFragment.show(fragmentManager, TAG);
+        dialogFragment.mShowTime = System.currentTimeMillis();
+        dialogFragment.setCancelable(false);
+
+        return dialogFragment;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setRetainInstance(true);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Create the progress dialog and set its properties
+        final ProgressDialog dialog = new ProgressDialog(getActivity());
+        dialog.setIndeterminate(true);
+        dialog.setIndeterminateDrawable(null);
+        dialog.setTitle(mTitle);
+        dialog.setMessage(mMessage);
+
+        return dialog;
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mActivityReady = true;
+
+        // Check if superDismiss() had been called before.  This can happen if in a long
+        // running operation, the user hits the home button and closes this fragment's activity.
+        // Upon returning, we want to dismiss this progress dialog fragment.
+        if (mCalledSuperDismiss) {
+            superDismiss();
+        }
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mActivityReady = false;
+    }
+
+    /**
+     * There is a race condition that is not handled properly by the DialogFragment class.
+     * If we don't check that this onDismiss callback isn't for the old progress dialog from before
+     * the device orientation change, then this will cause the newly created dialog after the
+     * orientation change to be dismissed immediately.
+     */
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        if (mOldDialog != null && mOldDialog == dialog) {
+            // This is the callback from the old progress dialog that was already dismissed before
+            // the device orientation change, so just ignore it.
+            return;
+        }
+        super.onDismiss(dialog);
+    }
+
+    /**
+     * Save the old dialog that is about to get destroyed in case this is due to a change
+     * in device orientation.  This will allow us to intercept the callback to
+     * {@link #onDismiss(DialogInterface)} in case the callback happens after a new progress dialog
+     * instance was created.
+     */
+    @Override
+    public void onDestroyView() {
+        mOldDialog = getDialog();
+        super.onDestroyView();
+    }
+
+    /**
+     * This tells the progress dialog to dismiss itself after guaranteeing to be shown for the
+     * specified time in {@link #show(FragmentManager, CharSequence, CharSequence, long)}.
+     */
+    @Override
+    public void dismiss() {
+        mAllowStateLoss = false;
+        dismissWhenReady();
+    }
+
+    /**
+     * This tells the progress dialog to dismiss itself (with state loss) after guaranteeing to be
+     * shown for the specified time in
+     * {@link #show(FragmentManager, CharSequence, CharSequence, long)}.
+     */
+    @Override
+    public void dismissAllowingStateLoss() {
+        mAllowStateLoss = true;
+        dismissWhenReady();
+    }
+
+    /**
+     * Tells the progress dialog to dismiss itself after guaranteeing that the dialog had been
+     * showing for at least the minimum display time as set in
+     * {@link #show(FragmentManager, CharSequence, CharSequence, long)}.
+     */
+    private void dismissWhenReady() {
+        // Compute how long the dialog has been showing
+        final long shownTime = System.currentTimeMillis() - mShowTime;
+        if (shownTime >= mMinDisplayTime) {
+            // dismiss immediately
+            mHandler.post(mDismisser);
+        } else {
+            // Need to wait some more, so compute the amount of time to sleep.
+            final long sleepTime = mMinDisplayTime - shownTime;
+            mHandler.postDelayed(mDismisser, sleepTime);
+        }
+    }
+
+    /**
+     * Actually dismiss the dialog fragment.
+     */
+    private void superDismiss() {
+        mCalledSuperDismiss = true;
+        if (mActivityReady) {
+            // The fragment is either in onStart or past it, but has not gotten to onStop yet.
+            // It is safe to dismiss this dialog fragment.
+            if (mAllowStateLoss) {
+                super.dismissAllowingStateLoss();
+            } else {
+                super.dismiss();
+            }
+        }
+        // If mActivityReady is false, then this dialog fragment has already passed the onStop
+        // state. This can happen if the user hit the 'home' button before this dialog fragment was
+        // dismissed or if there is a configuration change.
+        // In the event that this dialog fragment is re-attached and reaches onStart (e.g.,
+        // because the user returns to this fragment's activity or the device configuration change
+        // has re-attached this dialog fragment), because the mCalledSuperDismiss flag was set to
+        // true, this dialog fragment will be dismissed within onStart.  So, there's nothing else
+        // that needs to be done.
+    }
+}
diff --git a/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java b/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java
new file mode 100644
index 0000000..96da89a
--- /dev/null
+++ b/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java
@@ -0,0 +1,155 @@
+/*
+ * 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.contacts.common.editor;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.AccountsListAdapter;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
+
+/**
+ * Shows a dialog asking the user which account to chose.
+ *
+ * The result is passed to {@code targetFragment} passed to {@link #show}.
+ */
+public final class SelectAccountDialogFragment extends DialogFragment {
+    public static final String TAG = "SelectAccountDialogFragment";
+
+    private static final String KEY_TITLE_RES_ID = "title_res_id";
+    private static final String KEY_LIST_FILTER = "list_filter";
+    private static final String KEY_EXTRA_ARGS = "extra_args";
+
+    public SelectAccountDialogFragment() { // All fragments must have a public default constructor.
+    }
+
+    /**
+     * Show the dialog.
+     *
+     * @param fragmentManager {@link FragmentManager}.
+     * @param targetFragment {@link Fragment} that implements {@link Listener}.
+     * @param titleResourceId resource ID to use as the title.
+     * @param accountListFilter account filter.
+     * @param extraArgs Extra arguments, which will later be passed to
+     *     {@link Listener#onAccountChosen}.  {@code null} will be converted to
+     *     {@link Bundle#EMPTY}.
+     */
+    public static <F extends Fragment & Listener> void show(FragmentManager fragmentManager,
+            F targetFragment, int titleResourceId,
+            AccountListFilter accountListFilter, Bundle extraArgs) {
+        show(fragmentManager, targetFragment, titleResourceId, accountListFilter, extraArgs,
+                /* tag */ null);
+    }
+
+    public static <F extends Fragment & Listener> void show(FragmentManager fragmentManager,
+            F targetFragment, int titleResourceId,
+            AccountListFilter accountListFilter, Bundle extraArgs, String tag) {
+        final Bundle args = new Bundle();
+        args.putInt(KEY_TITLE_RES_ID, titleResourceId);
+        args.putSerializable(KEY_LIST_FILTER, accountListFilter);
+        args.putBundle(KEY_EXTRA_ARGS, (extraArgs == null) ? Bundle.EMPTY : extraArgs);
+
+        final SelectAccountDialogFragment instance = new SelectAccountDialogFragment();
+        instance.setArguments(args);
+        if (targetFragment != null) {
+            instance.setTargetFragment(targetFragment, 0);
+        }
+        instance.show(fragmentManager, tag);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        final Bundle args = getArguments();
+
+        final AccountListFilter filter = (AccountListFilter) args.getSerializable(KEY_LIST_FILTER);
+        final AccountsListAdapter accountAdapter = new AccountsListAdapter(builder.getContext(),
+                filter);
+        accountAdapter.setCustomLayout(R.layout.account_selector_list_item_condensed);
+
+        final DialogInterface.OnClickListener clickListener =
+                new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                dialog.dismiss();
+
+                onAccountSelected(accountAdapter.getItem(which));
+            }
+        };
+
+        final TextView title = (TextView) View.inflate(getActivity(), R.layout.dialog_title, null);
+        title.setText(args.getInt(KEY_TITLE_RES_ID));
+        builder.setCustomTitle(title);
+        builder.setSingleChoiceItems(accountAdapter, 0, clickListener);
+        final AlertDialog result = builder.create();
+        return result;
+    }
+
+    @Override
+    public void onCancel(DialogInterface dialog) {
+        super.onCancel(dialog);
+        final Listener listener = getListener();
+        if (listener != null) {
+            listener.onAccountSelectorCancelled();
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle b) {
+        setTargetFragment(null, -1);
+        super.onSaveInstanceState(b);
+    }
+
+    /**
+     * Calls {@link Listener#onAccountChosen} of {@code targetFragment}.
+     */
+    private void onAccountSelected(AccountWithDataSet account) {
+        final Listener listener = getListener();
+        if (listener != null) {
+            listener.onAccountChosen(account, getArguments().getBundle(KEY_EXTRA_ARGS));
+        }
+    }
+
+    private Listener getListener() {
+        Listener listener = null;
+        final Fragment targetFragment = getTargetFragment();
+        if (targetFragment == null) {
+            final Activity activity = getActivity();
+            if (activity != null && activity instanceof Listener) {
+                listener = (Listener) activity;
+            }
+        } else if (targetFragment instanceof Listener) {
+            listener = (Listener) targetFragment;
+        }
+        return listener;
+    }
+
+    public interface Listener {
+        void onAccountChosen(AccountWithDataSet account, Bundle extraArgs);
+        void onAccountSelectorCancelled();
+    }
+}
diff --git a/src/com/android/contacts/common/extensions/ExtendedPhoneDirectoriesManager.java b/src/com/android/contacts/common/extensions/ExtendedPhoneDirectoriesManager.java
new file mode 100644
index 0000000..eb25934
--- /dev/null
+++ b/src/com/android/contacts/common/extensions/ExtendedPhoneDirectoriesManager.java
@@ -0,0 +1,26 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+
+package com.android.contacts.common.extensions;
+
+import android.content.Context;
+
+import com.android.contacts.common.list.DirectoryPartition;
+
+import java.util.List;
+
+/**
+ * An interface for adding extended phone directories to
+ * {@link com.android.contacts.common.list.PhoneNumberListAdapter}.
+ * An app that wishes to add custom phone directories should implement this class and advertise it
+ * in assets/contacts_extensions.properties. {@link ExtensionsFactory} will load the implementation
+ * and the extended directories will be added by
+ * {@link com.android.contacts.common.list.PhoneNumberListAdapter}.
+ */
+public interface ExtendedPhoneDirectoriesManager {
+
+    /**
+     * Return a list of extended directories to add. May return null if no directories are to be
+     * added.
+     */
+    List<DirectoryPartition> getExtendedDirectories(Context context);
+}
diff --git a/src/com/android/contacts/common/extensions/ExtensionsFactory.java b/src/com/android/contacts/common/extensions/ExtensionsFactory.java
new file mode 100644
index 0000000..d52429e
--- /dev/null
+++ b/src/com/android/contacts/common/extensions/ExtensionsFactory.java
@@ -0,0 +1,89 @@
+/*
+ * 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.contacts.common.extensions;
+
+import android.content.Context;
+import android.util.Log;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+
+/*
+ * A framework for adding extensions to Dialer. This class reads a property file from
+ * assets/contacts_extensions.properties and loads extension classes that an app has defined. If
+ * an extension class was not defined, null is returned.
+ */
+public class ExtensionsFactory {
+
+    private static String TAG = "ExtensionsFactory";
+
+    // Config filename for mappings of various class names to their custom
+    // implementations.
+    private static final String EXTENSIONS_PROPERTIES = "contacts_extensions.properties";
+
+    private static final String EXTENDED_PHONE_DIRECTORIES_KEY = "extendedPhoneDirectories";
+
+    private static Properties sProperties = null;
+    private static ExtendedPhoneDirectoriesManager mExtendedPhoneDirectoriesManager = null;
+
+    public static void init(Context context) {
+        if (sProperties != null) {
+            return;
+        }
+        try {
+            final InputStream fileStream = context.getAssets().open(EXTENSIONS_PROPERTIES);
+            sProperties = new Properties();
+            sProperties.load(fileStream);
+            fileStream.close();
+
+            final String className = sProperties.getProperty(EXTENDED_PHONE_DIRECTORIES_KEY);
+            if (className != null) {
+                mExtendedPhoneDirectoriesManager = createInstance(className);
+            } else {
+                Log.d(TAG, EXTENDED_PHONE_DIRECTORIES_KEY + " not found in properties file.");
+            }
+
+        } catch (FileNotFoundException e) {
+            // No custom extensions. Ignore.
+            Log.d(TAG, "No custom extensions.");
+        } catch (IOException e) {
+            Log.d(TAG, e.toString());
+        }
+    }
+
+    private static <T> T createInstance(String className) {
+        try {
+            Class<?> c = Class.forName(className);
+            //noinspection unchecked
+            return (T) c.newInstance();
+        } catch (ClassNotFoundException e) {
+            Log.e(TAG, className + ": unable to create instance.", e);
+        } catch (IllegalAccessException e) {
+            Log.e(TAG, className + ": unable to create instance.", e);
+        } catch (InstantiationException e) {
+            Log.e(TAG, className + ": unable to create instance.", e);
+        }
+        return null;
+    }
+
+    public static ExtendedPhoneDirectoriesManager getExtendedPhoneDirectoriesManager() {
+        return mExtendedPhoneDirectoriesManager;
+    }
+}
diff --git a/src/com/android/contacts/common/format/FormatUtils.java b/src/com/android/contacts/common/format/FormatUtils.java
new file mode 100644
index 0000000..376ff13
--- /dev/null
+++ b/src/com/android/contacts/common/format/FormatUtils.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.format;
+
+import android.database.CharArrayBuffer;
+import android.graphics.Typeface;
+import android.text.SpannableString;
+import android.text.style.StyleSpan;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.Arrays;
+
+/**
+ * Assorted utility methods related to text formatting in Contacts.
+ */
+public class FormatUtils {
+
+    /**
+     * Finds the earliest point in buffer1 at which the first part of buffer2 matches.  For example,
+     * overlapPoint("abcd", "cdef") == 2.
+     */
+    public static int overlapPoint(CharArrayBuffer buffer1, CharArrayBuffer buffer2) {
+        if (buffer1 == null || buffer2 == null) {
+            return -1;
+        }
+        return overlapPoint(Arrays.copyOfRange(buffer1.data, 0, buffer1.sizeCopied),
+                Arrays.copyOfRange(buffer2.data, 0, buffer2.sizeCopied));
+    }
+
+    /**
+     * Finds the earliest point in string1 at which the first part of string2 matches.  For example,
+     * overlapPoint("abcd", "cdef") == 2.
+     */
+    @VisibleForTesting
+    public static int overlapPoint(String string1, String string2) {
+        if (string1 == null || string2 == null) {
+            return -1;
+        }
+        return overlapPoint(string1.toCharArray(), string2.toCharArray());
+    }
+
+    /**
+     * Finds the earliest point in array1 at which the first part of array2 matches.  For example,
+     * overlapPoint("abcd", "cdef") == 2.
+     */
+    public static int overlapPoint(char[] array1, char[] array2) {
+        if (array1 == null || array2 == null) {
+            return -1;
+        }
+        int count1 = array1.length;
+        int count2 = array2.length;
+
+        // Ignore matching tails of the two arrays.
+        while (count1 > 0 && count2 > 0 && array1[count1 - 1] == array2[count2 - 1]) {
+            count1--;
+            count2--;
+        }
+
+        int size = count2;
+        for (int i = 0; i < count1; i++) {
+            if (i + size > count1) {
+                size = count1 - i;
+            }
+            int j;
+            for (j = 0; j < size; j++) {
+                if (array1[i+j] != array2[j]) {
+                    break;
+                }
+            }
+            if (j == size) {
+                return i;
+            }
+        }
+
+        return -1;
+    }
+
+    /**
+     * Applies the given style to a range of the input CharSequence.
+     * @param style The style to apply (see the style constants in {@link Typeface}).
+     * @param input The CharSequence to style.
+     * @param start Starting index of the range to style (will be clamped to be a minimum of 0).
+     * @param end Ending index of the range to style (will be clamped to a maximum of the input
+     *     length).
+     * @param flags Bitmask for configuring behavior of the span.  See {@link android.text.Spanned}.
+     * @return The styled CharSequence.
+     */
+    public static CharSequence applyStyleToSpan(int style, CharSequence input, int start, int end,
+            int flags) {
+        // Enforce bounds of the char sequence.
+        start = Math.max(0, start);
+        end = Math.min(input.length(), end);
+        SpannableString text = new SpannableString(input);
+        text.setSpan(new StyleSpan(style), start, end, flags);
+        return text;
+    }
+
+    @VisibleForTesting
+    public static void copyToCharArrayBuffer(String text, CharArrayBuffer buffer) {
+        if (text != null) {
+            char[] data = buffer.data;
+            if (data == null || data.length < text.length()) {
+                buffer.data = text.toCharArray();
+            } else {
+                text.getChars(0, text.length(), data, 0);
+            }
+            buffer.sizeCopied = text.length();
+        } else {
+            buffer.sizeCopied = 0;
+        }
+    }
+
+    /** Returns a String that represents the content of the given {@link CharArrayBuffer}. */
+    @VisibleForTesting
+    public static String charArrayBufferToString(CharArrayBuffer buffer) {
+        return new String(buffer.data, 0, buffer.sizeCopied);
+    }
+
+    /**
+     * Finds the index of the first word that starts with the given prefix.
+     * <p>
+     * If not found, returns -1.
+     *
+     * @param text the text in which to search for the prefix
+     * @param prefix the text to find, in upper case letters
+     */
+    public static int indexOfWordPrefix(CharSequence text, String prefix) {
+        if (prefix == null || text == null) {
+            return -1;
+        }
+
+        int textLength = text.length();
+        int prefixLength = prefix.length();
+
+        if (prefixLength == 0 || textLength < prefixLength) {
+            return -1;
+        }
+
+        int i = 0;
+        while (i < textLength) {
+            // Skip non-word characters
+            while (i < textLength && !Character.isLetterOrDigit(text.charAt(i))) {
+                i++;
+            }
+
+            if (i + prefixLength > textLength) {
+                return -1;
+            }
+
+            // Compare the prefixes
+            int j;
+            for (j = 0; j < prefixLength; j++) {
+                if (Character.toUpperCase(text.charAt(i + j)) != prefix.charAt(j)) {
+                    break;
+                }
+            }
+            if (j == prefixLength) {
+                return i;
+            }
+
+            // Skip this word
+            while (i < textLength && Character.isLetterOrDigit(text.charAt(i))) {
+                i++;
+            }
+        }
+
+        return -1;
+    }
+
+}
diff --git a/src/com/android/contacts/common/format/SpannedTestUtils.java b/src/com/android/contacts/common/format/SpannedTestUtils.java
new file mode 100644
index 0000000..463d7a8
--- /dev/null
+++ b/src/com/android/contacts/common/format/SpannedTestUtils.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.format;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.Html;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.TextUtils;
+import android.text.style.StyleSpan;
+import android.widget.TextView;
+
+import junit.framework.Assert;
+
+/**
+ * Utility class to check the value of spanned text in text views.
+ */
+@SmallTest
+public class SpannedTestUtils {
+    /**
+     * Checks that the text contained in the text view matches the given HTML text.
+     *
+     * @param expectedHtmlText the expected text to be in the text view
+     * @param textView the text view from which to get the text
+     */
+    public static void checkHtmlText(String expectedHtmlText, TextView textView) {
+        String actualHtmlText = Html.toHtml((Spanned) textView.getText());
+        if (TextUtils.isEmpty(expectedHtmlText)) {
+            // If the text is empty, it does not add the <p></p> bits to it.
+            Assert.assertEquals("", actualHtmlText);
+        } else {
+            Assert.assertEquals("<p dir=ltr>" + expectedHtmlText + "</p>\n", actualHtmlText);
+        }
+    }
+
+
+    /**
+     * Assert span exists in the correct location.
+     *
+     * @param seq The spannable string to check.
+     * @param start The starting index.
+     * @param end The ending index.
+     */
+    public static void assertPrefixSpan(CharSequence seq, int start, int end) {
+        Assert.assertTrue(seq instanceof Spanned);
+        Spanned spannable = (Spanned) seq;
+
+        if (start > 0) {
+            Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, 0, start - 1));
+        }
+        Assert.assertEquals(1, getNumForegroundColorSpansBetween(spannable, start, end));
+        Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, end + 1,
+                spannable.length() - 1));
+    }
+
+    private static int getNumForegroundColorSpansBetween(Spanned value, int start, int end) {
+        return value.getSpans(start, end, StyleSpan.class).length;
+    }
+
+    /**
+     * Asserts that the given character sequence is not a Spanned object and text is correct.
+     *
+     * @param seq The sequence to check.
+     * @param expected The expected text.
+     */
+    public static void assertNotSpanned(CharSequence seq, String expected) {
+        Assert.assertFalse(seq instanceof Spanned);
+        Assert.assertEquals(expected, seq);
+    }
+
+    public static int getNextTransition(SpannableString seq, int start) {
+        return seq.nextSpanTransition(start, seq.length(), StyleSpan.class);
+    }
+}
diff --git a/src/com/android/contacts/common/format/TextHighlighter.java b/src/com/android/contacts/common/format/TextHighlighter.java
new file mode 100644
index 0000000..496dcda
--- /dev/null
+++ b/src/com/android/contacts/common/format/TextHighlighter.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.format;
+
+import android.graphics.Typeface;
+import android.text.SpannableString;
+import android.text.style.CharacterStyle;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.StyleSpan;
+import android.widget.TextView;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Highlights the text in a text field.
+ */
+public class TextHighlighter {
+    private final String TAG = TextHighlighter.class.getSimpleName();
+    private final static boolean DEBUG = false;
+
+    private int mTextStyle;
+
+    private CharacterStyle mTextStyleSpan;
+
+    public TextHighlighter(int textStyle) {
+        mTextStyle = textStyle;
+        mTextStyleSpan = getStyleSpan();
+    }
+
+    /**
+     * Sets the text on the given text view, highlighting the word that matches the given prefix.
+     *
+     * @param view the view on which to set the text
+     * @param text the string to use as the text
+     * @param prefix the prefix to look for
+     */
+    public void setPrefixText(TextView view, String text, String prefix) {
+        view.setText(applyPrefixHighlight(text, prefix));
+    }
+
+    private CharacterStyle getStyleSpan() {
+        return new StyleSpan(mTextStyle);
+    }
+
+    /**
+     * Applies highlight span to the text.
+     * @param text Text sequence to be highlighted.
+     * @param start Start position of the highlight sequence.
+     * @param end End position of the highlight sequence.
+     */
+    public void applyMaskingHighlight(SpannableString text, int start, int end) {
+        /** Sets text color of the masked locations to be highlighted. */
+        text.setSpan(getStyleSpan(), start, end, 0);
+    }
+
+    /**
+     * Returns a CharSequence which highlights the given prefix if found in the given text.
+     *
+     * @param text the text to which to apply the highlight
+     * @param prefix the prefix to look for
+     */
+    public CharSequence applyPrefixHighlight(CharSequence text, String prefix) {
+        if (prefix == null) {
+            return text;
+        }
+
+        // Skip non-word characters at the beginning of prefix.
+        int prefixStart = 0;
+        while (prefixStart < prefix.length() &&
+                !Character.isLetterOrDigit(prefix.charAt(prefixStart))) {
+            prefixStart++;
+        }
+        final String trimmedPrefix = prefix.substring(prefixStart);
+
+        int index = FormatUtils.indexOfWordPrefix(text, trimmedPrefix);
+        if (index != -1) {
+            final SpannableString result = new SpannableString(text);
+            result.setSpan(mTextStyleSpan, index, index + trimmedPrefix.length(), 0 /* flags */);
+            return result;
+        } else {
+            return text;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
new file mode 100644
index 0000000..60f983d
--- /dev/null
+++ b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
@@ -0,0 +1,360 @@
+/*
+ * 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.contacts.common.interactions;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract.Contacts;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.AccountSelectionUtil;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
+import com.android.contacts.common.vcard.ExportVCardActivity;
+import com.android.contacts.common.vcard.VCardCommonArguments;
+import com.android.contacts.common.vcard.ShareVCardActivity;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+
+import java.util.List;
+
+/**
+ * An dialog invoked to import/export contacts.
+ */
+public class ImportExportDialogFragment extends DialogFragment
+        implements SelectAccountDialogFragment.Listener {
+    public static final String TAG = "ImportExportDialogFragment";
+
+    public static final int EXPORT_MODE_FAVORITES = 0;
+    public static final int EXPORT_MODE_ALL_CONTACTS = 1;
+    public static final int EXPORT_MODE_DEFAULT = -1;
+
+    private static final String KEY_RES_ID = "resourceId";
+    private static final String KEY_SUBSCRIPTION_ID = "subscriptionId";
+    private static final String ARG_CONTACTS_ARE_AVAILABLE = "CONTACTS_ARE_AVAILABLE";
+
+    private static int mExportMode = EXPORT_MODE_DEFAULT;
+
+    private final String[] LOOKUP_PROJECTION = new String[] {
+            Contacts.LOOKUP_KEY
+    };
+
+    private SubscriptionManager mSubscriptionManager;
+
+    /** Preferred way to show this dialog */
+    public static void show(FragmentManager fragmentManager, boolean contactsAreAvailable,
+                            Class callingActivity, int exportMode) {
+        final ImportExportDialogFragment fragment = new ImportExportDialogFragment();
+        Bundle args = new Bundle();
+        args.putBoolean(ARG_CONTACTS_ARE_AVAILABLE, contactsAreAvailable);
+        args.putString(VCardCommonArguments.ARG_CALLING_ACTIVITY, callingActivity.getName());
+        fragment.setArguments(args);
+        fragment.show(fragmentManager, ImportExportDialogFragment.TAG);
+        mExportMode = exportMode;
+    }
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Wrap our context to inflate list items using the correct theme
+        final Resources res = getActivity().getResources();
+        final LayoutInflater dialogInflater = (LayoutInflater)getActivity()
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        final boolean contactsAreAvailable = getArguments().getBoolean(ARG_CONTACTS_ARE_AVAILABLE);
+        final String callingActivity = getArguments().getString(
+                VCardCommonArguments.ARG_CALLING_ACTIVITY);
+
+        // Adapter that shows a list of string resources
+        final ArrayAdapter<AdapterEntry> adapter = new ArrayAdapter<AdapterEntry>(getActivity(),
+                R.layout.select_dialog_item) {
+            @Override
+            public View getView(int position, View convertView, ViewGroup parent) {
+                final TextView result = (TextView)(convertView != null ? convertView :
+                        dialogInflater.inflate(R.layout.select_dialog_item, parent, false));
+
+                result.setText(getItem(position).mLabel);
+                return result;
+            }
+        };
+
+        final TelephonyManager manager =
+                (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+        if (res.getBoolean(R.bool.config_allow_import_from_vcf_file)) {
+            adapter.add(new AdapterEntry(getString(R.string.import_from_vcf_file),
+                    R.string.import_from_vcf_file));
+        }
+
+        if (CompatUtils.isMSIMCompatible()) {
+            mSubscriptionManager = SubscriptionManager.from(getActivity());
+            if (manager != null && res.getBoolean(R.bool.config_allow_sim_import)) {
+                List<SubscriptionInfo> subInfoRecords = null;
+                try {
+                    subInfoRecords =  mSubscriptionManager.getActiveSubscriptionInfoList();
+                } catch (SecurityException e) {
+                    Log.w(TAG, "SecurityException thrown, lack permission for"
+                            + " getActiveSubscriptionInfoList", e);
+                }
+                if (subInfoRecords != null) {
+                    if (subInfoRecords.size() == 1) {
+                        adapter.add(new AdapterEntry(getString(R.string.import_from_sim),
+                                R.string.import_from_sim, subInfoRecords.get(0).getSubscriptionId()));
+                    } else {
+                        for (SubscriptionInfo record : subInfoRecords) {
+                            adapter.add(new AdapterEntry(getSubDescription(record),
+                                    R.string.import_from_sim, record.getSubscriptionId()));
+                        }
+                    }
+                }
+            }
+        } else {
+            if (manager != null && manager.hasIccCard()
+                    && res.getBoolean(R.bool.config_allow_sim_import)) {
+                adapter.add(new AdapterEntry(getString(R.string.import_from_sim),
+                        R.string.import_from_sim, -1));
+            }
+        }
+
+        if (res.getBoolean(R.bool.config_allow_export)) {
+            if (contactsAreAvailable) {
+                adapter.add(new AdapterEntry(getString(R.string.export_to_vcf_file),
+                        R.string.export_to_vcf_file));
+            }
+        }
+        if (res.getBoolean(R.bool.config_allow_share_contacts) && contactsAreAvailable) {
+            if (mExportMode == EXPORT_MODE_FAVORITES) {
+                // share favorite and frequently contacted contacts from Favorites tab
+                adapter.add(new AdapterEntry(getString(R.string.share_favorite_contacts),
+                        R.string.share_contacts));
+            } else {
+                // share "all" contacts (in groups selected in "Customize") from All tab for now
+                // TODO: change the string to share_visible_contacts if implemented
+                adapter.add(new AdapterEntry(getString(R.string.share_contacts),
+                        R.string.share_contacts));
+            }
+        }
+
+        final DialogInterface.OnClickListener clickListener =
+                new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                boolean dismissDialog;
+                final int resId = adapter.getItem(which).mChoiceResourceId;
+                if (resId == R.string.import_from_sim || resId == R.string.import_from_vcf_file) {
+                        dismissDialog = handleImportRequest(resId,
+                                adapter.getItem(which).mSubscriptionId);
+                } else if (resId == R.string.export_to_vcf_file) {
+                    dismissDialog = true;
+                    final Intent exportIntent = new Intent(
+                            getActivity(), ExportVCardActivity.class);
+                    exportIntent.putExtra(VCardCommonArguments.ARG_CALLING_ACTIVITY,
+                            callingActivity);
+                    getActivity().startActivity(exportIntent);
+                } else if (resId == R.string.share_contacts) {
+                    dismissDialog = true;
+                    if (mExportMode == EXPORT_MODE_FAVORITES) {
+                        doShareFavoriteContacts();
+                    } else { // EXPORT_MODE_ALL_CONTACTS
+                        final Intent exportIntent = new Intent(
+                                getActivity(), ShareVCardActivity.class);
+                        exportIntent.putExtra(VCardCommonArguments.ARG_CALLING_ACTIVITY,
+                                callingActivity);
+                        getActivity().startActivity(exportIntent);
+                    }
+                } else {
+                    dismissDialog = true;
+                    Log.e(TAG, "Unexpected resource: "
+                            + getActivity().getResources().getResourceEntryName(resId));
+                }
+                if (dismissDialog) {
+                    dialog.dismiss();
+                }
+            }
+        };
+        final TextView title = (TextView) View.inflate(getActivity(), R.layout.dialog_title, null);
+        title.setText(contactsAreAvailable
+                ? R.string.dialog_import_export
+                : R.string.dialog_import);
+        return new AlertDialog.Builder(getActivity())
+                .setCustomTitle(title)
+                .setSingleChoiceItems(adapter, -1, clickListener)
+                .create();
+    }
+
+    private void doShareFavoriteContacts() {
+        try{
+            final Cursor cursor = getActivity().getContentResolver().query(
+                    Contacts.CONTENT_STREQUENT_URI, LOOKUP_PROJECTION, null, null,
+                    Contacts.DISPLAY_NAME + " COLLATE NOCASE ASC");
+            if (cursor != null) {
+                try {
+                    if (!cursor.moveToFirst()) {
+                        Toast.makeText(getActivity(), R.string.no_contact_to_share,
+                                Toast.LENGTH_SHORT).show();
+                        return;
+                    }
+
+                    // Build multi-vcard Uri for sharing
+                    final StringBuilder uriListBuilder = new StringBuilder();
+                    int index = 0;
+                    do {
+                        if (index != 0)
+                            uriListBuilder.append(':');
+                        uriListBuilder.append(cursor.getString(0));
+                        index++;
+                    } while (cursor.moveToNext());
+                    final Uri uri = Uri.withAppendedPath(
+                            Contacts.CONTENT_MULTI_VCARD_URI,
+                            Uri.encode(uriListBuilder.toString()));
+
+                    final Intent intent = new Intent(Intent.ACTION_SEND);
+                    intent.setType(Contacts.CONTENT_VCARD_TYPE);
+                    intent.putExtra(Intent.EXTRA_STREAM, uri);
+                    ImplicitIntentsUtil.startActivityOutsideApp(getActivity(), intent);
+                } finally {
+                    cursor.close();
+                }
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Sharing contacts failed", e);
+            getActivity().runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    Toast.makeText(getContext(), R.string.share_contacts_failure,
+                            Toast.LENGTH_SHORT).show();
+                }
+            });
+        }
+    }
+
+    /**
+     * Handle "import from SIM" and "import from SD".
+     *
+     * @return {@code true} if the dialog show be closed.  {@code false} otherwise.
+     */
+    private boolean handleImportRequest(int resId, int subscriptionId) {
+        // There are three possibilities:
+        // - more than one accounts -> ask the user
+        // - just one account -> use the account without asking the user
+        // - no account -> use phone-local storage without asking the user
+        final AccountTypeManager accountTypes = AccountTypeManager.getInstance(getActivity());
+        final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
+        final int size = accountList.size();
+        if (size > 1) {
+            // Send over to the account selector
+            final Bundle args = new Bundle();
+            args.putInt(KEY_RES_ID, resId);
+            args.putInt(KEY_SUBSCRIPTION_ID, subscriptionId);
+            SelectAccountDialogFragment.show(
+                    getFragmentManager(), this,
+                    R.string.dialog_new_contact_account,
+                    AccountListFilter.ACCOUNTS_CONTACT_WRITABLE, args);
+
+            // In this case, because this DialogFragment is used as a target fragment to
+            // SelectAccountDialogFragment, we can't close it yet.  We close the dialog when
+            // we get a callback from it.
+            return false;
+        }
+
+        AccountSelectionUtil.doImport(getActivity(), resId,
+                (size == 1 ? accountList.get(0) : null),
+                (CompatUtils.isMSIMCompatible() ? subscriptionId : -1));
+        return true; // Close the dialog.
+    }
+
+    /**
+     * Called when an account is selected on {@link SelectAccountDialogFragment}.
+     */
+    @Override
+    public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
+        AccountSelectionUtil.doImport(getActivity(), extraArgs.getInt(KEY_RES_ID),
+                account, extraArgs.getInt(KEY_SUBSCRIPTION_ID));
+
+        // At this point the dialog is still showing (which is why we can use getActivity() above)
+        // So close it.
+        dismiss();
+    }
+
+    @Override
+    public void onAccountSelectorCancelled() {
+        // See onAccountChosen() -- at this point the dialog is still showing.  Close it.
+        dismiss();
+    }
+
+    private CharSequence getSubDescription(SubscriptionInfo record) {
+        CharSequence name = record.getDisplayName();
+        if (TextUtils.isEmpty(record.getNumber())) {
+            // Don't include the phone number in the description, since we don't know the number.
+            return getString(R.string.import_from_sim_summary_no_number, name);
+        }
+        return TextUtils.expandTemplate(
+                getString(R.string.import_from_sim_summary),
+                name,
+                PhoneNumberUtilsCompat.createTtsSpannable(record.getNumber()));
+    }
+
+    private static class AdapterEntry {
+        public final CharSequence mLabel;
+        public final int mChoiceResourceId;
+        public final int mSubscriptionId;
+
+        public AdapterEntry(CharSequence label, int resId, int subId) {
+            mLabel = label;
+            mChoiceResourceId = resId;
+            mSubscriptionId = subId;
+        }
+
+        public AdapterEntry(String label, int resId) {
+            // Store a nonsense value for mSubscriptionId. If this constructor is used,
+            // the mSubscriptionId value should not be read later.
+            this(label, resId, /* subId = */ -1);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/interactions/TouchPointManager.java b/src/com/android/contacts/common/interactions/TouchPointManager.java
new file mode 100644
index 0000000..4c38e22
--- /dev/null
+++ b/src/com/android/contacts/common/interactions/TouchPointManager.java
@@ -0,0 +1,46 @@
+package com.android.contacts.common.interactions;
+
+import android.graphics.Point;
+
+/**
+ * Singleton class to keep track of where the user last touched the screen.
+ *
+ * Used to pass on to the InCallUI for animation.
+ */
+public class TouchPointManager {
+    public static final String TOUCH_POINT = "touchPoint";
+
+    private static TouchPointManager sInstance = new TouchPointManager();
+
+    private Point mPoint = new Point();
+
+    /**
+     * Private constructor.  Instance should only be acquired through getInstance().
+     */
+    private TouchPointManager() {
+    }
+
+    public static TouchPointManager getInstance() {
+        return sInstance;
+    }
+
+    public Point getPoint() {
+        return mPoint;
+    }
+
+    public void setPoint(int x, int y) {
+        mPoint.set(x, y);
+    }
+
+    /**
+     * When a point is initialized, its value is (0,0). Since it is highly unlikely a user will
+     * touch at that exact point, if the point in TouchPointManager is (0,0), it is safe to assume
+     * that the TouchPointManager has not yet collected a touch.
+     *
+     * @return True if there is a valid point saved. Define a valid point as any point that is
+     * not (0,0).
+     */
+    public boolean hasValidPoint() {
+        return mPoint.x != 0 || mPoint.y != 0;
+    }
+}
diff --git a/src/com/android/contacts/common/lettertiles/LetterTileDrawable.java b/src/com/android/contacts/common/lettertiles/LetterTileDrawable.java
new file mode 100644
index 0000000..d1f1811
--- /dev/null
+++ b/src/com/android/contacts/common/lettertiles/LetterTileDrawable.java
@@ -0,0 +1,287 @@
+/*
+ * 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.contacts.common.lettertiles;
+
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.Paint.Align;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+
+import com.android.contacts.common.R;
+
+import junit.framework.Assert;
+
+/**
+ * A drawable that encapsulates all the functionality needed to display a letter tile to
+ * represent a contact image.
+ */
+public class LetterTileDrawable extends Drawable {
+
+    private final String TAG = LetterTileDrawable.class.getSimpleName();
+
+    private final Paint mPaint;
+
+    /** Letter tile */
+    private static TypedArray sColors;
+    private static int sDefaultColor;
+    private static int sTileFontColor;
+    private static float sLetterToTileRatio;
+    private static Bitmap DEFAULT_PERSON_AVATAR;
+    private static Bitmap DEFAULT_BUSINESS_AVATAR;
+    private static Bitmap DEFAULT_VOICEMAIL_AVATAR;
+
+    /** Reusable components to avoid new allocations */
+    private static final Paint sPaint = new Paint();
+    private static final Rect sRect = new Rect();
+    private static final char[] sFirstChar = new char[1];
+
+    /** Contact type constants */
+    public static final int TYPE_PERSON = 1;
+    public static final int TYPE_BUSINESS = 2;
+    public static final int TYPE_VOICEMAIL = 3;
+    public static final int TYPE_DEFAULT = TYPE_PERSON;
+
+    /** 54% opacity */
+    private static final int ALPHA = 138;
+
+    private int mContactType = TYPE_DEFAULT;
+    private float mScale = 1.0f;
+    private float mOffset = 0.0f;
+    private boolean mIsCircle = false;
+
+    private int mColor;
+    private Character mLetter = null;
+
+    public LetterTileDrawable(final Resources res) {
+        if (sColors == null) {
+            sColors = res.obtainTypedArray(R.array.letter_tile_colors);
+            sDefaultColor = res.getColor(R.color.letter_tile_default_color);
+            sTileFontColor = res.getColor(R.color.letter_tile_font_color);
+            sLetterToTileRatio = res.getFraction(R.dimen.letter_to_tile_ratio, 1, 1);
+            DEFAULT_PERSON_AVATAR = BitmapFactory.decodeResource(res,
+                    R.drawable.ic_person_avatar);
+            DEFAULT_BUSINESS_AVATAR = BitmapFactory.decodeResource(res,
+                    R.drawable.ic_business_white_120dp);
+            DEFAULT_VOICEMAIL_AVATAR = BitmapFactory.decodeResource(res,
+                    R.drawable.ic_voicemail_avatar);
+            sPaint.setTypeface(Typeface.create(
+                    res.getString(R.string.letter_tile_letter_font_family), Typeface.NORMAL));
+            sPaint.setTextAlign(Align.CENTER);
+            sPaint.setAntiAlias(true);
+        }
+        mPaint = new Paint();
+        mPaint.setFilterBitmap(true);
+        mPaint.setDither(true);
+        mColor = sDefaultColor;
+    }
+
+    @Override
+    public void draw(final Canvas canvas) {
+        final Rect bounds = getBounds();
+        if (!isVisible() || bounds.isEmpty()) {
+            return;
+        }
+        // Draw letter tile.
+        drawLetterTile(canvas);
+    }
+
+    /**
+     * Draw the bitmap onto the canvas at the current bounds taking into account the current scale.
+     */
+    private void drawBitmap(final Bitmap bitmap, final int width, final int height,
+            final Canvas canvas) {
+        // The bitmap should be drawn in the middle of the canvas without changing its width to
+        // height ratio.
+        final Rect destRect = copyBounds();
+
+        // Crop the destination bounds into a square, scaled and offset as appropriate
+        final int halfLength = (int) (mScale * Math.min(destRect.width(), destRect.height()) / 2);
+
+        destRect.set(destRect.centerX() - halfLength,
+                (int) (destRect.centerY() - halfLength + mOffset * destRect.height()),
+                destRect.centerX() + halfLength,
+                (int) (destRect.centerY() + halfLength + mOffset * destRect.height()));
+
+        // Source rectangle remains the entire bounds of the source bitmap.
+        sRect.set(0, 0, width, height);
+
+        sPaint.setTextAlign(Align.CENTER);
+        sPaint.setAntiAlias(true);
+        sPaint.setAlpha(ALPHA);
+
+        canvas.drawBitmap(bitmap, sRect, destRect, sPaint);
+    }
+
+    private void drawLetterTile(final Canvas canvas) {
+        // Draw background color.
+        sPaint.setColor(mColor);
+
+        sPaint.setAlpha(mPaint.getAlpha());
+        final Rect bounds = getBounds();
+        final int minDimension = Math.min(bounds.width(), bounds.height());
+
+        if (mIsCircle) {
+            canvas.drawCircle(bounds.centerX(), bounds.centerY(), minDimension / 2, sPaint);
+        } else {
+            canvas.drawRect(bounds, sPaint);
+        }
+
+        // Draw letter/digit only if the first character is an english letter or there's a override
+
+        if (mLetter != null) {
+            // Draw letter or digit.
+            sFirstChar[0] = mLetter;
+
+            // Scale text by canvas bounds and user selected scaling factor
+            sPaint.setTextSize(mScale * sLetterToTileRatio * minDimension);
+            sPaint.getTextBounds(sFirstChar, 0, 1, sRect);
+            sPaint.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
+            sPaint.setColor(sTileFontColor);
+            sPaint.setAlpha(ALPHA);
+
+            // Draw the letter in the canvas, vertically shifted up or down by the user-defined
+            // offset
+            canvas.drawText(sFirstChar, 0, 1, bounds.centerX(),
+                    bounds.centerY() + mOffset * bounds.height() - sRect.exactCenterY(),
+                    sPaint);
+        } else {
+            // Draw the default image if there is no letter/digit to be drawn
+            final Bitmap bitmap = getBitmapForContactType(mContactType);
+            drawBitmap(bitmap, bitmap.getWidth(), bitmap.getHeight(),
+                    canvas);
+        }
+    }
+
+    public int getColor() {
+        return mColor;
+    }
+
+    /**
+     * Returns a deterministic color based on the provided contact identifier string.
+     */
+    private int pickColor(final String identifier) {
+        if (TextUtils.isEmpty(identifier) || mContactType == TYPE_VOICEMAIL) {
+            return sDefaultColor;
+        }
+        // String.hashCode() implementation is not supposed to change across java versions, so
+        // this should guarantee the same email address always maps to the same color.
+        // The email should already have been normalized by the ContactRequest.
+        final int color = Math.abs(identifier.hashCode()) % sColors.length();
+        return sColors.getColor(color, sDefaultColor);
+    }
+
+    private static Bitmap getBitmapForContactType(int contactType) {
+        switch (contactType) {
+            case TYPE_PERSON:
+                return DEFAULT_PERSON_AVATAR;
+            case TYPE_BUSINESS:
+                return DEFAULT_BUSINESS_AVATAR;
+            case TYPE_VOICEMAIL:
+                return DEFAULT_VOICEMAIL_AVATAR;
+            default:
+                return DEFAULT_PERSON_AVATAR;
+        }
+    }
+
+    private static boolean isEnglishLetter(final char c) {
+        return ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z');
+    }
+
+    @Override
+    public void setAlpha(final int alpha) {
+        mPaint.setAlpha(alpha);
+    }
+
+    @Override
+    public void setColorFilter(final ColorFilter cf) {
+        mPaint.setColorFilter(cf);
+    }
+
+    @Override
+    public int getOpacity() {
+        return android.graphics.PixelFormat.OPAQUE;
+    }
+
+    /**
+     * Scale the drawn letter tile to a ratio of its default size
+     *
+     * @param scale The ratio the letter tile should be scaled to as a percentage of its default
+     * size, from a scale of 0 to 2.0f. The default is 1.0f.
+     */
+    public LetterTileDrawable setScale(float scale) {
+        mScale = scale;
+        return this;
+    }
+
+    /**
+     * Assigns the vertical offset of the position of the letter tile to the ContactDrawable
+     *
+     * @param offset The provided offset must be within the range of -0.5f to 0.5f.
+     * If set to -0.5f, the letter will be shifted upwards by 0.5 times the height of the canvas
+     * it is being drawn on, which means it will be drawn with the center of the letter starting
+     * at the top edge of the canvas.
+     * If set to 0.5f, the letter will be shifted downwards by 0.5 times the height of the canvas
+     * it is being drawn on, which means it will be drawn with the center of the letter starting
+     * at the bottom edge of the canvas.
+     * The default is 0.0f.
+     */
+    public LetterTileDrawable setOffset(float offset) {
+        Assert.assertTrue(offset >= -0.5f && offset <= 0.5f);
+        mOffset = offset;
+        return this;
+    }
+
+    public LetterTileDrawable setLetter(Character letter){
+        mLetter = letter;
+        return this;
+    }
+
+    public LetterTileDrawable setColor(int color){
+        mColor = color;
+        return this;
+    }
+
+    public LetterTileDrawable setLetterAndColorFromContactDetails(final String displayName,
+            final String identifier) {
+        if (displayName != null && displayName.length() > 0
+                && isEnglishLetter(displayName.charAt(0))) {
+            mLetter = Character.toUpperCase(displayName.charAt(0));
+        }else{
+            mLetter = null;
+        }
+        mColor = pickColor(identifier);
+        return this;
+    }
+
+    public LetterTileDrawable setContactType(int contactType) {
+        mContactType = contactType;
+        return this;
+    }
+
+    public LetterTileDrawable setIsCircular(boolean isCircle) {
+        mIsCircle = isCircle;
+        return this;
+    }
+}
diff --git a/src/com/android/contacts/common/list/AccountFilterActivity.java b/src/com/android/contacts/common/list/AccountFilterActivity.java
new file mode 100644
index 0000000..bed6977
--- /dev/null
+++ b/src/com/android/contacts/common/list/AccountFilterActivity.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.AccountTypeManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Shows a list of all available accounts, letting the user select under which account to view
+ * contacts.
+ */
+public class AccountFilterActivity extends Activity implements AdapterView.OnItemClickListener {
+
+    private static final int SUBACTIVITY_CUSTOMIZE_FILTER = 0;
+
+    public static final String EXTRA_CONTACT_LIST_FILTER = "contactListFilter";
+
+    private ListView mListView;
+
+    // The default contact list type, it should be either FILTER_TYPE_ALL_ACCOUNTS or
+    // FILTER_TYPE_CUSTOM, since those are the only two options we give the user.
+    private int mCurrentFilterType;
+
+    private ContactListFilterView mCustomFilterView; // the "Customize" filter
+
+    private boolean mIsCustomFilterViewSelected;
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        setContentView(R.layout.contact_list_filter);
+
+        mListView = (ListView) findViewById(android.R.id.list);
+        mListView.setOnItemClickListener(this);
+
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+
+        mCurrentFilterType = ContactListFilterController.getInstance(this).isCustomFilterPersisted()
+                ? ContactListFilter.FILTER_TYPE_CUSTOM
+                : ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS;
+
+        // We don't need to use AccountFilterUtil.FilterLoader since we only want to show
+        // the "All contacts" and "Customize" options.
+        final List<ContactListFilter> filters = new ArrayList<>();
+        filters.add(ContactListFilter.createFilterWithType(
+                ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS));
+        filters.add(ContactListFilter.createFilterWithType(
+                ContactListFilter.FILTER_TYPE_CUSTOM));
+        mListView.setAdapter(new FilterListAdapter(this, filters, mCurrentFilterType));
+    }
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        final ContactListFilterView listFilterView = (ContactListFilterView) view;
+        final ContactListFilter filter = (ContactListFilter) view.getTag();
+        if (filter == null) return; // Just in case
+        if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
+            mCustomFilterView = listFilterView;
+            mIsCustomFilterViewSelected = listFilterView.isChecked();
+            final Intent intent = new Intent(this,
+                    CustomContactListFilterActivity.class);
+            listFilterView.setActivated(true);
+            // Switching activity has the highest priority. So when we open another activity, the
+            // announcement that indicates an account is checked will be interrupted. This is the
+            // way to overcome -- View.announceForAccessibility(CharSequence text);
+            listFilterView.announceForAccessibility(listFilterView.generateContentDescription());
+            startActivityForResult(intent, SUBACTIVITY_CUSTOMIZE_FILTER);
+        } else {
+            listFilterView.setActivated(true);
+            listFilterView.announceForAccessibility(listFilterView.generateContentDescription());
+            final Intent intent = new Intent();
+            intent.putExtra(EXTRA_CONTACT_LIST_FILTER, filter);
+            setResult(Activity.RESULT_OK, intent);
+            finish();
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (resultCode == Activity.RESULT_CANCELED && mCustomFilterView != null &&
+                !mIsCustomFilterViewSelected) {
+            mCustomFilterView.setActivated(false);
+            return;
+        }
+
+        if (resultCode != Activity.RESULT_OK) {
+            return;
+        }
+
+        switch (requestCode) {
+            case SUBACTIVITY_CUSTOMIZE_FILTER: {
+                final Intent intent = new Intent();
+                ContactListFilter filter = ContactListFilter.createFilterWithType(
+                        ContactListFilter.FILTER_TYPE_CUSTOM);
+                intent.putExtra(EXTRA_CONTACT_LIST_FILTER, filter);
+                setResult(Activity.RESULT_OK, intent);
+                finish();
+                break;
+            }
+        }
+    }
+
+    private static class FilterListAdapter extends BaseAdapter {
+        private final List<ContactListFilter> mFilters;
+        private final LayoutInflater mLayoutInflater;
+        private final AccountTypeManager mAccountTypes;
+        private final int mCurrentFilter;
+
+        public FilterListAdapter(
+                Context context, List<ContactListFilter> filters, int current) {
+            mLayoutInflater = (LayoutInflater) context.getSystemService
+                    (Context.LAYOUT_INFLATER_SERVICE);
+            mFilters = filters;
+            mCurrentFilter = current;
+            mAccountTypes = AccountTypeManager.getInstance(context);
+        }
+
+        @Override
+        public int getCount() {
+            return mFilters.size();
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public ContactListFilter getItem(int position) {
+            return mFilters.get(position);
+        }
+
+        public View getView(int position, View convertView, ViewGroup parent) {
+            final ContactListFilterView view;
+            if (convertView != null) {
+                view = (ContactListFilterView) convertView;
+            } else {
+                view = (ContactListFilterView) mLayoutInflater.inflate(
+                        R.layout.contact_list_filter_item, parent, false);
+            }
+            view.setSingleAccount(mFilters.size() == 1);
+            final ContactListFilter filter = mFilters.get(position);
+            view.setContactListFilter(filter);
+            view.bindView(mAccountTypes);
+            view.setTag(filter);
+            view.setActivated(filter.filterType == mCurrentFilter);
+            return view;
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                // We have two logical "up" Activities: People and Phone.
+                // Instead of having one static "up" direction, behave like back as an
+                // exceptional case.
+                onBackPressed();
+                return true;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/src/com/android/contacts/common/list/AutoScrollListView.java b/src/com/android/contacts/common/list/AutoScrollListView.java
new file mode 100644
index 0000000..ae7ca17
--- /dev/null
+++ b/src/com/android/contacts/common/list/AutoScrollListView.java
@@ -0,0 +1,117 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.ListView;
+
+/**
+ * A ListView that can be asked to scroll (smoothly or otherwise) to a specific
+ * position.  This class takes advantage of similar functionality that exists
+ * in {@link ListView} and enhances it.
+ */
+public class AutoScrollListView extends ListView {
+
+    /**
+     * Position the element at about 1/3 of the list height
+     */
+    private static final float PREFERRED_SELECTION_OFFSET_FROM_TOP = 0.33f;
+
+    private int mRequestedScrollPosition = -1;
+    private boolean mSmoothScrollRequested;
+
+    public AutoScrollListView(Context context) {
+        super(context);
+    }
+
+    public AutoScrollListView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public AutoScrollListView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    /**
+     * Brings the specified position to view by optionally performing a jump-scroll maneuver:
+     * first it jumps to some position near the one requested and then does a smooth
+     * scroll to the requested position.  This creates an impression of full smooth
+     * scrolling without actually traversing the entire list.  If smooth scrolling is
+     * not requested, instantly positions the requested item at a preferred offset.
+     */
+    public void requestPositionToScreen(int position, boolean smoothScroll) {
+        mRequestedScrollPosition = position;
+        mSmoothScrollRequested = smoothScroll;
+        requestLayout();
+    }
+
+    @Override
+    protected void layoutChildren() {
+        super.layoutChildren();
+        if (mRequestedScrollPosition == -1) {
+            return;
+        }
+
+        final int position = mRequestedScrollPosition;
+        mRequestedScrollPosition = -1;
+
+        int firstPosition = getFirstVisiblePosition() + 1;
+        int lastPosition = getLastVisiblePosition();
+        if (position >= firstPosition && position <= lastPosition) {
+            return; // Already on screen
+        }
+
+        final int offset = (int) (getHeight() * PREFERRED_SELECTION_OFFSET_FROM_TOP);
+        if (!mSmoothScrollRequested) {
+            setSelectionFromTop(position, offset);
+
+            // Since we have changed the scrolling position, we need to redo child layout
+            // Calling "requestLayout" in the middle of a layout pass has no effect,
+            // so we call layoutChildren explicitly
+            super.layoutChildren();
+
+        } else {
+            // We will first position the list a couple of screens before or after
+            // the new selection and then scroll smoothly to it.
+            int twoScreens = (lastPosition - firstPosition) * 2;
+            int preliminaryPosition;
+            if (position < firstPosition) {
+                preliminaryPosition = position + twoScreens;
+                if (preliminaryPosition >= getCount()) {
+                    preliminaryPosition = getCount() - 1;
+                }
+                if (preliminaryPosition < firstPosition) {
+                    setSelection(preliminaryPosition);
+                    super.layoutChildren();
+                }
+            } else {
+                preliminaryPosition = position - twoScreens;
+                if (preliminaryPosition < 0) {
+                    preliminaryPosition = 0;
+                }
+                if (preliminaryPosition > lastPosition) {
+                    setSelection(preliminaryPosition);
+                    super.layoutChildren();
+                }
+            }
+
+
+            smoothScrollToPositionFromTop(position, offset);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactEntry.java b/src/com/android/contacts/common/list/ContactEntry.java
new file mode 100644
index 0000000..a29a8d8
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactEntry.java
@@ -0,0 +1,69 @@
+/*
+ * 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.contacts.common.list;
+
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.provider.ContactsContract.PinnedPositions;
+import android.text.TextUtils;
+
+import com.android.contacts.common.preference.ContactsPreferences;
+
+/**
+ * Class to hold contact information
+ */
+public class ContactEntry {
+
+    private static final int UNSET_DISPLAY_ORDER_PREFERENCE = -1;
+
+    /**
+     * Primary name for a Contact
+     */
+    public String namePrimary;
+    /**
+     * Alternative name for a Contact, e.g. last name first
+     */
+    public String nameAlternative;
+    /**
+     * The user's preference on name display order, last name first or first time first.
+     * {@see ContactsPreferences}
+     */
+    public int nameDisplayOrder = UNSET_DISPLAY_ORDER_PREFERENCE;
+
+    public String status;
+    public String phoneLabel;
+    public String phoneNumber;
+    public Uri photoUri;
+    public Uri lookupUri;
+    public String lookupKey;
+    public Drawable presenceIcon;
+    public long id;
+    public int pinned = PinnedPositions.UNPINNED;
+    public boolean isFavorite = false;
+    public boolean isDefaultNumber = false;
+
+    public static final ContactEntry BLANK_ENTRY = new ContactEntry();
+
+    public String getPreferredDisplayName() {
+        if (nameDisplayOrder == UNSET_DISPLAY_ORDER_PREFERENCE
+                || nameDisplayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY
+                || TextUtils.isEmpty(nameAlternative)) {
+            return namePrimary;
+        }
+        return nameAlternative;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/list/ContactEntryListAdapter.java b/src/com/android/contacts/common/list/ContactEntryListAdapter.java
new file mode 100644
index 0000000..1ac8fd5
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactEntryListAdapter.java
@@ -0,0 +1,787 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Directory;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.QuickContactBadge;
+import android.widget.SectionIndexer;
+import android.widget.TextView;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.DirectoryCompat;
+import com.android.contacts.common.util.SearchUtil;
+
+import java.util.HashSet;
+
+/**
+ * Common base class for various contact-related lists, e.g. contact list, phone number list
+ * etc.
+ */
+public abstract class ContactEntryListAdapter extends IndexerListAdapter {
+
+    private static final String TAG = "ContactEntryListAdapter";
+
+    /**
+     * Indicates whether the {@link Directory#LOCAL_INVISIBLE} directory should
+     * be included in the search.
+     */
+    public static final boolean LOCAL_INVISIBLE_DIRECTORY_ENABLED = false;
+
+    private int mDisplayOrder;
+    private int mSortOrder;
+
+    private boolean mDisplayPhotos;
+    private boolean mCircularPhotos = true;
+    private boolean mQuickContactEnabled;
+    private boolean mAdjustSelectionBoundsEnabled;
+
+    /**
+     * indicates if contact queries include favorites
+     */
+    private boolean mIncludeFavorites;
+
+    private int mNumberOfFavorites;
+
+    /**
+     * The root view of the fragment that this adapter is associated with.
+     */
+    private View mFragmentRootView;
+
+    private ContactPhotoManager mPhotoLoader;
+
+    private String mQueryString;
+    private String mUpperCaseQueryString;
+    private boolean mSearchMode;
+    private int mDirectorySearchMode;
+    private int mDirectoryResultLimit = Integer.MAX_VALUE;
+
+    private boolean mEmptyListEnabled = true;
+
+    private boolean mSelectionVisible;
+
+    private ContactListFilter mFilter;
+    private boolean mDarkTheme = false;
+
+    /** Resource used to provide header-text for default filter. */
+    private CharSequence mDefaultFilterHeaderText;
+
+    public ContactEntryListAdapter(Context context) {
+        super(context);
+        setDefaultFilterHeaderText(R.string.local_search_label);
+        addPartitions();
+    }
+
+    /**
+     * @param fragmentRootView Root view of the fragment. This is used to restrict the scope of
+     * image loading requests that get cancelled on cursor changes.
+     */
+    protected void setFragmentRootView(View fragmentRootView) {
+        mFragmentRootView = fragmentRootView;
+    }
+
+    protected void setDefaultFilterHeaderText(int resourceId) {
+        mDefaultFilterHeaderText = getContext().getResources().getText(resourceId);
+    }
+
+    @Override
+    protected ContactListItemView newView(
+            Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+        final ContactListItemView view = new ContactListItemView(context, null);
+        view.setIsSectionHeaderEnabled(isSectionHeaderDisplayEnabled());
+        view.setAdjustSelectionBoundsEnabled(isAdjustSelectionBoundsEnabled());
+        return view;
+    }
+
+    @Override
+    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
+        final ContactListItemView view = (ContactListItemView) itemView;
+        view.setIsSectionHeaderEnabled(isSectionHeaderDisplayEnabled());
+        bindWorkProfileIcon(view, partition);
+    }
+
+    @Override
+    protected View createPinnedSectionHeaderView(Context context, ViewGroup parent) {
+        return new ContactListPinnedHeaderView(context, null, parent);
+    }
+
+    @Override
+    protected void setPinnedSectionTitle(View pinnedHeaderView, String title) {
+        ((ContactListPinnedHeaderView) pinnedHeaderView).setSectionHeaderTitle(title);
+    }
+
+    protected void addPartitions() {
+        addPartition(createDefaultDirectoryPartition());
+    }
+
+    protected DirectoryPartition createDefaultDirectoryPartition() {
+        DirectoryPartition partition = new DirectoryPartition(true, true);
+        partition.setDirectoryId(Directory.DEFAULT);
+        partition.setDirectoryType(getContext().getString(R.string.contactsList));
+        partition.setPriorityDirectory(true);
+        partition.setPhotoSupported(true);
+        partition.setLabel(mDefaultFilterHeaderText.toString());
+        return partition;
+    }
+
+    /**
+     * Remove all directories after the default directory. This is typically used when contacts
+     * list screens are asked to exit the search mode and thus need to remove all remote directory
+     * results for the search.
+     *
+     * This code assumes that the default directory and directories before that should not be
+     * deleted (e.g. Join screen has "suggested contacts" directory before the default director,
+     * and we should not remove the directory).
+     */
+    public void removeDirectoriesAfterDefault() {
+        final int partitionCount = getPartitionCount();
+        for (int i = partitionCount - 1; i >= 0; i--) {
+            final Partition partition = getPartition(i);
+            if ((partition instanceof DirectoryPartition)
+                    && ((DirectoryPartition) partition).getDirectoryId() == Directory.DEFAULT) {
+                break;
+            } else {
+                removePartition(i);
+            }
+        }
+    }
+
+    protected int getPartitionByDirectoryId(long id) {
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition) {
+                if (((DirectoryPartition)partition).getDirectoryId() == id) {
+                    return i;
+                }
+            }
+        }
+        return -1;
+    }
+
+    protected DirectoryPartition getDirectoryById(long id) {
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition) {
+                final DirectoryPartition directoryPartition = (DirectoryPartition) partition;
+                if (directoryPartition.getDirectoryId() == id) {
+                    return directoryPartition;
+                }
+            }
+        }
+        return null;
+    }
+
+    public abstract String getContactDisplayName(int position);
+    public abstract void configureLoader(CursorLoader loader, long directoryId);
+
+    /**
+     * Marks all partitions as "loading"
+     */
+    public void onDataReload() {
+        boolean notify = false;
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition) {
+                DirectoryPartition directoryPartition = (DirectoryPartition)partition;
+                if (!directoryPartition.isLoading()) {
+                    notify = true;
+                }
+                directoryPartition.setStatus(DirectoryPartition.STATUS_NOT_LOADED);
+            }
+        }
+        if (notify) {
+            notifyDataSetChanged();
+        }
+    }
+
+    @Override
+    public void clearPartitions() {
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition) {
+                DirectoryPartition directoryPartition = (DirectoryPartition)partition;
+                directoryPartition.setStatus(DirectoryPartition.STATUS_NOT_LOADED);
+            }
+        }
+        super.clearPartitions();
+    }
+
+    public boolean isSearchMode() {
+        return mSearchMode;
+    }
+
+    public void setSearchMode(boolean flag) {
+        mSearchMode = flag;
+    }
+
+    public String getQueryString() {
+        return mQueryString;
+    }
+
+    public void setQueryString(String queryString) {
+        mQueryString = queryString;
+        if (TextUtils.isEmpty(queryString)) {
+            mUpperCaseQueryString = null;
+        } else {
+            mUpperCaseQueryString = SearchUtil
+                    .cleanStartAndEndOfSearchQuery(queryString.toUpperCase()) ;
+        }
+    }
+
+    public String getUpperCaseQueryString() {
+        return mUpperCaseQueryString;
+    }
+
+    public int getDirectorySearchMode() {
+        return mDirectorySearchMode;
+    }
+
+    public void setDirectorySearchMode(int mode) {
+        mDirectorySearchMode = mode;
+    }
+
+    public int getDirectoryResultLimit() {
+        return mDirectoryResultLimit;
+    }
+
+    public int getDirectoryResultLimit(DirectoryPartition directoryPartition) {
+        final int limit = directoryPartition.getResultLimit();
+        return limit == DirectoryPartition.RESULT_LIMIT_DEFAULT ? mDirectoryResultLimit : limit;
+    }
+
+    public void setDirectoryResultLimit(int limit) {
+        this.mDirectoryResultLimit = limit;
+    }
+
+    public int getContactNameDisplayOrder() {
+        return mDisplayOrder;
+    }
+
+    public void setContactNameDisplayOrder(int displayOrder) {
+        mDisplayOrder = displayOrder;
+    }
+
+    public int getSortOrder() {
+        return mSortOrder;
+    }
+
+    public void setSortOrder(int sortOrder) {
+        mSortOrder = sortOrder;
+    }
+
+    public void setPhotoLoader(ContactPhotoManager photoLoader) {
+        mPhotoLoader = photoLoader;
+    }
+
+    protected ContactPhotoManager getPhotoLoader() {
+        return mPhotoLoader;
+    }
+
+    public boolean getDisplayPhotos() {
+        return mDisplayPhotos;
+    }
+
+    public void setDisplayPhotos(boolean displayPhotos) {
+        mDisplayPhotos = displayPhotos;
+    }
+
+    public boolean getCircularPhotos() {
+        return mCircularPhotos;
+    }
+
+    public void setCircularPhotos(boolean circularPhotos) {
+        mCircularPhotos = circularPhotos;
+    }
+
+    public boolean isEmptyListEnabled() {
+        return mEmptyListEnabled;
+    }
+
+    public void setEmptyListEnabled(boolean flag) {
+        mEmptyListEnabled = flag;
+    }
+
+    public boolean isSelectionVisible() {
+        return mSelectionVisible;
+    }
+
+    public void setSelectionVisible(boolean flag) {
+        this.mSelectionVisible = flag;
+    }
+
+    public boolean isQuickContactEnabled() {
+        return mQuickContactEnabled;
+    }
+
+    public void setQuickContactEnabled(boolean quickContactEnabled) {
+        mQuickContactEnabled = quickContactEnabled;
+    }
+
+    public boolean isAdjustSelectionBoundsEnabled() {
+        return mAdjustSelectionBoundsEnabled;
+    }
+
+    public void setAdjustSelectionBoundsEnabled(boolean enabled) {
+        mAdjustSelectionBoundsEnabled = enabled;
+    }
+
+    public boolean shouldIncludeFavorites() {
+        return mIncludeFavorites;
+    }
+
+    public void setIncludeFavorites(boolean includeFavorites) {
+        mIncludeFavorites = includeFavorites;
+    }
+
+    public void setFavoritesSectionHeader(int numberOfFavorites) {
+        if (mIncludeFavorites) {
+            mNumberOfFavorites = numberOfFavorites;
+            setSectionHeader(R.string.star_sign, numberOfFavorites);
+        }
+    }
+
+    public int getNumberOfFavorites() {
+        return mNumberOfFavorites;
+    }
+
+    private void setSectionHeader(int resId, int numberOfItems) {
+        SectionIndexer indexer = getIndexer();
+        if (indexer != null) {
+            ((ContactsSectionIndexer) indexer).setProfileAndFavoritesHeader(
+                    getContext().getString(resId), numberOfItems);
+        }
+    }
+
+    public void setDarkTheme(boolean value) {
+        mDarkTheme = value;
+    }
+
+    /**
+     * Updates partitions according to the directory meta-data contained in the supplied
+     * cursor.
+     */
+    public void changeDirectories(Cursor cursor) {
+        if (cursor.getCount() == 0) {
+            // Directory table must have at least local directory, without which this adapter will
+            // enter very weird state.
+            Log.e(TAG, "Directory search loader returned an empty cursor, which implies we have " +
+                    "no directory entries.", new RuntimeException());
+            return;
+        }
+        HashSet<Long> directoryIds = new HashSet<Long>();
+
+        int idColumnIndex = cursor.getColumnIndex(Directory._ID);
+        int directoryTypeColumnIndex = cursor.getColumnIndex(DirectoryListLoader.DIRECTORY_TYPE);
+        int displayNameColumnIndex = cursor.getColumnIndex(Directory.DISPLAY_NAME);
+        int photoSupportColumnIndex = cursor.getColumnIndex(Directory.PHOTO_SUPPORT);
+
+        // TODO preserve the order of partition to match those of the cursor
+        // Phase I: add new directories
+        cursor.moveToPosition(-1);
+        while (cursor.moveToNext()) {
+            long id = cursor.getLong(idColumnIndex);
+            directoryIds.add(id);
+            if (getPartitionByDirectoryId(id) == -1) {
+                DirectoryPartition partition = new DirectoryPartition(false, true);
+                partition.setDirectoryId(id);
+                if (DirectoryCompat.isRemoteDirectoryId(id)) {
+                    if (DirectoryCompat.isEnterpriseDirectoryId(id)) {
+                        partition.setLabel(mContext.getString(R.string.directory_search_label_work));
+                    } else {
+                        partition.setLabel(mContext.getString(R.string.directory_search_label));
+                    }
+                } else {
+                    if (DirectoryCompat.isEnterpriseDirectoryId(id)) {
+                        partition.setLabel(mContext.getString(R.string.list_filter_phones_work));
+                    } else {
+                        partition.setLabel(mDefaultFilterHeaderText.toString());
+                    }
+                }
+                partition.setDirectoryType(cursor.getString(directoryTypeColumnIndex));
+                partition.setDisplayName(cursor.getString(displayNameColumnIndex));
+                int photoSupport = cursor.getInt(photoSupportColumnIndex);
+                partition.setPhotoSupported(photoSupport == Directory.PHOTO_SUPPORT_THUMBNAIL_ONLY
+                        || photoSupport == Directory.PHOTO_SUPPORT_FULL);
+                addPartition(partition);
+            }
+        }
+
+        // Phase II: remove deleted directories
+        int count = getPartitionCount();
+        for (int i = count; --i >= 0; ) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition) {
+                long id = ((DirectoryPartition)partition).getDirectoryId();
+                if (!directoryIds.contains(id)) {
+                    removePartition(i);
+                }
+            }
+        }
+
+        invalidate();
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public void changeCursor(int partitionIndex, Cursor cursor) {
+        if (partitionIndex >= getPartitionCount()) {
+            // There is no partition for this data
+            return;
+        }
+
+        Partition partition = getPartition(partitionIndex);
+        if (partition instanceof DirectoryPartition) {
+            ((DirectoryPartition)partition).setStatus(DirectoryPartition.STATUS_LOADED);
+        }
+
+        if (mDisplayPhotos && mPhotoLoader != null && isPhotoSupported(partitionIndex)) {
+            mPhotoLoader.refreshCache();
+        }
+
+        super.changeCursor(partitionIndex, cursor);
+
+        if (isSectionHeaderDisplayEnabled() && partitionIndex == getIndexedPartition()) {
+            updateIndexer(cursor);
+        }
+
+        // When the cursor changes, cancel any pending asynchronous photo loads.
+        mPhotoLoader.cancelPendingRequests(mFragmentRootView);
+    }
+
+    public void changeCursor(Cursor cursor) {
+        changeCursor(0, cursor);
+    }
+
+    /**
+     * Updates the indexer, which is used to produce section headers.
+     */
+    private void updateIndexer(Cursor cursor) {
+        if (cursor == null || cursor.isClosed()) {
+            setIndexer(null);
+            return;
+        }
+
+        Bundle bundle = cursor.getExtras();
+        if (bundle.containsKey(Contacts.EXTRA_ADDRESS_BOOK_INDEX_TITLES) &&
+                bundle.containsKey(Contacts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS)) {
+            String sections[] =
+                    bundle.getStringArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
+            int counts[] = bundle.getIntArray(
+                    Contacts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
+
+            if (getExtraStartingSection()) {
+                // Insert an additional unnamed section at the top of the list.
+                String allSections[] = new String[sections.length + 1];
+                int allCounts[] = new int[counts.length + 1];
+                for (int i = 0; i < sections.length; i++) {
+                    allSections[i + 1] = sections[i];
+                    allCounts[i + 1] = counts[i];
+                }
+                allCounts[0] = 1;
+                allSections[0] = "";
+                setIndexer(new ContactsSectionIndexer(allSections, allCounts));
+            } else {
+                setIndexer(new ContactsSectionIndexer(sections, counts));
+            }
+        } else {
+            setIndexer(null);
+        }
+    }
+
+    protected boolean getExtraStartingSection() {
+        return false;
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        // We need a separate view type for each item type, plus another one for
+        // each type with header, plus one for "other".
+        return getItemViewTypeCount() * 2 + 1;
+    }
+
+    @Override
+    public int getItemViewType(int partitionIndex, int position) {
+        int type = super.getItemViewType(partitionIndex, position);
+        if (isSectionHeaderDisplayEnabled() && partitionIndex == getIndexedPartition()) {
+            Placement placement = getItemPlacementInSection(position);
+            return placement.firstInSection ? type : getItemViewTypeCount() + type;
+        } else {
+            return type;
+        }
+    }
+
+    @Override
+    public boolean isEmpty() {
+        // TODO
+//        if (contactsListActivity.mProviderStatus != ProviderStatus.STATUS_NORMAL) {
+//            return true;
+//        }
+
+        if (!mEmptyListEnabled) {
+            return false;
+        } else if (isSearchMode()) {
+            return TextUtils.isEmpty(getQueryString());
+        } else {
+            return super.isEmpty();
+        }
+    }
+
+    public boolean isLoading() {
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition
+                    && ((DirectoryPartition) partition).isLoading()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public boolean areAllPartitionsEmpty() {
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            if (!isPartitionEmpty(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Changes visibility parameters for the default directory partition.
+     */
+    public void configureDefaultPartition(boolean showIfEmpty, boolean hasHeader) {
+        int defaultPartitionIndex = -1;
+        int count = getPartitionCount();
+        for (int i = 0; i < count; i++) {
+            Partition partition = getPartition(i);
+            if (partition instanceof DirectoryPartition &&
+                    ((DirectoryPartition)partition).getDirectoryId() == Directory.DEFAULT) {
+                defaultPartitionIndex = i;
+                break;
+            }
+        }
+        if (defaultPartitionIndex != -1) {
+            setShowIfEmpty(defaultPartitionIndex, showIfEmpty);
+            setHasHeader(defaultPartitionIndex, hasHeader);
+        }
+    }
+
+    @Override
+    protected View newHeaderView(Context context, int partition, Cursor cursor,
+            ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(context);
+        View view = inflater.inflate(R.layout.directory_header, parent, false);
+        if (!getPinnedPartitionHeadersEnabled()) {
+            // If the headers are unpinned, there is no need for their background
+            // color to be non-transparent. Setting this transparent reduces maintenance for
+            // non-pinned headers. We don't need to bother synchronizing the activity's
+            // background color with the header background color.
+            view.setBackground(null);
+        }
+        return view;
+    }
+
+    protected void bindWorkProfileIcon(final ContactListItemView view, int partitionId) {
+        final Partition partition = getPartition(partitionId);
+        if (partition instanceof DirectoryPartition) {
+            final DirectoryPartition directoryPartition = (DirectoryPartition) partition;
+            final long directoryId = directoryPartition.getDirectoryId();
+            final long userType = ContactsUtils.determineUserType(directoryId, null);
+            view.setWorkProfileIconEnabled(userType == ContactsUtils.USER_TYPE_WORK);
+        }
+    }
+
+    @Override
+    protected void bindHeaderView(View view, int partitionIndex, Cursor cursor) {
+        Partition partition = getPartition(partitionIndex);
+        if (!(partition instanceof DirectoryPartition)) {
+            return;
+        }
+
+        DirectoryPartition directoryPartition = (DirectoryPartition)partition;
+        long directoryId = directoryPartition.getDirectoryId();
+        TextView labelTextView = (TextView)view.findViewById(R.id.label);
+        TextView displayNameTextView = (TextView)view.findViewById(R.id.display_name);
+        labelTextView.setText(directoryPartition.getLabel());
+        if (!DirectoryCompat.isRemoteDirectoryId(directoryId)) {
+            displayNameTextView.setText(null);
+        } else {
+            String directoryName = directoryPartition.getDisplayName();
+            String displayName = !TextUtils.isEmpty(directoryName)
+                    ? directoryName
+                    : directoryPartition.getDirectoryType();
+            displayNameTextView.setText(displayName);
+        }
+
+        final Resources res = getContext().getResources();
+        final int headerPaddingTop = partitionIndex == 1 && getPartition(0).isEmpty()?
+                0 : res.getDimensionPixelOffset(R.dimen.directory_header_extra_top_padding);
+        // There should be no extra padding at the top of the first directory header
+        view.setPaddingRelative(view.getPaddingStart(), headerPaddingTop, view.getPaddingEnd(),
+                view.getPaddingBottom());
+    }
+
+    // Default implementation simply returns number of rows in the cursor.
+    // Broken out into its own routine so can be overridden by child classes
+    // for eg number of unique contacts for a phone list.
+    protected int getResultCount(Cursor cursor) {
+        return cursor == null ? 0 : cursor.getCount();
+    }
+
+    // TODO: fix PluralRules to handle zero correctly and use Resources.getQuantityText directly
+    public String getQuantityText(int count, int zeroResourceId, int pluralResourceId) {
+        if (count == 0) {
+            return getContext().getString(zeroResourceId);
+        } else {
+            String format = getContext().getResources()
+                    .getQuantityText(pluralResourceId, count).toString();
+            return String.format(format, count);
+        }
+    }
+
+    public boolean isPhotoSupported(int partitionIndex) {
+        Partition partition = getPartition(partitionIndex);
+        if (partition instanceof DirectoryPartition) {
+            return ((DirectoryPartition) partition).isPhotoSupported();
+        }
+        return true;
+    }
+
+    /**
+     * Returns the currently selected filter.
+     */
+    public ContactListFilter getFilter() {
+        return mFilter;
+    }
+
+    public void setFilter(ContactListFilter filter) {
+        mFilter = filter;
+    }
+
+    // TODO: move sharable logic (bindXX() methods) to here with extra arguments
+
+    /**
+     * Loads the photo for the quick contact view and assigns the contact uri.
+     * @param photoIdColumn Index of the photo id column
+     * @param photoUriColumn Index of the photo uri column. Optional: Can be -1
+     * @param contactIdColumn Index of the contact id column
+     * @param lookUpKeyColumn Index of the lookup key column
+     * @param displayNameColumn Index of the display name column
+     */
+    protected void bindQuickContact(final ContactListItemView view, int partitionIndex,
+            Cursor cursor, int photoIdColumn, int photoUriColumn, int contactIdColumn,
+            int lookUpKeyColumn, int displayNameColumn) {
+        long photoId = 0;
+        if (!cursor.isNull(photoIdColumn)) {
+            photoId = cursor.getLong(photoIdColumn);
+        }
+
+        QuickContactBadge quickContact = view.getQuickContact();
+        quickContact.assignContactUri(
+                getContactUri(partitionIndex, cursor, contactIdColumn, lookUpKeyColumn));
+        if (CompatUtils.hasPrioritizedMimeType()) {
+            // The Contacts app never uses the QuickContactBadge. Therefore, it is safe to assume
+            // that only Dialer will use this QuickContact badge. This means prioritizing the phone
+            // mimetype here is reasonable.
+            quickContact.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+        }
+
+        if (photoId != 0 || photoUriColumn == -1) {
+            getPhotoLoader().loadThumbnail(quickContact, photoId, mDarkTheme, mCircularPhotos,
+                    null);
+        } else {
+            final String photoUriString = cursor.getString(photoUriColumn);
+            final Uri photoUri = photoUriString == null ? null : Uri.parse(photoUriString);
+            DefaultImageRequest request = null;
+            if (photoUri == null) {
+                request = getDefaultImageRequestFromCursor(cursor, displayNameColumn,
+                        lookUpKeyColumn);
+            }
+            getPhotoLoader().loadPhoto(quickContact, photoUri, -1, mDarkTheme, mCircularPhotos,
+                    request);
+        }
+
+    }
+
+    @Override
+    public boolean hasStableIds() {
+        // Whenever bindViewId() is called, the values passed into setId() are stable or
+        // stable-ish. For example, when one contact is modified we don't expect a second
+        // contact's Contact._ID values to change.
+        return true;
+    }
+
+    protected void bindViewId(final ContactListItemView view, Cursor cursor, int idColumn) {
+        // Set a semi-stable id, so that talkback won't get confused when the list gets
+        // refreshed. There is little harm in inserting the same ID twice.
+        long contactId = cursor.getLong(idColumn);
+        view.setId((int) (contactId % Integer.MAX_VALUE));
+
+    }
+
+    protected Uri getContactUri(int partitionIndex, Cursor cursor,
+            int contactIdColumn, int lookUpKeyColumn) {
+        long contactId = cursor.getLong(contactIdColumn);
+        String lookupKey = cursor.getString(lookUpKeyColumn);
+        long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
+        Uri uri = Contacts.getLookupUri(contactId, lookupKey);
+        if (uri != null && directoryId != Directory.DEFAULT) {
+            uri = uri.buildUpon().appendQueryParameter(
+                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)).build();
+        }
+        return uri;
+    }
+
+    /**
+     * Retrieves the lookup key and display name from a cursor, and returns a
+     * {@link DefaultImageRequest} containing these contact details
+     *
+     * @param cursor Contacts cursor positioned at the current row to retrieve contact details for
+     * @param displayNameColumn Column index of the display name
+     * @param lookupKeyColumn Column index of the lookup key
+     * @return {@link DefaultImageRequest} with the displayName and identifier fields set to the
+     * display name and lookup key of the contact.
+     */
+    public DefaultImageRequest getDefaultImageRequestFromCursor(Cursor cursor,
+            int displayNameColumn, int lookupKeyColumn) {
+        final String displayName = cursor.getString(displayNameColumn);
+        final String lookupKey = cursor.getString(lookupKeyColumn);
+        return new DefaultImageRequest(displayName, lookupKey, mCircularPhotos);
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactEntryListFragment.java b/src/com/android/contacts/common/list/ContactEntryListFragment.java
new file mode 100644
index 0000000..0c72d68
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -0,0 +1,987 @@
+/*
+ * 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.contacts.common.list;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.LoaderManager;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.Intent;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Parcelable;
+import android.provider.ContactsContract.Directory;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnFocusChangeListener;
+import android.view.View.OnTouchListener;
+import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.AdapterView.OnItemLongClickListener;
+import android.widget.ListView;
+
+import com.android.common.widget.CompositeCursorAdapter.Partition;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.logging.ListEvent.ActionType;
+import com.android.contacts.common.logging.Logger;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+import java.util.Locale;
+
+/**
+ * Common base class for various contact-related list fragments.
+ */
+public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter>
+        extends Fragment
+        implements OnItemClickListener, OnScrollListener, OnFocusChangeListener, OnTouchListener,
+                OnItemLongClickListener, LoaderCallbacks<Cursor> {
+    private static final String TAG = "ContactEntryListFragment";
+
+    // TODO: Make this protected. This should not be used from the PeopleActivity but
+    // instead use the new startActivityWithResultFromFragment API
+    public static final int ACTIVITY_REQUEST_CODE_PICKER = 1;
+
+    private static final String KEY_LIST_STATE = "liststate";
+    private static final String KEY_SECTION_HEADER_DISPLAY_ENABLED = "sectionHeaderDisplayEnabled";
+    private static final String KEY_PHOTO_LOADER_ENABLED = "photoLoaderEnabled";
+    private static final String KEY_QUICK_CONTACT_ENABLED = "quickContactEnabled";
+    private static final String KEY_ADJUST_SELECTION_BOUNDS_ENABLED =
+            "adjustSelectionBoundsEnabled";
+    private static final String KEY_SEARCH_MODE = "searchMode";
+    private static final String KEY_DISPLAY_DIRECTORY_HEADER = "displayDirectoryHeader";
+    private static final String KEY_VISIBLE_SCROLLBAR_ENABLED = "visibleScrollbarEnabled";
+    private static final String KEY_SCROLLBAR_POSITION = "scrollbarPosition";
+    private static final String KEY_QUERY_STRING = "queryString";
+    private static final String KEY_DIRECTORY_SEARCH_MODE = "directorySearchMode";
+    private static final String KEY_SELECTION_VISIBLE = "selectionVisible";
+    private static final String KEY_REQUEST = "request";
+    private static final String KEY_DARK_THEME = "darkTheme";
+    private static final String KEY_LEGACY_COMPATIBILITY = "legacyCompatibility";
+    private static final String KEY_DIRECTORY_RESULT_LIMIT = "directoryResultLimit";
+    private static final String KEY_LOGS_LIST_EVENTS = "logsListEvents";
+    private static final String KEY_DATA_LOADED = "dataLoaded";
+
+    private static final String DIRECTORY_ID_ARG_KEY = "directoryId";
+
+    private static final int DIRECTORY_LOADER_ID = -1;
+
+    private static final int DIRECTORY_SEARCH_DELAY_MILLIS = 300;
+    private static final int DIRECTORY_SEARCH_MESSAGE = 1;
+
+    private static final int DEFAULT_DIRECTORY_RESULT_LIMIT = 20;
+
+    private boolean mSectionHeaderDisplayEnabled;
+    private boolean mPhotoLoaderEnabled;
+    private boolean mQuickContactEnabled = true;
+    private boolean mAdjustSelectionBoundsEnabled = true;
+    private boolean mIncludeFavorites;
+    private boolean mSearchMode;
+    private boolean mDisplayDirectoryHeader = true;
+    private boolean mVisibleScrollbarEnabled;
+    private boolean mShowEmptyListForEmptyQuery;
+    private int mVerticalScrollbarPosition = getDefaultVerticalScrollbarPosition();
+    private String mQueryString;
+    private int mDirectorySearchMode = DirectoryListLoader.SEARCH_MODE_NONE;
+    private boolean mSelectionVisible;
+    private boolean mLegacyCompatibility;
+    // Whether we should log list LOAD events. It may be modified when list filter is changed.
+    private boolean mLogListEvents = true;
+    // Whether data has been loaded ever. It will stay true once it's set to true in the lifecycle.
+    // We use this flag to log LOAD events when the activity/fragment is initialized.
+    private boolean mDataLoaded;
+
+    private boolean mEnabled = true;
+
+    private T mAdapter;
+    private View mView;
+    private ListView mListView;
+
+    /**
+     * Used to save the scrolling state of the list when the fragment is not recreated.
+     */
+    private int mListViewTopIndex;
+    private int mListViewTopOffset;
+
+    /**
+     * Used for keeping track of the scroll state of the list.
+     */
+    private Parcelable mListState;
+
+    /**
+     * The type of the contacts list.
+     */
+    private int mListType;
+
+    private int mDisplayOrder;
+    private int mSortOrder;
+    private int mDirectoryResultLimit = DEFAULT_DIRECTORY_RESULT_LIMIT;
+
+    private ContactPhotoManager mPhotoManager;
+    private ContactsPreferences mContactsPrefs;
+
+    private boolean mForceLoad;
+
+    private boolean mDarkTheme;
+
+    private static final int STATUS_NOT_LOADED = 0;
+    private static final int STATUS_LOADING = 1;
+    private static final int STATUS_LOADED = 2;
+
+    private int mDirectoryListStatus = STATUS_NOT_LOADED;
+
+    /**
+     * Indicates whether we are doing the initial complete load of data (false) or
+     * a refresh caused by a change notification (true)
+     */
+    private boolean mLoadPriorityDirectoriesOnly;
+
+    private Context mContext;
+
+    private LoaderManager mLoaderManager;
+
+    private Handler mDelayedDirectorySearchHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == DIRECTORY_SEARCH_MESSAGE) {
+                loadDirectoryPartition(msg.arg1, (DirectoryPartition) msg.obj);
+            }
+        }
+    };
+    private int defaultVerticalScrollbarPosition;
+
+    protected abstract View inflateView(LayoutInflater inflater, ViewGroup container);
+    protected abstract T createListAdapter();
+
+    /**
+     * @param position Please note that the position is already adjusted for
+     *            header views, so "0" means the first list item below header
+     *            views.
+     */
+    protected abstract void onItemClick(int position, long id);
+
+    /**
+     * @param position Please note that the position is already adjusted for
+     *            header views, so "0" means the first list item below header
+     *            views.
+     */
+    protected boolean onItemLongClick(int position, long id) {
+        return false;
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        setContext(activity);
+        setLoaderManager(super.getLoaderManager());
+    }
+
+    /**
+     * Sets a context for the fragment in the unit test environment.
+     */
+    public void setContext(Context context) {
+        mContext = context;
+        configurePhotoLoader();
+    }
+
+    public Context getContext() {
+        return mContext;
+    }
+
+    public void setEnabled(boolean enabled) {
+        if (mEnabled != enabled) {
+            mEnabled = enabled;
+            if (mAdapter != null) {
+                if (mEnabled) {
+                    reloadData();
+                } else {
+                    mAdapter.clearPartitions();
+                }
+            }
+        }
+    }
+
+    /**
+     * Overrides a loader manager for use in unit tests.
+     */
+    public void setLoaderManager(LoaderManager loaderManager) {
+        mLoaderManager = loaderManager;
+    }
+
+    @Override
+    public LoaderManager getLoaderManager() {
+        return mLoaderManager;
+    }
+
+    public T getAdapter() {
+        return mAdapter;
+    }
+
+    @Override
+    public View getView() {
+        return mView;
+    }
+
+    public ListView getListView() {
+        return mListView;
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(KEY_SECTION_HEADER_DISPLAY_ENABLED, mSectionHeaderDisplayEnabled);
+        outState.putBoolean(KEY_PHOTO_LOADER_ENABLED, mPhotoLoaderEnabled);
+        outState.putBoolean(KEY_QUICK_CONTACT_ENABLED, mQuickContactEnabled);
+        outState.putBoolean(KEY_ADJUST_SELECTION_BOUNDS_ENABLED, mAdjustSelectionBoundsEnabled);
+        outState.putBoolean(KEY_SEARCH_MODE, mSearchMode);
+        outState.putBoolean(KEY_DISPLAY_DIRECTORY_HEADER, mDisplayDirectoryHeader);
+        outState.putBoolean(KEY_VISIBLE_SCROLLBAR_ENABLED, mVisibleScrollbarEnabled);
+        outState.putInt(KEY_SCROLLBAR_POSITION, mVerticalScrollbarPosition);
+        outState.putInt(KEY_DIRECTORY_SEARCH_MODE, mDirectorySearchMode);
+        outState.putBoolean(KEY_SELECTION_VISIBLE, mSelectionVisible);
+        outState.putBoolean(KEY_LEGACY_COMPATIBILITY, mLegacyCompatibility);
+        outState.putString(KEY_QUERY_STRING, mQueryString);
+        outState.putInt(KEY_DIRECTORY_RESULT_LIMIT, mDirectoryResultLimit);
+        outState.putBoolean(KEY_DARK_THEME, mDarkTheme);
+        outState.putBoolean(KEY_LOGS_LIST_EVENTS, mLogListEvents);
+        outState.putBoolean(KEY_DATA_LOADED, mDataLoaded);
+
+        if (mListView != null) {
+            outState.putParcelable(KEY_LIST_STATE, mListView.onSaveInstanceState());
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedState) {
+        super.onCreate(savedState);
+        restoreSavedState(savedState);
+        mAdapter = createListAdapter();
+        mContactsPrefs = new ContactsPreferences(mContext);
+    }
+
+    public void restoreSavedState(Bundle savedState) {
+        if (savedState == null) {
+            return;
+        }
+
+        mSectionHeaderDisplayEnabled = savedState.getBoolean(KEY_SECTION_HEADER_DISPLAY_ENABLED);
+        mPhotoLoaderEnabled = savedState.getBoolean(KEY_PHOTO_LOADER_ENABLED);
+        mQuickContactEnabled = savedState.getBoolean(KEY_QUICK_CONTACT_ENABLED);
+        mAdjustSelectionBoundsEnabled = savedState.getBoolean(KEY_ADJUST_SELECTION_BOUNDS_ENABLED);
+        mSearchMode = savedState.getBoolean(KEY_SEARCH_MODE);
+        mDisplayDirectoryHeader = savedState.getBoolean(KEY_DISPLAY_DIRECTORY_HEADER);
+        mVisibleScrollbarEnabled = savedState.getBoolean(KEY_VISIBLE_SCROLLBAR_ENABLED);
+        mVerticalScrollbarPosition = savedState.getInt(KEY_SCROLLBAR_POSITION);
+        mDirectorySearchMode = savedState.getInt(KEY_DIRECTORY_SEARCH_MODE);
+        mSelectionVisible = savedState.getBoolean(KEY_SELECTION_VISIBLE);
+        mLegacyCompatibility = savedState.getBoolean(KEY_LEGACY_COMPATIBILITY);
+        mQueryString = savedState.getString(KEY_QUERY_STRING);
+        mDirectoryResultLimit = savedState.getInt(KEY_DIRECTORY_RESULT_LIMIT);
+        mDarkTheme = savedState.getBoolean(KEY_DARK_THEME);
+
+        // Retrieve list state. This will be applied in onLoadFinished
+        mListState = savedState.getParcelable(KEY_LIST_STATE);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        mContactsPrefs.registerChangeListener(mPreferencesChangeListener);
+
+        mForceLoad = loadPreferences();
+
+        mDirectoryListStatus = STATUS_NOT_LOADED;
+        mLoadPriorityDirectoriesOnly = true;
+
+        startLoading();
+    }
+
+    protected void startLoading() {
+        if (mAdapter == null) {
+            // The method was called before the fragment was started
+            return;
+        }
+
+        configureAdapter();
+        int partitionCount = mAdapter.getPartitionCount();
+        for (int i = 0; i < partitionCount; i++) {
+            Partition partition = mAdapter.getPartition(i);
+            if (partition instanceof DirectoryPartition) {
+                DirectoryPartition directoryPartition = (DirectoryPartition)partition;
+                if (directoryPartition.getStatus() == DirectoryPartition.STATUS_NOT_LOADED) {
+                    if (directoryPartition.isPriorityDirectory() || !mLoadPriorityDirectoriesOnly) {
+                        startLoadingDirectoryPartition(i);
+                    }
+                }
+            } else {
+                getLoaderManager().initLoader(i, null, this);
+            }
+        }
+
+        // Next time this method is called, we should start loading non-priority directories
+        mLoadPriorityDirectoriesOnly = false;
+    }
+
+    @Override
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+        if (id == DIRECTORY_LOADER_ID) {
+            DirectoryListLoader loader = new DirectoryListLoader(mContext);
+            loader.setDirectorySearchMode(mAdapter.getDirectorySearchMode());
+            loader.setLocalInvisibleDirectoryEnabled(
+                    ContactEntryListAdapter.LOCAL_INVISIBLE_DIRECTORY_ENABLED);
+            return loader;
+        } else {
+            CursorLoader loader = createCursorLoader(mContext);
+            long directoryId = args != null && args.containsKey(DIRECTORY_ID_ARG_KEY)
+                    ? args.getLong(DIRECTORY_ID_ARG_KEY)
+                    : Directory.DEFAULT;
+            mAdapter.configureLoader(loader, directoryId);
+            return loader;
+        }
+    }
+
+    public CursorLoader createCursorLoader(Context context) {
+        return new CursorLoader(context, null, null, null, null, null) {
+            @Override
+            protected Cursor onLoadInBackground() {
+                try {
+                    return super.onLoadInBackground();
+                } catch (RuntimeException e) {
+                    // We don't even know what the projection should be, so no point trying to
+                    // return an empty MatrixCursor with the correct projection here.
+                    Log.w(TAG, "RuntimeException while trying to query ContactsProvider.");
+                    return null;
+                }
+            }
+        };
+    }
+
+    private void startLoadingDirectoryPartition(int partitionIndex) {
+        DirectoryPartition partition = (DirectoryPartition)mAdapter.getPartition(partitionIndex);
+        partition.setStatus(DirectoryPartition.STATUS_LOADING);
+        long directoryId = partition.getDirectoryId();
+        if (mForceLoad) {
+            if (directoryId == Directory.DEFAULT) {
+                loadDirectoryPartition(partitionIndex, partition);
+            } else {
+                loadDirectoryPartitionDelayed(partitionIndex, partition);
+            }
+        } else {
+            Bundle args = new Bundle();
+            args.putLong(DIRECTORY_ID_ARG_KEY, directoryId);
+            getLoaderManager().initLoader(partitionIndex, args, this);
+        }
+    }
+
+    /**
+     * Queues up a delayed request to search the specified directory. Since
+     * directory search will likely introduce a lot of network traffic, we want
+     * to wait for a pause in the user's typing before sending a directory request.
+     */
+    private void loadDirectoryPartitionDelayed(int partitionIndex, DirectoryPartition partition) {
+        mDelayedDirectorySearchHandler.removeMessages(DIRECTORY_SEARCH_MESSAGE, partition);
+        Message msg = mDelayedDirectorySearchHandler.obtainMessage(
+                DIRECTORY_SEARCH_MESSAGE, partitionIndex, 0, partition);
+        mDelayedDirectorySearchHandler.sendMessageDelayed(msg, DIRECTORY_SEARCH_DELAY_MILLIS);
+    }
+
+    /**
+     * Loads the directory partition.
+     */
+    protected void loadDirectoryPartition(int partitionIndex, DirectoryPartition partition) {
+        Bundle args = new Bundle();
+        args.putLong(DIRECTORY_ID_ARG_KEY, partition.getDirectoryId());
+        getLoaderManager().restartLoader(partitionIndex, args, this);
+    }
+
+    /**
+     * Cancels all queued directory loading requests.
+     */
+    private void removePendingDirectorySearchRequests() {
+        mDelayedDirectorySearchHandler.removeMessages(DIRECTORY_SEARCH_MESSAGE);
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        if (!mEnabled) {
+            return;
+        }
+
+        getListView().setVisibility(View.VISIBLE);
+        getView().setVisibility(View.VISIBLE);
+
+        int loaderId = loader.getId();
+        if (loaderId == DIRECTORY_LOADER_ID) {
+            mDirectoryListStatus = STATUS_LOADED;
+            mAdapter.changeDirectories(data);
+            startLoading();
+        } else {
+            onPartitionLoaded(loaderId, data);
+            if (isSearchMode()) {
+                int directorySearchMode = getDirectorySearchMode();
+                if (directorySearchMode != DirectoryListLoader.SEARCH_MODE_NONE) {
+                    if (mDirectoryListStatus == STATUS_NOT_LOADED) {
+                        mDirectoryListStatus = STATUS_LOADING;
+                        getLoaderManager().initLoader(DIRECTORY_LOADER_ID, null, this);
+                    } else {
+                        startLoading();
+                    }
+                }
+            } else {
+                maybeLogListEvent();
+                mDirectoryListStatus = STATUS_NOT_LOADED;
+                getLoaderManager().destroyLoader(DIRECTORY_LOADER_ID);
+            }
+        }
+    }
+
+    protected void maybeLogListEvent() {
+        if (!mDataLoaded || mLogListEvents) {
+            Logger.logListEvent(ActionType.LOAD, getListType(), getAdapter().getCount(),
+                        /* clickedIndex */ -1, /* numSelected */ 0);
+            mLogListEvents = false;
+            mDataLoaded = true;
+        }
+    }
+
+    public void onLoaderReset(Loader<Cursor> loader) {
+    }
+
+    protected void onPartitionLoaded(int partitionIndex, Cursor data) {
+        if (partitionIndex >= mAdapter.getPartitionCount()) {
+            // When we get unsolicited data, ignore it.  This could happen
+            // when we are switching from search mode to the default mode.
+            return;
+        }
+
+        mAdapter.changeCursor(partitionIndex, data);
+        setListHeader();
+
+        if (!isLoading()) {
+            completeRestoreInstanceState();
+        }
+    }
+
+    public boolean isLoading() {
+        if (mAdapter != null && mAdapter.isLoading()) {
+            return true;
+        }
+
+        if (isLoadingDirectoryList()) {
+            return true;
+        }
+
+        return false;
+    }
+
+    public boolean isLoadingDirectoryList() {
+        return isSearchMode() && getDirectorySearchMode() != DirectoryListLoader.SEARCH_MODE_NONE
+                && (mDirectoryListStatus == STATUS_NOT_LOADED
+                        || mDirectoryListStatus == STATUS_LOADING);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mContactsPrefs.unregisterChangeListener();
+        mAdapter.clearPartitions();
+    }
+
+    protected void reloadData() {
+        removePendingDirectorySearchRequests();
+        mAdapter.onDataReload();
+        mLoadPriorityDirectoriesOnly = true;
+        mForceLoad = true;
+        startLoading();
+    }
+
+    /**
+     * Shows a view at the top of the list.
+     */
+    protected void setListHeader() {}
+
+    /**
+     * Provides logic that dismisses this fragment. The default implementation
+     * does nothing.
+     */
+    protected void finish() {
+    }
+
+    public void setSectionHeaderDisplayEnabled(boolean flag) {
+        if (mSectionHeaderDisplayEnabled != flag) {
+            mSectionHeaderDisplayEnabled = flag;
+            if (mAdapter != null) {
+                mAdapter.setSectionHeaderDisplayEnabled(flag);
+            }
+            configureVerticalScrollbar();
+        }
+    }
+
+    public boolean isSectionHeaderDisplayEnabled() {
+        return mSectionHeaderDisplayEnabled;
+    }
+
+    public void setVisibleScrollbarEnabled(boolean flag) {
+        if (mVisibleScrollbarEnabled != flag) {
+            mVisibleScrollbarEnabled = flag;
+            configureVerticalScrollbar();
+        }
+    }
+
+    public boolean isVisibleScrollbarEnabled() {
+        return mVisibleScrollbarEnabled;
+    }
+
+    public void setVerticalScrollbarPosition(int position) {
+        if (mVerticalScrollbarPosition != position) {
+            mVerticalScrollbarPosition = position;
+            configureVerticalScrollbar();
+        }
+    }
+
+    private void configureVerticalScrollbar() {
+        boolean hasScrollbar = isVisibleScrollbarEnabled() && isSectionHeaderDisplayEnabled();
+
+        if (mListView != null) {
+            mListView.setFastScrollEnabled(hasScrollbar);
+            mListView.setVerticalScrollbarPosition(mVerticalScrollbarPosition);
+            mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
+        }
+    }
+
+    public void setPhotoLoaderEnabled(boolean flag) {
+        mPhotoLoaderEnabled = flag;
+        configurePhotoLoader();
+    }
+
+    public boolean isPhotoLoaderEnabled() {
+        return mPhotoLoaderEnabled;
+    }
+
+    /**
+     * Returns true if the list is supposed to visually highlight the selected item.
+     */
+    public boolean isSelectionVisible() {
+        return mSelectionVisible;
+    }
+
+    public void setSelectionVisible(boolean flag) {
+        this.mSelectionVisible = flag;
+    }
+
+    public void setQuickContactEnabled(boolean flag) {
+        this.mQuickContactEnabled = flag;
+    }
+
+    public void setAdjustSelectionBoundsEnabled(boolean flag) {
+        mAdjustSelectionBoundsEnabled = flag;
+    }
+
+    public void setIncludeFavorites(boolean flag) {
+        mIncludeFavorites = flag;
+        if (mAdapter != null) {
+            mAdapter.setIncludeFavorites(flag);
+        }
+    }
+
+    public void setDisplayDirectoryHeader(boolean flag) {
+        mDisplayDirectoryHeader = flag;
+    }
+
+    /**
+     * Enter/exit search mode. This is method is tightly related to the current query, and should
+     * only be called by {@link #setQueryString}.
+     *
+     * Also note this method doesn't call {@link #reloadData()}; {@link #setQueryString} does it.
+     */
+    protected void setSearchMode(boolean flag) {
+        if (mSearchMode != flag) {
+            mSearchMode = flag;
+            setSectionHeaderDisplayEnabled(!mSearchMode);
+
+            if (!flag) {
+                mDirectoryListStatus = STATUS_NOT_LOADED;
+                getLoaderManager().destroyLoader(DIRECTORY_LOADER_ID);
+            }
+
+            if (mAdapter != null) {
+                mAdapter.setSearchMode(flag);
+
+                mAdapter.clearPartitions();
+                if (!flag) {
+                    // If we are switching from search to regular display, remove all directory
+                    // partitions after default one, assuming they are remote directories which
+                    // should be cleaned up on exiting the search mode.
+                    mAdapter.removeDirectoriesAfterDefault();
+                }
+                mAdapter.configureDefaultPartition(false, shouldDisplayDirectoryHeader());
+            }
+
+            if (mListView != null) {
+                mListView.setFastScrollEnabled(!flag);
+            }
+        }
+    }
+
+    /**
+     * When not in search mode, directory header should always be hidden.
+     * When in search mode, directory header should be displayed when mDisplayDirectoryHeader is
+     * set to true. (mDisplayDirectoryHeader default value is true)
+     */
+    private boolean shouldDisplayDirectoryHeader() {
+        if (!mSearchMode) {
+            return false;
+        }
+        return mDisplayDirectoryHeader;
+    }
+
+    public final boolean isSearchMode() {
+        return mSearchMode;
+    }
+
+    public final String getQueryString() {
+        return mQueryString;
+    }
+
+    // TODO: the paramter delaySelection is not in use, and let's remove it.
+    public void setQueryString(String queryString, boolean delaySelection) {
+        if (!TextUtils.equals(mQueryString, queryString)) {
+            if (mShowEmptyListForEmptyQuery && mAdapter != null && mListView != null) {
+                if (TextUtils.isEmpty(mQueryString)) {
+                    // Restore the adapter if the query used to be empty.
+                    mListView.setAdapter(mAdapter);
+                } else if (TextUtils.isEmpty(queryString)) {
+                    // Instantly clear the list view if the new query is empty.
+                    mListView.setAdapter(null);
+                }
+            }
+
+            mQueryString = queryString;
+            setSearchMode(!TextUtils.isEmpty(mQueryString) || mShowEmptyListForEmptyQuery);
+
+            if (mAdapter != null) {
+                mAdapter.setQueryString(queryString);
+                reloadData();
+            }
+        }
+    }
+
+    public void setShowEmptyListForNullQuery(boolean show) {
+        mShowEmptyListForEmptyQuery = show;
+    }
+
+    public int getDirectoryLoaderId() {
+        return DIRECTORY_LOADER_ID;
+    }
+
+    public int getDirectorySearchMode() {
+        return mDirectorySearchMode;
+    }
+
+    public void setDirectorySearchMode(int mode) {
+        mDirectorySearchMode = mode;
+    }
+
+    public boolean isLegacyCompatibilityMode() {
+        return mLegacyCompatibility;
+    }
+
+    public void setLegacyCompatibilityMode(boolean flag) {
+        mLegacyCompatibility = flag;
+    }
+
+    protected int getContactNameDisplayOrder() {
+        return mDisplayOrder;
+    }
+
+    protected void setContactNameDisplayOrder(int displayOrder) {
+        mDisplayOrder = displayOrder;
+        if (mAdapter != null) {
+            mAdapter.setContactNameDisplayOrder(displayOrder);
+        }
+    }
+
+    public int getSortOrder() {
+        return mSortOrder;
+    }
+
+    public void setSortOrder(int sortOrder) {
+        mSortOrder = sortOrder;
+        if (mAdapter != null) {
+            mAdapter.setSortOrder(sortOrder);
+        }
+    }
+
+    public void setDirectoryResultLimit(int limit) {
+        mDirectoryResultLimit = limit;
+    }
+
+    protected boolean loadPreferences() {
+        boolean changed = false;
+        if (getContactNameDisplayOrder() != mContactsPrefs.getDisplayOrder()) {
+            setContactNameDisplayOrder(mContactsPrefs.getDisplayOrder());
+            changed = true;
+        }
+
+        if (getSortOrder() != mContactsPrefs.getSortOrder()) {
+            setSortOrder(mContactsPrefs.getSortOrder());
+            changed = true;
+        }
+
+        return changed;
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        onCreateView(inflater, container);
+
+        boolean searchMode = isSearchMode();
+        mAdapter.setSearchMode(searchMode);
+        mAdapter.configureDefaultPartition(false, shouldDisplayDirectoryHeader());
+        mAdapter.setPhotoLoader(mPhotoManager);
+        mListView.setAdapter(mAdapter);
+
+        if (!isSearchMode()) {
+            mListView.setFocusableInTouchMode(true);
+            mListView.requestFocus();
+        }
+
+        if (savedInstanceState != null) {
+            mLogListEvents = savedInstanceState.getBoolean(KEY_LOGS_LIST_EVENTS, true);
+            mDataLoaded = savedInstanceState.getBoolean(KEY_DATA_LOADED, false);
+        }
+
+        return mView;
+    }
+
+    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
+        mView = inflateView(inflater, container);
+
+        mListView = (ListView)mView.findViewById(android.R.id.list);
+        if (mListView == null) {
+            throw new RuntimeException(
+                    "Your content must have a ListView whose id attribute is " +
+                    "'android.R.id.list'");
+        }
+
+        View emptyView = mView.findViewById(android.R.id.empty);
+        if (emptyView != null) {
+            mListView.setEmptyView(emptyView);
+        }
+
+        mListView.setOnItemClickListener(this);
+        mListView.setOnItemLongClickListener(this);
+        mListView.setOnFocusChangeListener(this);
+        mListView.setOnTouchListener(this);
+        mListView.setFastScrollEnabled(!isSearchMode());
+
+        // Tell list view to not show dividers. We'll do it ourself so that we can *not* show
+        // them when an A-Z headers is visible.
+        mListView.setDividerHeight(0);
+
+        // We manually save/restore the listview state
+        mListView.setSaveEnabled(false);
+
+        configureVerticalScrollbar();
+        configurePhotoLoader();
+
+        getAdapter().setFragmentRootView(getView());
+    }
+
+    protected void configurePhotoLoader() {
+        if (isPhotoLoaderEnabled() && mContext != null) {
+            if (mPhotoManager == null) {
+                mPhotoManager = ContactPhotoManager.getInstance(mContext);
+            }
+            if (mListView != null) {
+                mListView.setOnScrollListener(this);
+            }
+            if (mAdapter != null) {
+                mAdapter.setPhotoLoader(mPhotoManager);
+            }
+        }
+    }
+
+    protected void configureAdapter() {
+        if (mAdapter == null) {
+            return;
+        }
+
+        mAdapter.setQuickContactEnabled(mQuickContactEnabled);
+        mAdapter.setAdjustSelectionBoundsEnabled(mAdjustSelectionBoundsEnabled);
+        mAdapter.setIncludeFavorites(mIncludeFavorites);
+        mAdapter.setQueryString(mQueryString);
+        mAdapter.setDirectorySearchMode(mDirectorySearchMode);
+        mAdapter.setPinnedPartitionHeadersEnabled(false);
+        mAdapter.setContactNameDisplayOrder(mDisplayOrder);
+        mAdapter.setSortOrder(mSortOrder);
+        mAdapter.setSectionHeaderDisplayEnabled(mSectionHeaderDisplayEnabled);
+        mAdapter.setSelectionVisible(mSelectionVisible);
+        mAdapter.setDirectoryResultLimit(mDirectoryResultLimit);
+        mAdapter.setDarkTheme(mDarkTheme);
+    }
+
+    @Override
+    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
+            int totalItemCount) {
+    }
+
+    @Override
+    public void onScrollStateChanged(AbsListView view, int scrollState) {
+        if (scrollState == OnScrollListener.SCROLL_STATE_FLING) {
+            mPhotoManager.pause();
+        } else if (isPhotoLoaderEnabled()) {
+            mPhotoManager.resume();
+        }
+    }
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        hideSoftKeyboard();
+
+        int adjPosition = position - mListView.getHeaderViewsCount();
+        if (adjPosition >= 0) {
+            onItemClick(adjPosition, id);
+        }
+    }
+
+    @Override
+    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
+        int adjPosition = position - mListView.getHeaderViewsCount();
+
+        if (adjPosition >= 0) {
+            return onItemLongClick(adjPosition, id);
+        }
+        return false;
+    }
+
+    private void hideSoftKeyboard() {
+        // Hide soft keyboard, if visible
+        InputMethodManager inputMethodManager = (InputMethodManager)
+                mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+        inputMethodManager.hideSoftInputFromWindow(mListView.getWindowToken(), 0);
+    }
+
+    /**
+     * Dismisses the soft keyboard when the list takes focus.
+     */
+    @Override
+    public void onFocusChange(View view, boolean hasFocus) {
+        if (view == mListView && hasFocus) {
+            hideSoftKeyboard();
+        }
+    }
+
+    /**
+     * Dismisses the soft keyboard when the list is touched.
+     */
+    @Override
+    public boolean onTouch(View view, MotionEvent event) {
+        if (view == mListView) {
+            hideSoftKeyboard();
+        }
+        return false;
+    }
+
+    @Override
+    public void onPause() {
+        // Save the scrolling state of the list view
+        mListViewTopIndex = mListView.getFirstVisiblePosition();
+        View v = mListView.getChildAt(0);
+        mListViewTopOffset = (v == null) ? 0 : (v.getTop() - mListView.getPaddingTop());
+
+        super.onPause();
+        removePendingDirectorySearchRequests();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        // Restore the selection of the list view. See b/19982820.
+        // This has to be done manually because if the list view has its emptyView set,
+        // the scrolling state will be reset when clearPartitions() is called on the adapter.
+        mListView.setSelectionFromTop(mListViewTopIndex, mListViewTopOffset);
+    }
+
+    /**
+     * Restore the list state after the adapter is populated.
+     */
+    protected void completeRestoreInstanceState() {
+        if (mListState != null) {
+            mListView.onRestoreInstanceState(mListState);
+            mListState = null;
+        }
+    }
+
+    public void setDarkTheme(boolean value) {
+        mDarkTheme = value;
+        if (mAdapter != null) mAdapter.setDarkTheme(value);
+    }
+
+    /**
+     * Processes a result returned by the contact picker.
+     */
+    public void onPickerResult(Intent data) {
+        throw new UnsupportedOperationException("Picker result handler is not implemented.");
+    }
+
+    private ContactsPreferences.ChangeListener mPreferencesChangeListener =
+            new ContactsPreferences.ChangeListener() {
+        @Override
+        public void onChange() {
+            loadPreferences();
+            reloadData();
+        }
+    };
+
+    private int getDefaultVerticalScrollbarPosition() {
+        final Locale locale = Locale.getDefault();
+        final int layoutDirection = TextUtils.getLayoutDirectionFromLocale(locale);
+        switch (layoutDirection) {
+            case View.LAYOUT_DIRECTION_RTL:
+                return View.SCROLLBAR_POSITION_LEFT;
+            case View.LAYOUT_DIRECTION_LTR:
+            default:
+                return View.SCROLLBAR_POSITION_RIGHT;
+        }
+    }
+
+    public void setListType(int listType) {
+        mListType = listType;
+    }
+
+    public int getListType() {
+        return mListType;
+    }
+
+    public void setLogListEvents(boolean logListEvents) {
+        mLogListEvents = logListEvents;
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactListAdapter.java b/src/com/android/contacts/common/list/ContactListAdapter.java
new file mode 100644
index 0000000..677aa46
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactListAdapter.java
@@ -0,0 +1,444 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.provider.ContactsContract.SearchSnippets;
+import android.text.TextUtils;
+import android.view.ViewGroup;
+import android.widget.ListView;
+
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.ContactsCompat;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type.
+ */
+public abstract class ContactListAdapter extends MultiSelectEntryContactListAdapter {
+
+    public static class ContactQuery {
+        private static final String[] CONTACT_PROJECTION_PRIMARY = new String[] {
+            Contacts._ID,                           // 0
+            Contacts.DISPLAY_NAME_PRIMARY,          // 1
+            Contacts.CONTACT_PRESENCE,              // 2
+            Contacts.CONTACT_STATUS,                // 3
+            Contacts.PHOTO_ID,                      // 4
+            Contacts.PHOTO_THUMBNAIL_URI,           // 5
+            Contacts.LOOKUP_KEY,                    // 6
+            Contacts.PHONETIC_NAME,                 // 7
+            Contacts.STARRED,                       // 9
+        };
+
+        private static final String[] CONTACT_PROJECTION_ALTERNATIVE = new String[] {
+            Contacts._ID,                           // 0
+            Contacts.DISPLAY_NAME_ALTERNATIVE,      // 1
+            Contacts.CONTACT_PRESENCE,              // 2
+            Contacts.CONTACT_STATUS,                // 3
+            Contacts.PHOTO_ID,                      // 4
+            Contacts.PHOTO_THUMBNAIL_URI,           // 5
+            Contacts.LOOKUP_KEY,                    // 6
+            Contacts.PHONETIC_NAME,                 // 7
+            Contacts.STARRED,                       // 8
+        };
+
+        private static final String[] FILTER_PROJECTION_PRIMARY = new String[] {
+            Contacts._ID,                           // 0
+            Contacts.DISPLAY_NAME_PRIMARY,          // 1
+            Contacts.CONTACT_PRESENCE,              // 2
+            Contacts.CONTACT_STATUS,                // 3
+            Contacts.PHOTO_ID,                      // 4
+            Contacts.PHOTO_THUMBNAIL_URI,           // 5
+            Contacts.LOOKUP_KEY,                    // 6
+            Contacts.PHONETIC_NAME,                 // 7
+            Contacts.STARRED,                       // 8
+            SearchSnippets.SNIPPET,                 // 9
+        };
+
+        private static final String[] FILTER_PROJECTION_ALTERNATIVE = new String[] {
+            Contacts._ID,                           // 0
+            Contacts.DISPLAY_NAME_ALTERNATIVE,      // 1
+            Contacts.CONTACT_PRESENCE,              // 2
+            Contacts.CONTACT_STATUS,                // 3
+            Contacts.PHOTO_ID,                      // 4
+            Contacts.PHOTO_THUMBNAIL_URI,           // 5
+            Contacts.LOOKUP_KEY,                    // 6
+            Contacts.PHONETIC_NAME,                 // 7
+            Contacts.STARRED,                       // 8
+            SearchSnippets.SNIPPET,                 // 9
+        };
+
+        public static final int CONTACT_ID               = 0;
+        public static final int CONTACT_DISPLAY_NAME     = 1;
+        public static final int CONTACT_PRESENCE_STATUS  = 2;
+        public static final int CONTACT_CONTACT_STATUS   = 3;
+        public static final int CONTACT_PHOTO_ID         = 4;
+        public static final int CONTACT_PHOTO_URI        = 5;
+        public static final int CONTACT_LOOKUP_KEY       = 6;
+        public static final int CONTACT_PHONETIC_NAME    = 7;
+        public static final int CONTACT_STARRED          = 8;
+        public static final int CONTACT_SNIPPET          = 9;
+    }
+
+    private CharSequence mUnknownNameText;
+
+    private long mSelectedContactDirectoryId;
+    private String mSelectedContactLookupKey;
+    private long mSelectedContactId;
+    private ContactListItemView.PhotoPosition mPhotoPosition;
+
+    public ContactListAdapter(Context context) {
+        super(context, ContactQuery.CONTACT_ID);
+
+        mUnknownNameText = context.getText(R.string.missing_name);
+    }
+
+    public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) {
+        mPhotoPosition = photoPosition;
+    }
+
+    public ContactListItemView.PhotoPosition getPhotoPosition() {
+        return mPhotoPosition;
+    }
+
+    public CharSequence getUnknownNameText() {
+        return mUnknownNameText;
+    }
+
+    public long getSelectedContactDirectoryId() {
+        return mSelectedContactDirectoryId;
+    }
+
+    public String getSelectedContactLookupKey() {
+        return mSelectedContactLookupKey;
+    }
+
+    public long getSelectedContactId() {
+        return mSelectedContactId;
+    }
+
+    public void setSelectedContact(long selectedDirectoryId, String lookupKey, long contactId) {
+        mSelectedContactDirectoryId = selectedDirectoryId;
+        mSelectedContactLookupKey = lookupKey;
+        mSelectedContactId = contactId;
+    }
+
+    protected static Uri buildSectionIndexerUri(Uri uri) {
+        return uri.buildUpon()
+                .appendQueryParameter(Contacts.EXTRA_ADDRESS_BOOK_INDEX, "true").build();
+    }
+
+    @Override
+    public String getContactDisplayName(int position) {
+        return ((Cursor) getItem(position)).getString(ContactQuery.CONTACT_DISPLAY_NAME);
+    }
+
+    /**
+     * Builds the {@link Contacts#CONTENT_LOOKUP_URI} for the given
+     * {@link ListView} position.
+     */
+    public Uri getContactUri(int position) {
+        int partitionIndex = getPartitionForPosition(position);
+        Cursor item = (Cursor)getItem(position);
+        return item != null ? getContactUri(partitionIndex, item) : null;
+    }
+
+    public Uri getContactUri(int partitionIndex, Cursor cursor) {
+        long contactId = cursor.getLong(ContactQuery.CONTACT_ID);
+        String lookupKey = cursor.getString(ContactQuery.CONTACT_LOOKUP_KEY);
+        Uri uri = Contacts.getLookupUri(contactId, lookupKey);
+        long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
+        if (uri != null && directoryId != Directory.DEFAULT) {
+            uri = uri.buildUpon().appendQueryParameter(
+                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)).build();
+        }
+        return uri;
+    }
+
+    /**
+     * Returns the {@link Contacts#_ID} for the given {@link ListView} position.
+     */
+    public long getContactId(int position) {
+        final Cursor cursor = (Cursor) getItem(position);
+        return cursor == null ? -1 : cursor.getLong(ContactQuery.CONTACT_ID);
+    }
+
+    public boolean isEnterpriseContact(int position) {
+        final Cursor cursor = (Cursor) getItem(position);
+        if (cursor != null) {
+            final long contactId = cursor.getLong(ContactQuery.CONTACT_ID);
+            return ContactsCompat.isEnterpriseContactId(contactId);
+        }
+        return false;
+    }
+
+    /**
+     * Returns true if the specified contact is selected in the list. For a
+     * contact to be shown as selected, we need both the directory and and the
+     * lookup key to be the same. We are paying no attention to the contactId,
+     * because it is volatile, especially in the case of directories.
+     */
+    public boolean isSelectedContact(int partitionIndex, Cursor cursor) {
+        long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
+        if (getSelectedContactDirectoryId() != directoryId) {
+            return false;
+        }
+        String lookupKey = getSelectedContactLookupKey();
+        if (lookupKey != null && TextUtils.equals(lookupKey,
+                cursor.getString(ContactQuery.CONTACT_LOOKUP_KEY))) {
+            return true;
+        }
+
+        return directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE
+                && getSelectedContactId() == cursor.getLong(ContactQuery.CONTACT_ID);
+    }
+
+    @Override
+    protected ContactListItemView newView(
+            Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+        ContactListItemView view = super.newView(context, partition, cursor, position, parent);
+        view.setUnknownNameText(mUnknownNameText);
+        view.setQuickContactEnabled(isQuickContactEnabled());
+        view.setAdjustSelectionBoundsEnabled(isAdjustSelectionBoundsEnabled());
+        view.setActivatedStateSupported(isSelectionVisible());
+        if (mPhotoPosition != null) {
+            view.setPhotoPosition(mPhotoPosition);
+        }
+        return view;
+    }
+
+    protected void bindSectionHeaderAndDivider(ContactListItemView view, int position,
+            Cursor cursor) {
+        view.setIsSectionHeaderEnabled(isSectionHeaderDisplayEnabled());
+        if (isSectionHeaderDisplayEnabled()) {
+            Placement placement = getItemPlacementInSection(position);
+            view.setSectionHeader(placement.sectionHeader);
+        } else {
+            view.setSectionHeader(null);
+        }
+    }
+
+    protected void bindPhoto(final ContactListItemView view, int partitionIndex, Cursor cursor) {
+        if (!isPhotoSupported(partitionIndex)) {
+            view.removePhotoView();
+            return;
+        }
+
+        // Set the photo, if available
+        long photoId = 0;
+        if (!cursor.isNull(ContactQuery.CONTACT_PHOTO_ID)) {
+            photoId = cursor.getLong(ContactQuery.CONTACT_PHOTO_ID);
+        }
+
+        if (photoId != 0) {
+            getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false,
+                    getCircularPhotos(), null);
+        } else {
+            final String photoUriString = cursor.getString(ContactQuery.CONTACT_PHOTO_URI);
+            final Uri photoUri = photoUriString == null ? null : Uri.parse(photoUriString);
+            DefaultImageRequest request = null;
+            if (photoUri == null) {
+                request = getDefaultImageRequestFromCursor(cursor,
+                        ContactQuery.CONTACT_DISPLAY_NAME,
+                        ContactQuery.CONTACT_LOOKUP_KEY);
+            }
+            getPhotoLoader().loadDirectoryPhoto(view.getPhotoView(), photoUri, false,
+                    getCircularPhotos(), request);
+        }
+    }
+
+    protected void bindNameAndViewId(final ContactListItemView view, Cursor cursor) {
+        view.showDisplayName(
+                cursor, ContactQuery.CONTACT_DISPLAY_NAME, getContactNameDisplayOrder());
+        // Note: we don't show phonetic any more (See issue 5265330)
+
+        bindViewId(view, cursor, ContactQuery.CONTACT_ID);
+    }
+
+    protected void bindPresenceAndStatusMessage(final ContactListItemView view, Cursor cursor) {
+        view.showPresenceAndStatusMessage(cursor, ContactQuery.CONTACT_PRESENCE_STATUS,
+                ContactQuery.CONTACT_CONTACT_STATUS);
+    }
+
+    protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
+        view.showSnippet(cursor, ContactQuery.CONTACT_SNIPPET);
+    }
+
+    public int getSelectedContactPosition() {
+        if (mSelectedContactLookupKey == null && mSelectedContactId == 0) {
+            return -1;
+        }
+
+        Cursor cursor = null;
+        int partitionIndex = -1;
+        int partitionCount = getPartitionCount();
+        for (int i = 0; i < partitionCount; i++) {
+            DirectoryPartition partition = (DirectoryPartition) getPartition(i);
+            if (partition.getDirectoryId() == mSelectedContactDirectoryId) {
+                partitionIndex = i;
+                break;
+            }
+        }
+        if (partitionIndex == -1) {
+            return -1;
+        }
+
+        cursor = getCursor(partitionIndex);
+        if (cursor == null) {
+            return -1;
+        }
+
+        cursor.moveToPosition(-1);      // Reset cursor
+        int offset = -1;
+        while (cursor.moveToNext()) {
+            if (mSelectedContactLookupKey != null) {
+                String lookupKey = cursor.getString(ContactQuery.CONTACT_LOOKUP_KEY);
+                if (mSelectedContactLookupKey.equals(lookupKey)) {
+                    offset = cursor.getPosition();
+                    break;
+                }
+            }
+            if (mSelectedContactId != 0 && (mSelectedContactDirectoryId == Directory.DEFAULT
+                    || mSelectedContactDirectoryId == Directory.LOCAL_INVISIBLE)) {
+                long contactId = cursor.getLong(ContactQuery.CONTACT_ID);
+                if (contactId == mSelectedContactId) {
+                    offset = cursor.getPosition();
+                    break;
+                }
+            }
+        }
+        if (offset == -1) {
+            return -1;
+        }
+
+        int position = getPositionForPartition(partitionIndex) + offset;
+        if (hasHeader(partitionIndex)) {
+            position++;
+        }
+        return position;
+    }
+
+    public boolean hasValidSelection() {
+        return getSelectedContactPosition() != -1;
+    }
+
+    public Uri getFirstContactUri() {
+        int partitionCount = getPartitionCount();
+        for (int i = 0; i < partitionCount; i++) {
+            DirectoryPartition partition = (DirectoryPartition) getPartition(i);
+            if (partition.isLoading()) {
+                continue;
+            }
+
+            Cursor cursor = getCursor(i);
+            if (cursor == null) {
+                continue;
+            }
+
+            if (!cursor.moveToFirst()) {
+                continue;
+            }
+
+            return getContactUri(i, cursor);
+        }
+
+        return null;
+    }
+
+    @Override
+    public void changeCursor(int partitionIndex, Cursor cursor) {
+        super.changeCursor(partitionIndex, cursor);
+
+        if (cursor == null || !cursor.moveToFirst()) {
+            return;
+        }
+
+        if (shouldIncludeFavorites()) {
+            if (cursor.getInt(ContactQuery.CONTACT_STARRED) == 1) {
+                final Set<Integer> favorites = new HashSet<>();
+                favorites.add(cursor.getInt(ContactQuery.CONTACT_ID));
+                while (cursor != null && cursor.moveToNext()) {
+                    if (cursor.getInt(ContactQuery.CONTACT_STARRED) != 1
+                            || favorites.contains(cursor.getInt(ContactQuery.CONTACT_ID))) {
+                        break;
+                    }
+                    favorites.add(cursor.getInt(ContactQuery.CONTACT_ID));
+                }
+                setFavoritesSectionHeader(favorites.size());
+            }
+        }
+    }
+
+    /**
+     * @return Projection useful for children.
+     */
+    protected final String[] getProjection(boolean forSearch) {
+        final int sortOrder = getContactNameDisplayOrder();
+        if (forSearch) {
+            if (sortOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+                return ContactQuery.FILTER_PROJECTION_PRIMARY;
+            } else {
+                return ContactQuery.FILTER_PROJECTION_ALTERNATIVE;
+            }
+        } else {
+            if (sortOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+                return ContactQuery.CONTACT_PROJECTION_PRIMARY;
+            } else {
+                return ContactQuery.CONTACT_PROJECTION_ALTERNATIVE;
+            }
+        }
+    }
+
+    /**
+     * @return Projection from Data that is useful for children.
+     */
+    protected final String[] getDataProjectionForContacts(boolean forSearch) {
+        final int sortOrder = getContactNameDisplayOrder();
+        if (forSearch) {
+            if (sortOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+                return replaceFirstString(ContactQuery.FILTER_PROJECTION_PRIMARY);
+            } else {
+                return replaceFirstString(ContactQuery.FILTER_PROJECTION_ALTERNATIVE);
+            }
+        } else {
+            if (sortOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+                return replaceFirstString(ContactQuery.CONTACT_PROJECTION_PRIMARY);
+            } else {
+                return replaceFirstString(ContactQuery.CONTACT_PROJECTION_ALTERNATIVE);
+            }
+        }
+    }
+
+    /**
+     * @param sourceProjection
+     * @return Replace the first String of sourceProjection with Data.CONTACT_ID.
+     */
+    private String[] replaceFirstString(String[] sourceProjection) {
+        String[] result = sourceProjection.clone();
+        result[0] = Data.CONTACT_ID;
+        return result;
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactListFilter.java b/src/com/android/contacts/common/list/ContactListFilter.java
new file mode 100644
index 0000000..6d60a82
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactListFilter.java
@@ -0,0 +1,367 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.SharedPreferences;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.ContactsContract.RawContacts;
+import android.text.TextUtils;
+
+import com.android.contacts.common.logging.ListEvent;
+
+/**
+ * Contact list filter parameters.
+ */
+public final class ContactListFilter implements Comparable<ContactListFilter>, Parcelable {
+
+    public static final int FILTER_TYPE_DEFAULT = -1;
+    public static final int FILTER_TYPE_ALL_ACCOUNTS = -2;
+    public static final int FILTER_TYPE_CUSTOM = -3;
+    public static final int FILTER_TYPE_STARRED = -4;
+    public static final int FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY = -5;
+    public static final int FILTER_TYPE_SINGLE_CONTACT = -6;
+    public static final int FILTER_TYPE_GROUP_MEMBERS = -7;
+    public static final int FILTER_TYPE_DEVICE_CONTACTS = -8;
+
+    public static final int FILTER_TYPE_ACCOUNT = 0;
+
+    /**
+     * Obsolete filter which had been used in Honeycomb. This may be stored in
+     * {@link SharedPreferences}, but should be replaced with ALL filter when it is found.
+     *
+     * TODO: "group" filter and relevant variables are all obsolete. Remove them.
+     */
+    private static final int FILTER_TYPE_GROUP = 1;
+
+    private static final String KEY_FILTER_TYPE = "filter.type";
+    private static final String KEY_ACCOUNT_NAME = "filter.accountName";
+    private static final String KEY_ACCOUNT_TYPE = "filter.accountType";
+    private static final String KEY_DATA_SET = "filter.dataSet";
+
+    public final int filterType;
+    public final String accountType;
+    public final String accountName;
+    public final String dataSet;
+    public final Drawable icon;
+    private String mId;
+
+    public ContactListFilter(int filterType, String accountType, String accountName, String dataSet,
+            Drawable icon) {
+        this.filterType = filterType;
+        this.accountType = accountType;
+        this.accountName = accountName;
+        this.dataSet = dataSet;
+        this.icon = icon;
+    }
+
+    public static ContactListFilter createFilterWithType(int filterType) {
+        return new ContactListFilter(filterType, null, null, null, null);
+    }
+
+    public static ContactListFilter createAccountFilter(String accountType, String accountName,
+            String dataSet, Drawable icon) {
+        return new ContactListFilter(ContactListFilter.FILTER_TYPE_ACCOUNT, accountType,
+                accountName, dataSet, icon);
+    }
+
+    public static ContactListFilter createGroupMembersFilter(String accountType, String accountName,
+            String dataSet) {
+        return new ContactListFilter(ContactListFilter.FILTER_TYPE_GROUP_MEMBERS, accountType,
+                accountName, dataSet, /* icon */ null);
+    }
+
+    public static ContactListFilter createDeviceContactsFilter(Drawable icon) {
+        return new ContactListFilter(ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS,
+                /* accountType= */ null, /* accountName= */ null, /* dataSet= */ null, icon);
+    }
+
+    /**
+     * Whether the given {@link ContactListFilter} has a filter type that should be displayed as
+     * the default contacts list view.
+     */
+    public boolean isContactsFilterType() {
+        return filterType == ContactListFilter.FILTER_TYPE_DEFAULT
+                || filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS
+                || filterType == ContactListFilter.FILTER_TYPE_CUSTOM;
+    }
+
+    /** Returns the {@link ListEvent.ListType} for the type of this filter. */
+    public int toListType() {
+        switch (filterType) {
+            case FILTER_TYPE_DEFAULT:
+                // Fall through
+            case FILTER_TYPE_ALL_ACCOUNTS:
+                return ListEvent.ListType.ALL_CONTACTS;
+            case FILTER_TYPE_CUSTOM:
+                return ListEvent.ListType.CUSTOM;
+            case FILTER_TYPE_STARRED:
+                return ListEvent.ListType.STARRED;
+            case FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
+                return ListEvent.ListType.PHONE_NUMBERS;
+            case FILTER_TYPE_SINGLE_CONTACT:
+                return ListEvent.ListType.SINGLE_CONTACT;
+            case FILTER_TYPE_ACCOUNT:
+                return ListEvent.ListType.ACCOUNT;
+            case FILTER_TYPE_GROUP_MEMBERS:
+                return ListEvent.ListType.GROUP;
+            case FILTER_TYPE_DEVICE_CONTACTS:
+                return ListEvent.ListType.DEVICE;
+        }
+        return ListEvent.ListType.UNKNOWN_LIST;
+    }
+
+
+    /**
+     * Returns true if this filter is based on data and may become invalid over time.
+     */
+    public boolean isValidationRequired() {
+        return filterType == FILTER_TYPE_ACCOUNT;
+    }
+
+    @Override
+    public String toString() {
+        switch (filterType) {
+            case FILTER_TYPE_DEFAULT:
+                return "default";
+            case FILTER_TYPE_ALL_ACCOUNTS:
+                return "all_accounts";
+            case FILTER_TYPE_CUSTOM:
+                return "custom";
+            case FILTER_TYPE_STARRED:
+                return "starred";
+            case FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
+                return "with_phones";
+            case FILTER_TYPE_SINGLE_CONTACT:
+                return "single";
+            case FILTER_TYPE_ACCOUNT:
+                return "account: " + accountType + (dataSet != null ? "/" + dataSet : "")
+                        + " " + accountName;
+            case FILTER_TYPE_GROUP_MEMBERS:
+                return "group_members";
+            case FILTER_TYPE_DEVICE_CONTACTS:
+                return "device_contacts";
+        }
+        return super.toString();
+    }
+
+    @Override
+    public int compareTo(ContactListFilter another) {
+        int res = accountName.compareTo(another.accountName);
+        if (res != 0) {
+            return res;
+        }
+
+        res = accountType.compareTo(another.accountType);
+        if (res != 0) {
+            return res;
+        }
+
+        return filterType - another.filterType;
+    }
+
+    @Override
+    public int hashCode() {
+        int code = filterType;
+        if (accountType != null) {
+            code = code * 31 + accountType.hashCode();
+            code = code * 31 + accountName.hashCode();
+        }
+        if (dataSet != null) {
+            code = code * 31 + dataSet.hashCode();
+        }
+        return code;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (this == other) {
+            return true;
+        }
+
+        if (!(other instanceof ContactListFilter)) {
+            return false;
+        }
+
+        ContactListFilter otherFilter = (ContactListFilter) other;
+        if (filterType != otherFilter.filterType
+                || !TextUtils.equals(accountName, otherFilter.accountName)
+                || !TextUtils.equals(accountType, otherFilter.accountType)
+                || !TextUtils.equals(dataSet, otherFilter.dataSet)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Store the given {@link ContactListFilter} to preferences. If the requested filter is
+     * of type {@link #FILTER_TYPE_SINGLE_CONTACT} then do not save it to preferences because
+     * it is a temporary state.
+     */
+    public static void storeToPreferences(SharedPreferences prefs, ContactListFilter filter) {
+        if (filter != null && filter.filterType == FILTER_TYPE_SINGLE_CONTACT) {
+            return;
+        }
+        prefs.edit()
+            .putInt(KEY_FILTER_TYPE, filter == null ? FILTER_TYPE_DEFAULT : filter.filterType)
+            .putString(KEY_ACCOUNT_NAME, filter == null ? null : filter.accountName)
+            .putString(KEY_ACCOUNT_TYPE, filter == null ? null : filter.accountType)
+            .putString(KEY_DATA_SET, filter == null ? null : filter.dataSet)
+            .apply();
+    }
+
+    /**
+     * Try to obtain ContactListFilter object saved in SharedPreference.
+     * If there's no info there, return ALL filter instead.
+     */
+    public static ContactListFilter restoreDefaultPreferences(SharedPreferences prefs) {
+        ContactListFilter filter = restoreFromPreferences(prefs);
+        if (filter == null) {
+            filter = ContactListFilter.createFilterWithType(FILTER_TYPE_ALL_ACCOUNTS);
+        }
+        // "Group" filter is obsolete and thus is not exposed anymore. The "single contact mode"
+        // should also not be stored in preferences anymore since it is a temporary state.
+        if (filter.filterType == FILTER_TYPE_GROUP ||
+                filter.filterType == FILTER_TYPE_SINGLE_CONTACT) {
+            filter = ContactListFilter.createFilterWithType(FILTER_TYPE_ALL_ACCOUNTS);
+        }
+        return filter;
+    }
+
+    private static ContactListFilter restoreFromPreferences(SharedPreferences prefs) {
+        int filterType = prefs.getInt(KEY_FILTER_TYPE, FILTER_TYPE_DEFAULT);
+        if (filterType == FILTER_TYPE_DEFAULT) {
+            return null;
+        }
+
+        String accountName = prefs.getString(KEY_ACCOUNT_NAME, null);
+        String accountType = prefs.getString(KEY_ACCOUNT_TYPE, null);
+        String dataSet = prefs.getString(KEY_DATA_SET, null);
+        return new ContactListFilter(filterType, accountType, accountName, dataSet, null);
+    }
+
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(filterType);
+        dest.writeString(accountName);
+        dest.writeString(accountType);
+        dest.writeString(dataSet);
+    }
+
+    public static final Parcelable.Creator<ContactListFilter> CREATOR =
+            new Parcelable.Creator<ContactListFilter>() {
+        @Override
+        public ContactListFilter createFromParcel(Parcel source) {
+            int filterType = source.readInt();
+            String accountName = source.readString();
+            String accountType = source.readString();
+            String dataSet = source.readString();
+            return new ContactListFilter(filterType, accountType, accountName, dataSet, null);
+        }
+
+        @Override
+        public ContactListFilter[] newArray(int size) {
+            return new ContactListFilter[size];
+        }
+    };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    /**
+     * Returns a string that can be used as a stable persistent identifier for this filter.
+     */
+    public String getId() {
+        if (mId == null) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(filterType);
+            if (accountType != null) {
+                sb.append('-').append(accountType);
+            }
+            if (dataSet != null) {
+                sb.append('/').append(dataSet);
+            }
+            if (accountName != null) {
+                sb.append('-').append(accountName.replace('-', '_'));
+            }
+            mId = sb.toString();
+        }
+        return mId;
+    }
+
+    /**
+     * Adds the account query parameters to the given {@code uriBuilder}.
+     *
+     * @throws IllegalStateException if the filter type is not {@link #FILTER_TYPE_ACCOUNT}.
+     */
+    public Uri.Builder addAccountQueryParameterToUrl(Uri.Builder uriBuilder) {
+        if (filterType != FILTER_TYPE_ACCOUNT
+                && filterType != FILTER_TYPE_GROUP_MEMBERS) {
+            throw new IllegalStateException(
+                    "filterType must be FILTER_TYPE_ACCOUNT or FILER_TYPE_GROUP_MEMBERS");
+        }
+        uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
+        uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
+        if (!TextUtils.isEmpty(dataSet)) {
+            uriBuilder.appendQueryParameter(RawContacts.DATA_SET, dataSet);
+        }
+        return uriBuilder;
+    }
+
+    public String toDebugString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("[filter type: " + filterType + " (" + filterTypeToString(filterType) + ")");
+        if (filterType == FILTER_TYPE_ACCOUNT) {
+            builder.append(", accountType: " + accountType)
+                    .append(", accountName: " + accountName)
+                    .append(", dataSet: " + dataSet);
+        }
+        builder.append(", icon: " + icon + "]");
+        return builder.toString();
+    }
+
+    public static final String filterTypeToString(int filterType) {
+        switch (filterType) {
+            case FILTER_TYPE_DEFAULT:
+                return "FILTER_TYPE_DEFAULT";
+            case FILTER_TYPE_ALL_ACCOUNTS:
+                return "FILTER_TYPE_ALL_ACCOUNTS";
+            case FILTER_TYPE_CUSTOM:
+                return "FILTER_TYPE_CUSTOM";
+            case FILTER_TYPE_STARRED:
+                return "FILTER_TYPE_STARRED";
+            case FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
+                return "FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY";
+            case FILTER_TYPE_SINGLE_CONTACT:
+                return "FILTER_TYPE_SINGLE_CONTACT";
+            case FILTER_TYPE_ACCOUNT:
+                return "FILTER_TYPE_ACCOUNT";
+            case FILTER_TYPE_GROUP_MEMBERS:
+                return "FILTER_TYPE_GROUP_MEMBERS";
+            case FILTER_TYPE_DEVICE_CONTACTS:
+                return "FILTER_TYPE_DEVICE_CONTACTS";
+            default:
+                return "(unknown)";
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactListFilterController.java b/src/com/android/contacts/common/list/ContactListFilterController.java
new file mode 100644
index 0000000..48d36ed
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactListFilterController.java
@@ -0,0 +1,214 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+
+import com.android.contacts.common.logging.ListEvent;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Manages {@link ContactListFilter}. All methods must be called from UI thread.
+ */
+public abstract class ContactListFilterController {
+
+    // singleton to cache the filter controller
+    private static ContactListFilterControllerImpl sFilterController = null;
+
+    public interface ContactListFilterListener {
+        void onContactListFilterChanged();
+    }
+
+    public static ContactListFilterController getInstance(Context context) {
+        // We may need to synchronize this in the future if background task will call this.
+        if (sFilterController == null) {
+            sFilterController = new ContactListFilterControllerImpl(context);
+        }
+        return sFilterController;
+    }
+
+    public abstract void addListener(ContactListFilterListener listener);
+
+    public abstract void removeListener(ContactListFilterListener listener);
+
+    /**
+     * Return the currently-active filter.
+     */
+    public abstract ContactListFilter getFilter();
+
+    public abstract int getFilterListType();
+
+    /** Whether the persisted filter is a custom filter. */
+    public abstract boolean isCustomFilterPersisted();
+
+    /** Returns the persisted filter. */
+    public abstract ContactListFilter getPersistedFilter();
+
+    /**
+     * @param filter the filter
+     * @param persistent True when the given filter should be saved soon. False when the filter
+     * should not be saved. The latter case may happen when some Intent requires a certain type of
+     * UI (e.g. single contact) temporarily.
+     */
+    public abstract void setContactListFilter(ContactListFilter filter, boolean persistent);
+
+    public abstract void selectCustomFilter();
+
+    /**
+     * Checks if the current filter is valid and reset the filter if not. It may happen when
+     * an account is removed while the filter points to the account with
+     * {@link ContactListFilter#FILTER_TYPE_ACCOUNT} type, for example. It may also happen if
+     * the current filter is {@link ContactListFilter#FILTER_TYPE_SINGLE_CONTACT}, in
+     * which case, we should switch to the last saved filter in {@link SharedPreferences}.
+     */
+    public abstract void checkFilterValidity(boolean notifyListeners);
+}
+
+/**
+ * Stores the {@link ContactListFilter} selected by the user and saves it to
+ * {@link SharedPreferences} if necessary.
+ */
+class ContactListFilterControllerImpl extends ContactListFilterController {
+    private final Context mContext;
+    private final List<ContactListFilterListener> mListeners =
+            new ArrayList<ContactListFilterListener>();
+    private ContactListFilter mFilter;
+
+    public ContactListFilterControllerImpl(Context context) {
+        mContext = context.getApplicationContext();
+        mFilter = ContactListFilter.restoreDefaultPreferences(getSharedPreferences());
+        checkFilterValidity(true /* notify listeners */);
+    }
+
+    @Override
+    public void addListener(ContactListFilterListener listener) {
+        mListeners.add(listener);
+    }
+
+    @Override
+    public void removeListener(ContactListFilterListener listener) {
+        mListeners.remove(listener);
+    }
+
+    @Override
+    public ContactListFilter getFilter() {
+        return mFilter;
+    }
+
+    @Override
+    public int getFilterListType() {
+        return mFilter == null ? ListEvent.ListType.UNKNOWN_LIST : mFilter.toListType();
+    }
+
+    @Override
+    public boolean isCustomFilterPersisted() {
+        final ContactListFilter filter = getPersistedFilter();
+        return filter != null && filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM;
+    }
+
+    @Override
+    public ContactListFilter getPersistedFilter() {
+        return ContactListFilter.restoreDefaultPreferences(getSharedPreferences());
+    }
+
+    private SharedPreferences getSharedPreferences() {
+        return PreferenceManager.getDefaultSharedPreferences(mContext);
+    }
+
+    @Override
+    public void setContactListFilter(ContactListFilter filter, boolean persistent) {
+        setContactListFilter(filter, persistent, /* notifyListeners */ true);
+    }
+
+    private void setContactListFilter(ContactListFilter filter, boolean persistent,
+            boolean notifyListeners) {
+        if (!filter.equals(mFilter)) {
+            mFilter = filter;
+            if (persistent) {
+                ContactListFilter.storeToPreferences(getSharedPreferences(), mFilter);
+            }
+            if (notifyListeners && !mListeners.isEmpty()) {
+                notifyContactListFilterChanged();
+            }
+        }
+    }
+
+    @Override
+    public void selectCustomFilter() {
+        setContactListFilter(ContactListFilter.createFilterWithType(
+                ContactListFilter.FILTER_TYPE_CUSTOM), /* persistent */ true);
+    }
+
+    private void notifyContactListFilterChanged() {
+        for (ContactListFilterListener listener : mListeners) {
+            listener.onContactListFilterChanged();
+        }
+    }
+
+    @Override
+    public void checkFilterValidity(boolean notifyListeners) {
+        if (mFilter == null) {
+            return;
+        }
+
+        switch (mFilter.filterType) {
+            case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT:
+                setContactListFilter(
+                        ContactListFilter.restoreDefaultPreferences(getSharedPreferences()),
+                        false, notifyListeners);
+                break;
+            case ContactListFilter.FILTER_TYPE_ACCOUNT:
+                if (!filterAccountExists()) {
+                    // The current account filter points to invalid account. Use "all" filter
+                    // instead.
+                    setContactListFilter(ContactListFilter.createFilterWithType(
+                            ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS), true, notifyListeners);
+                }
+                break;
+            case ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS:
+                if (!localAccountExists()) {
+                    setContactListFilter(ContactListFilter.createFilterWithType(
+                            ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS), true, notifyListeners);
+                }
+                break;
+        }
+    }
+
+    /**
+     * @return true if the Account for the current filter exists.
+     */
+    private boolean filterAccountExists() {
+        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(mContext);
+        final AccountWithDataSet filterAccount = new AccountWithDataSet(
+                mFilter.accountName, mFilter.accountType, mFilter.dataSet);
+        return accountTypeManager.contains(filterAccount, /* contactWritableOnly */ false);
+    }
+
+    /**
+     * @return true if the local account still exists.
+     */
+    private boolean localAccountExists() {
+        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(mContext);
+        final AccountWithDataSet localAccount = AccountWithDataSet.getLocalAccount();
+        return accountTypeManager.contains(localAccount, /* contactWritableOnly */ false);
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactListFilterView.java b/src/com/android/contacts/common/list/ContactListFilterView.java
new file mode 100644
index 0000000..76e43aa
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactListFilterView.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.list;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RadioButton;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+
+/**
+ * Contact list filter parameters.
+ */
+public class ContactListFilterView extends LinearLayout {
+
+    private static final String TAG = ContactListFilterView.class.getSimpleName();
+
+    private ImageView mIcon;
+    private TextView mAccountType;
+    private TextView mAccountUserName;
+    private RadioButton mRadioButton;
+    private ContactListFilter mFilter;
+    private boolean mSingleAccount;
+
+    public ContactListFilterView(Context context) {
+        super(context);
+    }
+
+    public ContactListFilterView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public void setContactListFilter(ContactListFilter filter) {
+        mFilter = filter;
+    }
+
+    public ContactListFilter getContactListFilter() {
+        return mFilter;
+    }
+
+    public void setSingleAccount(boolean flag) {
+        this.mSingleAccount = flag;
+    }
+
+    @Override
+    public void setActivated(boolean activated) {
+        super.setActivated(activated);
+        if (mRadioButton != null) {
+            mRadioButton.setChecked(activated);
+        } else {
+            // We're guarding against null-pointer exceptions,
+            // but otherwise this code is not expected to work
+            // properly if the button hasn't been initialized.
+            Log.wtf(TAG, "radio-button cannot be activated because it is null");
+        }
+        setContentDescription(generateContentDescription());
+    }
+
+    public boolean isChecked() {
+        return mRadioButton.isChecked();
+    }
+
+    public void bindView(AccountTypeManager accountTypes) {
+        if (mAccountType == null) {
+            mIcon = (ImageView) findViewById(R.id.icon);
+            mAccountType = (TextView) findViewById(R.id.accountType);
+            mAccountUserName = (TextView) findViewById(R.id.accountUserName);
+            mRadioButton = (RadioButton) findViewById(R.id.radioButton);
+            mRadioButton.setChecked(isActivated());
+        }
+
+        if (mFilter == null) {
+            mAccountType.setText(R.string.contactsList);
+            return;
+        }
+
+        mAccountUserName.setVisibility(View.GONE);
+        switch (mFilter.filterType) {
+            case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
+                bindView(0, R.string.list_filter_all_accounts);
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_STARRED: {
+                bindView(R.drawable.ic_menu_star_holo_light, R.string.list_filter_all_starred);
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_CUSTOM: {
+                bindView(0, R.string.list_filter_customize);
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
+                bindView(0, R.string.list_filter_phones);
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {
+                bindView(0, R.string.list_filter_single);
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_ACCOUNT: {
+                mAccountUserName.setVisibility(View.VISIBLE);
+                mIcon.setVisibility(View.VISIBLE);
+                if (mFilter.icon != null) {
+                    mIcon.setImageDrawable(mFilter.icon);
+                } else {
+                    mIcon.setImageResource(R.drawable.unknown_source);
+                }
+                final AccountType accountType =
+                        accountTypes.getAccountType(mFilter.accountType, mFilter.dataSet);
+                mAccountUserName.setText(mFilter.accountName);
+                mAccountType.setText(accountType.getDisplayLabel(getContext()));
+                break;
+            }
+        }
+        setContentDescription(generateContentDescription());
+    }
+
+    private void bindView(int iconResource, int textResource) {
+        if (iconResource != 0) {
+            mIcon.setVisibility(View.VISIBLE);
+            mIcon.setImageResource(iconResource);
+        } else {
+            mIcon.setVisibility(View.GONE);
+        }
+
+        mAccountType.setText(textResource);
+    }
+
+    String generateContentDescription() {
+        final StringBuilder sb = new StringBuilder();
+        if (!TextUtils.isEmpty(mAccountType.getText())) {
+            sb.append(mAccountType.getText());
+        }
+        if (!TextUtils.isEmpty(mAccountUserName.getText())) {
+            if (sb.length() > 0) {
+                sb.append(" ");
+            }
+            sb.append(mAccountUserName.getText());
+        }
+        return getContext().getString(isActivated() ? R.string.account_filter_view_checked :
+                R.string.account_filter_view_not_checked, sb.toString());
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactListItemView.java b/src/com/android/contacts/common/list/ContactListItemView.java
new file mode 100644
index 0000000..bb28858
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactListItemView.java
@@ -0,0 +1,1890 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.database.CharArrayBuffer;
+import android.database.Cursor;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.SearchSnippets;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v7.widget.AppCompatCheckBox;
+import android.support.v7.widget.AppCompatImageButton;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.text.TextUtils.TruncateAt;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView.SelectionBoundsAdjuster;
+import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import com.android.contacts.common.ContactPresenceIconUtil;
+import com.android.contacts.common.ContactStatusUtil;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.format.TextHighlighter;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.contacts.common.util.SearchUtil;
+import com.android.contacts.common.util.ViewUtil;
+
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A custom view for an item in the contact list.
+ * The view contains the contact's photo, a set of text views (for name, status, etc...) and
+ * icons for presence and call.
+ * The view uses no XML file for layout and all the measurements and layouts are done
+ * in the onMeasure and onLayout methods.
+ *
+ * The layout puts the contact's photo on the right side of the view, the call icon (if present)
+ * to the left of the photo, the text lines are aligned to the left and the presence icon (if
+ * present) is set to the left of the status line.
+ *
+ * The layout also supports a header (used as a header of a group of contacts) that is above the
+ * contact's data and a divider between contact view.
+ */
+
+public class ContactListItemView extends ViewGroup
+        implements SelectionBoundsAdjuster {
+
+    private static final String TAG = "ContactListItemView";
+
+    // Style values for layout and appearance
+    // The initialized values are defaults if none is provided through xml.
+    private int mPreferredHeight = 0;
+    private int mGapBetweenImageAndText = 0;
+    private int mGapBetweenIndexerAndImage = 0;
+    private int mGapBetweenLabelAndData = 0;
+    private int mPresenceIconMargin = 4;
+    private int mPresenceIconSize = 16;
+    private int mTextIndent = 0;
+    private int mTextOffsetTop;
+    private int mAvatarOffsetTop;
+    private int mNameTextViewTextSize;
+    private int mHeaderWidth;
+    private Drawable mActivatedBackgroundDrawable;
+    private int mVideoCallIconSize = 32;
+    private int mVideoCallIconMargin = 16;
+    private int mGapFromScrollBar = 20;
+
+    // Set in onLayout. Represent left and right position of the View on the screen.
+    private int mLeftOffset;
+    private int mRightOffset;
+
+    /**
+     * Used with {@link #mLabelView}, specifying the width ratio between label and data.
+     */
+    private int mLabelViewWidthWeight = 3;
+    /**
+     * Used with {@link #mDataView}, specifying the width ratio between label and data.
+     */
+    private int mDataViewWidthWeight = 5;
+
+    protected static class HighlightSequence {
+        private final int start;
+        private final int end;
+
+        HighlightSequence(int start, int end) {
+            this.start = start;
+            this.end = end;
+        }
+    }
+
+    private ArrayList<HighlightSequence> mNameHighlightSequence;
+    private ArrayList<HighlightSequence> mNumberHighlightSequence;
+
+    // Highlighting prefix for names.
+    private String mHighlightedPrefix;
+
+    /**
+     * Used to notify listeners when a video call icon is clicked.
+     */
+    private PhoneNumberListAdapter.Listener mPhoneNumberListAdapterListener;
+
+    /**
+     * Indicates whether to show the "video call" icon, used to initiate a video call.
+     */
+    private boolean mShowVideoCallIcon = false;
+
+    /**
+     * Indicates whether the view should leave room for the "video call" icon.
+     */
+    private boolean mSupportVideoCallIcon = false;
+
+    /**
+     * Where to put contact photo. This affects the other Views' layout or look-and-feel.
+     *
+     * TODO: replace enum with int constants
+     */
+    public enum PhotoPosition {
+        LEFT,
+        RIGHT
+    }
+
+    static public final PhotoPosition getDefaultPhotoPosition(boolean opposite) {
+        final Locale locale = Locale.getDefault();
+        final int layoutDirection = TextUtils.getLayoutDirectionFromLocale(locale);
+        switch (layoutDirection) {
+            case View.LAYOUT_DIRECTION_RTL:
+                return (opposite ? PhotoPosition.LEFT : PhotoPosition.RIGHT);
+            case View.LAYOUT_DIRECTION_LTR:
+            default:
+                return (opposite ? PhotoPosition.RIGHT : PhotoPosition.LEFT);
+        }
+    }
+
+    private PhotoPosition mPhotoPosition = getDefaultPhotoPosition(false /* normal/non opposite */);
+
+    // Header layout data
+    private View mHeaderView;
+    private boolean mIsSectionHeaderEnabled;
+
+    // The views inside the contact view
+    private boolean mQuickContactEnabled = true;
+    private QuickContactBadge mQuickContact;
+    private ImageView mPhotoView;
+    private TextView mNameTextView;
+    private TextView mPhoneticNameTextView;
+    private TextView mLabelView;
+    private TextView mDataView;
+    private TextView mSnippetView;
+    private TextView mStatusView;
+    private ImageView mPresenceIcon;
+    private AppCompatCheckBox mCheckBox;
+    private AppCompatImageButton mDeleteImageButton;
+    private ImageView mVideoCallIcon;
+    private ImageView mWorkProfileIcon;
+
+    private ColorStateList mSecondaryTextColor;
+
+    private int mDefaultPhotoViewSize = 0;
+    /**
+     * Can be effective even when {@link #mPhotoView} is null, as we want to have horizontal padding
+     * to align other data in this View.
+     */
+    private int mPhotoViewWidth;
+    /**
+     * Can be effective even when {@link #mPhotoView} is null, as we want to have vertical padding.
+     */
+    private int mPhotoViewHeight;
+
+    /**
+     * Only effective when {@link #mPhotoView} is null.
+     * When true all the Views on the right side of the photo should have horizontal padding on
+     * those left assuming there is a photo.
+     */
+    private boolean mKeepHorizontalPaddingForPhotoView;
+    /**
+     * Only effective when {@link #mPhotoView} is null.
+     */
+    private boolean mKeepVerticalPaddingForPhotoView;
+
+    /**
+     * True when {@link #mPhotoViewWidth} and {@link #mPhotoViewHeight} are ready for being used.
+     * False indicates those values should be updated before being used in position calculation.
+     */
+    private boolean mPhotoViewWidthAndHeightAreReady = false;
+
+    private int mNameTextViewHeight;
+    private int mNameTextViewTextColor = Color.BLACK;
+    private int mPhoneticNameTextViewHeight;
+    private int mLabelViewHeight;
+    private int mDataViewHeight;
+    private int mSnippetTextViewHeight;
+    private int mStatusTextViewHeight;
+    private int mCheckBoxHeight;
+    private int mCheckBoxWidth;
+    private int mDeleteImageButtonHeight;
+    private int mDeleteImageButtonWidth;
+
+    // Holds Math.max(mLabelTextViewHeight, mDataViewHeight), assuming Label and Data share the
+    // same row.
+    private int mLabelAndDataViewMaxHeight;
+
+    // TODO: some TextView fields are using CharArrayBuffer while some are not. Determine which is
+    // more efficient for each case or in general, and simplify the whole implementation.
+    // Note: if we're sure MARQUEE will be used every time, there's no reason to use
+    // CharArrayBuffer, since MARQUEE requires Span and thus we need to copy characters inside the
+    // buffer to Spannable once, while CharArrayBuffer is for directly applying char array to
+    // TextView without any modification.
+    private final CharArrayBuffer mDataBuffer = new CharArrayBuffer(128);
+    private final CharArrayBuffer mPhoneticNameBuffer = new CharArrayBuffer(128);
+
+    private boolean mActivatedStateSupported;
+    private boolean mAdjustSelectionBoundsEnabled = true;
+
+    private Rect mBoundsWithoutHeader = new Rect();
+
+    /** A helper used to highlight a prefix in a text field. */
+    private final TextHighlighter mTextHighlighter;
+    private CharSequence mUnknownNameText;
+    private int mPosition;
+
+    public ContactListItemView(Context context) {
+        super(context);
+
+        mTextHighlighter = new TextHighlighter(Typeface.BOLD);
+        mNameHighlightSequence = new ArrayList<HighlightSequence>();
+        mNumberHighlightSequence = new ArrayList<HighlightSequence>();
+    }
+
+    public ContactListItemView(Context context, AttributeSet attrs, boolean supportVideoCallIcon) {
+        this(context, attrs);
+
+        mSupportVideoCallIcon = supportVideoCallIcon;
+    }
+
+    public ContactListItemView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        TypedArray a;
+
+        if (R.styleable.ContactListItemView != null) {
+            // Read all style values
+            a = getContext().obtainStyledAttributes(attrs, R.styleable.ContactListItemView);
+            mPreferredHeight = a.getDimensionPixelSize(
+                    R.styleable.ContactListItemView_list_item_height, mPreferredHeight);
+            mActivatedBackgroundDrawable = a.getDrawable(
+                    R.styleable.ContactListItemView_activated_background);
+
+            mGapBetweenImageAndText = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_gap_between_image_and_text,
+                    mGapBetweenImageAndText);
+            mGapBetweenIndexerAndImage = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_gap_between_indexer_and_image,
+                    mGapBetweenIndexerAndImage);
+            mGapBetweenLabelAndData = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_gap_between_label_and_data,
+                    mGapBetweenLabelAndData);
+            mPresenceIconMargin = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_presence_icon_margin,
+                    mPresenceIconMargin);
+            mPresenceIconSize = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_presence_icon_size,
+                    mPresenceIconSize);
+            mDefaultPhotoViewSize = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_photo_size, mDefaultPhotoViewSize);
+            mTextIndent = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_text_indent, mTextIndent);
+            mTextOffsetTop = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_text_offset_top, mTextOffsetTop);
+            mAvatarOffsetTop = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_avatar_offset_top, mAvatarOffsetTop);
+            mDataViewWidthWeight = a.getInteger(
+                    R.styleable.ContactListItemView_list_item_data_width_weight,
+                    mDataViewWidthWeight);
+            mLabelViewWidthWeight = a.getInteger(
+                    R.styleable.ContactListItemView_list_item_label_width_weight,
+                    mLabelViewWidthWeight);
+            mNameTextViewTextColor = a.getColor(
+                    R.styleable.ContactListItemView_list_item_name_text_color,
+                    mNameTextViewTextColor);
+            mNameTextViewTextSize = (int) a.getDimension(
+                    R.styleable.ContactListItemView_list_item_name_text_size,
+                    (int) getResources().getDimension(R.dimen.contact_browser_list_item_text_size));
+            mVideoCallIconSize = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_video_call_icon_size,
+                    mVideoCallIconSize);
+            mVideoCallIconMargin = a.getDimensionPixelOffset(
+                    R.styleable.ContactListItemView_list_item_video_call_icon_margin,
+                    mVideoCallIconMargin);
+
+
+            setPaddingRelative(
+                    a.getDimensionPixelOffset(
+                            R.styleable.ContactListItemView_list_item_padding_left, 0),
+                    a.getDimensionPixelOffset(
+                            R.styleable.ContactListItemView_list_item_padding_top, 0),
+                    a.getDimensionPixelOffset(
+                            R.styleable.ContactListItemView_list_item_padding_right, 0),
+                    a.getDimensionPixelOffset(
+                            R.styleable.ContactListItemView_list_item_padding_bottom, 0));
+
+            a.recycle();
+        }
+
+        mTextHighlighter = new TextHighlighter(Typeface.BOLD);
+
+        if (R.styleable.Theme != null) {
+            a = getContext().obtainStyledAttributes(R.styleable.Theme);
+            mSecondaryTextColor = a.getColorStateList(R.styleable.Theme_android_textColorSecondary);
+            a.recycle();
+        }
+
+        mHeaderWidth =
+                getResources().getDimensionPixelSize(R.dimen.contact_list_section_header_width);
+
+        if (mActivatedBackgroundDrawable != null) {
+            mActivatedBackgroundDrawable.setCallback(this);
+        }
+
+        mNameHighlightSequence = new ArrayList<HighlightSequence>();
+        mNumberHighlightSequence = new ArrayList<HighlightSequence>();
+
+        setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE);
+    }
+
+    public void setUnknownNameText(CharSequence unknownNameText) {
+        mUnknownNameText = unknownNameText;
+    }
+
+    public void setQuickContactEnabled(boolean flag) {
+        mQuickContactEnabled = flag;
+    }
+
+    /**
+     * Sets whether the video calling icon is shown.  For the video calling icon to be shown,
+     * {@link #mSupportVideoCallIcon} must be {@code true}.
+     *
+     * @param showVideoCallIcon {@code true} if the video calling icon is shown, {@code false}
+     *      otherwise.
+     * @param listener Listener to notify when the video calling icon is clicked.
+     * @param position The position in the adapater of the video calling icon.
+     */
+    public void setShowVideoCallIcon(boolean showVideoCallIcon,
+            PhoneNumberListAdapter.Listener listener, int position) {
+        mShowVideoCallIcon = showVideoCallIcon;
+        mPhoneNumberListAdapterListener = listener;
+        mPosition = position;
+
+        if (mShowVideoCallIcon) {
+            if (mVideoCallIcon == null) {
+                mVideoCallIcon = new ImageView(getContext());
+                addView(mVideoCallIcon);
+            }
+            mVideoCallIcon.setContentDescription(getContext().getString(
+                    R.string.description_search_video_call));
+            mVideoCallIcon.setImageResource(R.drawable.ic_search_video_call);
+            mVideoCallIcon.setScaleType(ScaleType.CENTER);
+            mVideoCallIcon.setVisibility(View.VISIBLE);
+            mVideoCallIcon.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    // Inform the adapter that the video calling icon was clicked.
+                    if (mPhoneNumberListAdapterListener != null) {
+                        mPhoneNumberListAdapterListener.onVideoCallIconClicked(mPosition);
+                    }
+                }
+            });
+        } else {
+            if (mVideoCallIcon != null) {
+                mVideoCallIcon.setVisibility(View.GONE);
+            }
+        }
+    }
+
+    /**
+     * Sets whether the view supports a video calling icon.  This is independent of whether the view
+     * is actually showing an icon.  Support for the video calling icon ensures that the layout
+     * leaves space for the video icon, should it be shown.
+     *
+     * @param supportVideoCallIcon {@code true} if the video call icon is supported, {@code false}
+     *      otherwise.
+     */
+    public void setSupportVideoCallIcon(boolean supportVideoCallIcon) {
+        mSupportVideoCallIcon = supportVideoCallIcon;
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        // We will match parent's width and wrap content vertically, but make sure
+        // height is no less than listPreferredItemHeight.
+        final int specWidth = resolveSize(0, widthMeasureSpec);
+        final int preferredHeight = mPreferredHeight;
+
+        mNameTextViewHeight = 0;
+        mPhoneticNameTextViewHeight = 0;
+        mLabelViewHeight = 0;
+        mDataViewHeight = 0;
+        mLabelAndDataViewMaxHeight = 0;
+        mSnippetTextViewHeight = 0;
+        mStatusTextViewHeight = 0;
+        mCheckBoxWidth = 0;
+        mCheckBoxHeight = 0;
+        mDeleteImageButtonWidth = 0;
+        mDeleteImageButtonHeight = 0;
+
+        ensurePhotoViewSize();
+
+        // Width each TextView is able to use.
+        int effectiveWidth;
+        // All the other Views will honor the photo, so available width for them may be shrunk.
+        if (mPhotoViewWidth > 0 || mKeepHorizontalPaddingForPhotoView) {
+            effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight()
+                    - (mPhotoViewWidth + mGapBetweenImageAndText);
+        } else {
+            effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight();
+        }
+
+        if (mIsSectionHeaderEnabled) {
+            effectiveWidth -= mHeaderWidth + mGapBetweenIndexerAndImage;
+        }
+
+        if (mSupportVideoCallIcon) {
+            effectiveWidth -= (mVideoCallIconSize + mVideoCallIconMargin);
+        }
+
+        // Go over all visible text views and measure actual width of each of them.
+        // Also calculate their heights to get the total height for this entire view.
+
+        if (isVisible(mCheckBox)) {
+            mCheckBox.measure(
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mCheckBoxWidth = mCheckBox.getMeasuredWidth();
+            mCheckBoxHeight = mCheckBox.getMeasuredHeight();
+            effectiveWidth -= mCheckBoxWidth + mGapBetweenImageAndText;
+        }
+
+        if (isVisible(mDeleteImageButton)) {
+            mDeleteImageButton.measure(
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mDeleteImageButtonWidth = mDeleteImageButton.getMeasuredWidth();
+            mDeleteImageButtonHeight = mDeleteImageButton.getMeasuredHeight();
+            effectiveWidth -= mDeleteImageButtonWidth + mGapBetweenImageAndText;
+        }
+
+        if (isVisible(mNameTextView)) {
+            // Calculate width for name text - this parallels similar measurement in onLayout.
+            int nameTextWidth = effectiveWidth;
+            if (mPhotoPosition != PhotoPosition.LEFT) {
+                nameTextWidth -= mTextIndent;
+            }
+            mNameTextView.measure(
+                    MeasureSpec.makeMeasureSpec(nameTextWidth, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mNameTextViewHeight = mNameTextView.getMeasuredHeight();
+        }
+
+        if (isVisible(mPhoneticNameTextView)) {
+            mPhoneticNameTextView.measure(
+                    MeasureSpec.makeMeasureSpec(effectiveWidth, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mPhoneticNameTextViewHeight = mPhoneticNameTextView.getMeasuredHeight();
+        }
+
+        // If both data (phone number/email address) and label (type like "MOBILE") are quite long,
+        // we should ellipsize both using appropriate ratio.
+        final int dataWidth;
+        final int labelWidth;
+        if (isVisible(mDataView)) {
+            if (isVisible(mLabelView)) {
+                final int totalWidth = effectiveWidth - mGapBetweenLabelAndData;
+                dataWidth = ((totalWidth * mDataViewWidthWeight)
+                        / (mDataViewWidthWeight + mLabelViewWidthWeight));
+                labelWidth = ((totalWidth * mLabelViewWidthWeight) /
+                        (mDataViewWidthWeight + mLabelViewWidthWeight));
+            } else {
+                dataWidth = effectiveWidth;
+                labelWidth = 0;
+            }
+        } else {
+            dataWidth = 0;
+            if (isVisible(mLabelView)) {
+                labelWidth = effectiveWidth;
+            } else {
+                labelWidth = 0;
+            }
+        }
+
+        if (isVisible(mDataView)) {
+            mDataView.measure(MeasureSpec.makeMeasureSpec(dataWidth, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mDataViewHeight = mDataView.getMeasuredHeight();
+        }
+
+        if (isVisible(mLabelView)) {
+            mLabelView.measure(MeasureSpec.makeMeasureSpec(labelWidth, MeasureSpec.AT_MOST),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mLabelViewHeight = mLabelView.getMeasuredHeight();
+        }
+        mLabelAndDataViewMaxHeight = Math.max(mLabelViewHeight, mDataViewHeight);
+
+        if (isVisible(mSnippetView)) {
+            mSnippetView.measure(
+                    MeasureSpec.makeMeasureSpec(effectiveWidth, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mSnippetTextViewHeight = mSnippetView.getMeasuredHeight();
+        }
+
+        // Status view height is the biggest of the text view and the presence icon
+        if (isVisible(mPresenceIcon)) {
+            mPresenceIcon.measure(
+                    MeasureSpec.makeMeasureSpec(mPresenceIconSize, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(mPresenceIconSize, MeasureSpec.EXACTLY));
+            mStatusTextViewHeight = mPresenceIcon.getMeasuredHeight();
+        }
+
+        if (mSupportVideoCallIcon && isVisible(mVideoCallIcon)) {
+            mVideoCallIcon.measure(
+                    MeasureSpec.makeMeasureSpec(mVideoCallIconSize, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(mVideoCallIconSize, MeasureSpec.EXACTLY));
+        }
+
+        if (isVisible(mWorkProfileIcon)) {
+            mWorkProfileIcon.measure(
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mNameTextViewHeight =
+                    Math.max(mNameTextViewHeight, mWorkProfileIcon.getMeasuredHeight());
+        }
+
+        if (isVisible(mStatusView)) {
+            // Presence and status are in a same row, so status will be affected by icon size.
+            final int statusWidth;
+            if (isVisible(mPresenceIcon)) {
+                statusWidth = (effectiveWidth - mPresenceIcon.getMeasuredWidth()
+                        - mPresenceIconMargin);
+            } else {
+                statusWidth = effectiveWidth;
+            }
+            mStatusView.measure(MeasureSpec.makeMeasureSpec(statusWidth, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            mStatusTextViewHeight =
+                    Math.max(mStatusTextViewHeight, mStatusView.getMeasuredHeight());
+        }
+
+        // Calculate height including padding.
+        int height = (mNameTextViewHeight + mPhoneticNameTextViewHeight +
+                mLabelAndDataViewMaxHeight +
+                mSnippetTextViewHeight + mStatusTextViewHeight);
+
+        // Make sure the height is at least as high as the photo
+        height = Math.max(height, mPhotoViewHeight + getPaddingBottom() + getPaddingTop());
+
+        // Make sure height is at least the preferred height
+        height = Math.max(height, preferredHeight);
+
+        // Measure the header if it is visible.
+        if (mHeaderView != null && mHeaderView.getVisibility() == VISIBLE) {
+            mHeaderView.measure(
+                    MeasureSpec.makeMeasureSpec(mHeaderWidth, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+        }
+
+        setMeasuredDimension(specWidth, height);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        final int height = bottom - top;
+        final int width = right - left;
+
+        // Determine the vertical bounds by laying out the header first.
+        int topBound = 0;
+        int bottomBound = height;
+        int leftBound = getPaddingLeft();
+        int rightBound = width - getPaddingRight();
+
+        final boolean isLayoutRtl = ViewUtil.isViewLayoutRtl(this);
+
+        // Put the section header on the left side of the contact view.
+        if (mIsSectionHeaderEnabled) {
+            if (mHeaderView != null) {
+                int headerHeight = mHeaderView.getMeasuredHeight();
+                int headerTopBound = (bottomBound + topBound - headerHeight) / 2 + mTextOffsetTop;
+
+                mHeaderView.layout(
+                        isLayoutRtl ? rightBound - mHeaderWidth : leftBound,
+                        headerTopBound,
+                        isLayoutRtl ? rightBound : leftBound + mHeaderWidth,
+                        headerTopBound + headerHeight);
+            }
+            if (isLayoutRtl) {
+                rightBound -= mHeaderWidth;
+            } else {
+                leftBound += mHeaderWidth;
+            }
+        }
+
+        mBoundsWithoutHeader.set(left + leftBound, topBound, left + rightBound, bottomBound);
+        mLeftOffset = left + leftBound;
+        mRightOffset = left + rightBound;
+        if (isLayoutRtl) {
+            rightBound -= mGapBetweenIndexerAndImage;
+        } else {
+            leftBound += mGapBetweenIndexerAndImage;
+        }
+
+        if (mActivatedStateSupported && isActivated()) {
+            mActivatedBackgroundDrawable.setBounds(mBoundsWithoutHeader);
+        }
+
+        if (isVisible(mCheckBox)) {
+            final int photoTop = topBound + (bottomBound - topBound - mCheckBoxHeight) / 2;
+            if (mPhotoPosition == PhotoPosition.LEFT) {
+                mCheckBox.layout(rightBound - mGapFromScrollBar - mCheckBoxWidth,
+                        photoTop,
+                        rightBound - mGapFromScrollBar,
+                        photoTop + mCheckBoxHeight);
+            } else {
+                mCheckBox.layout(leftBound + mGapFromScrollBar,
+                        photoTop,
+                        leftBound + mGapFromScrollBar + mCheckBoxWidth,
+                        photoTop + mCheckBoxHeight);
+            }
+        }
+
+        if (isVisible(mDeleteImageButton)) {
+            final int photoTop = topBound + (bottomBound - topBound - mDeleteImageButtonHeight) / 2;
+            final int mDeleteImageButtonSize = mDeleteImageButtonHeight > mDeleteImageButtonWidth
+                    ? mDeleteImageButtonHeight : mDeleteImageButtonWidth;
+            if (mPhotoPosition == PhotoPosition.LEFT) {
+                mDeleteImageButton.layout(rightBound - mDeleteImageButtonSize,
+                        photoTop,
+                        rightBound,
+                        photoTop + mDeleteImageButtonSize);
+            } else {
+                mDeleteImageButton.layout(leftBound,
+                        photoTop,
+                        leftBound + mDeleteImageButtonSize,
+                        photoTop + mDeleteImageButtonSize);
+            }
+        }
+
+        final View photoView = mQuickContact != null ? mQuickContact : mPhotoView;
+        if (mPhotoPosition == PhotoPosition.LEFT) {
+            // Photo is the left most view. All the other Views should on the right of the photo.
+            if (photoView != null) {
+                // Center the photo vertically
+                final int photoTop = topBound + (bottomBound - topBound - mPhotoViewHeight) / 2
+                        + mAvatarOffsetTop;
+                photoView.layout(
+                        leftBound,
+                        photoTop,
+                        leftBound + mPhotoViewWidth,
+                        photoTop + mPhotoViewHeight);
+                leftBound += mPhotoViewWidth + mGapBetweenImageAndText;
+            } else if (mKeepHorizontalPaddingForPhotoView) {
+                // Draw nothing but keep the padding.
+                leftBound += mPhotoViewWidth + mGapBetweenImageAndText;
+            }
+        } else {
+            // Photo is the right most view. Right bound should be adjusted that way.
+            if (photoView != null) {
+                // Center the photo vertically
+                final int photoTop = topBound + (bottomBound - topBound - mPhotoViewHeight) / 2
+                        + mAvatarOffsetTop;
+                photoView.layout(
+                        rightBound - mPhotoViewWidth,
+                        photoTop,
+                        rightBound,
+                        photoTop + mPhotoViewHeight);
+                rightBound -= (mPhotoViewWidth + mGapBetweenImageAndText);
+            } else if (mKeepHorizontalPaddingForPhotoView) {
+                // Draw nothing but keep the padding.
+                rightBound -= (mPhotoViewWidth + mGapBetweenImageAndText);
+            }
+
+            // Add indent between left-most padding and texts.
+            leftBound += mTextIndent;
+        }
+
+        if (mSupportVideoCallIcon) {
+            // Place the video call button at the end of the list (e.g. take into account RTL mode).
+            if (isVisible(mVideoCallIcon)) {
+                // Center the video icon vertically
+                final int videoIconTop = topBound +
+                        (bottomBound - topBound - mVideoCallIconSize) / 2;
+
+                if (!isLayoutRtl) {
+                    // When photo is on left, video icon is placed on the right edge.
+                    mVideoCallIcon.layout(rightBound - mVideoCallIconSize,
+                            videoIconTop,
+                            rightBound,
+                            videoIconTop + mVideoCallIconSize);
+                } else {
+                    // When photo is on right, video icon is placed on the left edge.
+                    mVideoCallIcon.layout(leftBound,
+                            videoIconTop,
+                            leftBound + mVideoCallIconSize,
+                            videoIconTop + mVideoCallIconSize);
+                }
+            }
+
+            if (mPhotoPosition == PhotoPosition.LEFT) {
+                rightBound -= (mVideoCallIconSize + mVideoCallIconMargin);
+            } else {
+                leftBound += mVideoCallIconSize + mVideoCallIconMargin;
+            }
+        }
+
+
+        // Center text vertically, then apply the top offset.
+        final int totalTextHeight = mNameTextViewHeight + mPhoneticNameTextViewHeight +
+                mLabelAndDataViewMaxHeight + mSnippetTextViewHeight + mStatusTextViewHeight;
+        int textTopBound = (bottomBound + topBound - totalTextHeight) / 2 + mTextOffsetTop;
+
+        // Work Profile icon align top
+        int workProfileIconWidth = 0;
+        if (isVisible(mWorkProfileIcon)) {
+            workProfileIconWidth = mWorkProfileIcon.getMeasuredWidth();
+            final int distanceFromEnd = mCheckBoxWidth > 0
+                    ? mCheckBoxWidth + mGapBetweenImageAndText : 0;
+            if (mPhotoPosition == PhotoPosition.LEFT) {
+                // When photo is on left, label is placed on the right edge of the list item.
+                mWorkProfileIcon.layout(rightBound - workProfileIconWidth - distanceFromEnd,
+                        textTopBound,
+                        rightBound - distanceFromEnd,
+                        textTopBound + mNameTextViewHeight);
+            } else {
+                // When photo is on right, label is placed on the left of data view.
+                mWorkProfileIcon.layout(leftBound + distanceFromEnd,
+                        textTopBound,
+                        leftBound + workProfileIconWidth + distanceFromEnd,
+                        textTopBound + mNameTextViewHeight);
+            }
+        }
+
+        // Layout all text view and presence icon
+        // Put name TextView first
+        if (isVisible(mNameTextView)) {
+            final int distanceFromEnd = workProfileIconWidth
+                    + (mCheckBoxWidth > 0 ? mCheckBoxWidth + mGapBetweenImageAndText : 0);
+            if (mPhotoPosition == PhotoPosition.LEFT) {
+                mNameTextView.layout(leftBound,
+                        textTopBound,
+                        rightBound - distanceFromEnd,
+                        textTopBound + mNameTextViewHeight);
+            } else {
+                mNameTextView.layout(leftBound + distanceFromEnd,
+                        textTopBound,
+                        rightBound,
+                        textTopBound + mNameTextViewHeight);
+            }
+        }
+
+        if (isVisible(mNameTextView) || isVisible(mWorkProfileIcon)) {
+            textTopBound += mNameTextViewHeight;
+        }
+
+        // Presence and status
+        if (isLayoutRtl) {
+            int statusRightBound = rightBound;
+            if (isVisible(mPresenceIcon)) {
+                int iconWidth = mPresenceIcon.getMeasuredWidth();
+                mPresenceIcon.layout(
+                        rightBound - iconWidth,
+                        textTopBound,
+                        rightBound,
+                        textTopBound + mStatusTextViewHeight);
+                statusRightBound -= (iconWidth + mPresenceIconMargin);
+            }
+
+            if (isVisible(mStatusView)) {
+                mStatusView.layout(leftBound,
+                        textTopBound,
+                        statusRightBound,
+                        textTopBound + mStatusTextViewHeight);
+            }
+        } else {
+            int statusLeftBound = leftBound;
+            if (isVisible(mPresenceIcon)) {
+                int iconWidth = mPresenceIcon.getMeasuredWidth();
+                mPresenceIcon.layout(
+                        leftBound,
+                        textTopBound,
+                        leftBound + iconWidth,
+                        textTopBound + mStatusTextViewHeight);
+                statusLeftBound += (iconWidth + mPresenceIconMargin);
+            }
+
+            if (isVisible(mStatusView)) {
+                mStatusView.layout(statusLeftBound,
+                        textTopBound,
+                        rightBound,
+                        textTopBound + mStatusTextViewHeight);
+            }
+        }
+
+        if (isVisible(mStatusView) || isVisible(mPresenceIcon)) {
+            textTopBound += mStatusTextViewHeight;
+        }
+
+        // Rest of text views
+        int dataLeftBound = leftBound;
+        if (isVisible(mPhoneticNameTextView)) {
+            mPhoneticNameTextView.layout(leftBound,
+                    textTopBound,
+                    rightBound,
+                    textTopBound + mPhoneticNameTextViewHeight);
+            textTopBound += mPhoneticNameTextViewHeight;
+        }
+
+        // Label and Data align bottom.
+        if (isVisible(mLabelView)) {
+            if (!isLayoutRtl) {
+                mLabelView.layout(dataLeftBound,
+                        textTopBound + mLabelAndDataViewMaxHeight - mLabelViewHeight,
+                        rightBound,
+                        textTopBound + mLabelAndDataViewMaxHeight);
+                dataLeftBound += mLabelView.getMeasuredWidth() + mGapBetweenLabelAndData;
+            } else {
+                dataLeftBound = leftBound + mLabelView.getMeasuredWidth();
+                mLabelView.layout(rightBound - mLabelView.getMeasuredWidth(),
+                        textTopBound + mLabelAndDataViewMaxHeight - mLabelViewHeight,
+                        rightBound,
+                        textTopBound + mLabelAndDataViewMaxHeight);
+                rightBound -= (mLabelView.getMeasuredWidth() + mGapBetweenLabelAndData);
+            }
+        }
+
+        if (isVisible(mDataView)) {
+            if (!isLayoutRtl) {
+                mDataView.layout(dataLeftBound,
+                        textTopBound + mLabelAndDataViewMaxHeight - mDataViewHeight,
+                        rightBound,
+                        textTopBound + mLabelAndDataViewMaxHeight);
+            } else {
+                mDataView.layout(rightBound - mDataView.getMeasuredWidth(),
+                        textTopBound + mLabelAndDataViewMaxHeight - mDataViewHeight,
+                        rightBound,
+                        textTopBound + mLabelAndDataViewMaxHeight);
+            }
+        }
+        if (isVisible(mLabelView) || isVisible(mDataView)) {
+            textTopBound += mLabelAndDataViewMaxHeight;
+        }
+
+        if (isVisible(mSnippetView)) {
+            mSnippetView.layout(leftBound,
+                    textTopBound,
+                    rightBound,
+                    textTopBound + mSnippetTextViewHeight);
+        }
+    }
+
+    @Override
+    public void adjustListItemSelectionBounds(Rect bounds) {
+        if (mAdjustSelectionBoundsEnabled) {
+            bounds.top += mBoundsWithoutHeader.top;
+            bounds.bottom = bounds.top + mBoundsWithoutHeader.height();
+            bounds.left = mBoundsWithoutHeader.left;
+            bounds.right = mBoundsWithoutHeader.right;
+        }
+    }
+
+    protected boolean isVisible(View view) {
+        return view != null && view.getVisibility() == View.VISIBLE;
+    }
+
+    /**
+     * Extracts width and height from the style
+     */
+    private void ensurePhotoViewSize() {
+        if (!mPhotoViewWidthAndHeightAreReady) {
+            mPhotoViewWidth = mPhotoViewHeight = getDefaultPhotoViewSize();
+            if (!mQuickContactEnabled && mPhotoView == null) {
+                if (!mKeepHorizontalPaddingForPhotoView) {
+                    mPhotoViewWidth = 0;
+                }
+                if (!mKeepVerticalPaddingForPhotoView) {
+                    mPhotoViewHeight = 0;
+                }
+            }
+
+            mPhotoViewWidthAndHeightAreReady = true;
+        }
+    }
+
+    protected int getDefaultPhotoViewSize() {
+        return mDefaultPhotoViewSize;
+    }
+
+    /**
+     * Gets a LayoutParam that corresponds to the default photo size.
+     *
+     * @return A new LayoutParam.
+     */
+    private LayoutParams getDefaultPhotoLayoutParams() {
+        LayoutParams params = generateDefaultLayoutParams();
+        params.width = getDefaultPhotoViewSize();
+        params.height = params.width;
+        return params;
+    }
+
+    @Override
+    protected void drawableStateChanged() {
+        super.drawableStateChanged();
+        if (mActivatedStateSupported) {
+            mActivatedBackgroundDrawable.setState(getDrawableState());
+        }
+    }
+
+    @Override
+    protected boolean verifyDrawable(Drawable who) {
+        return who == mActivatedBackgroundDrawable || super.verifyDrawable(who);
+    }
+
+    @Override
+    public void jumpDrawablesToCurrentState() {
+        super.jumpDrawablesToCurrentState();
+        if (mActivatedStateSupported) {
+            mActivatedBackgroundDrawable.jumpToCurrentState();
+        }
+    }
+
+    @Override
+    public void dispatchDraw(Canvas canvas) {
+        if (mActivatedStateSupported && isActivated()) {
+            mActivatedBackgroundDrawable.draw(canvas);
+        }
+
+        super.dispatchDraw(canvas);
+    }
+
+    /**
+     * Sets section header or makes it invisible if the title is null.
+     */
+    public void setSectionHeader(String title) {
+        if (!TextUtils.isEmpty(title)) {
+            if (TextUtils.equals(getContext().getString(R.string.star_sign), title)) {
+                if (mHeaderView == null) {
+                    addStarImageHeader();
+                } else if (mHeaderView instanceof TextView) {
+                    removeView(mHeaderView);
+                    addStarImageHeader();
+                } else {
+                    mHeaderView.setVisibility(View.VISIBLE);
+                }
+            } else {
+                if (mHeaderView == null) {
+                    addTextHeader(title);
+                } else if (mHeaderView instanceof ImageView) {
+                    removeView(mHeaderView);
+                    addTextHeader(title);
+                } else {
+                    updateHeaderText((TextView) mHeaderView, title);
+                }
+            }
+        } else if (mHeaderView != null) {
+            mHeaderView.setVisibility(View.GONE);
+        }
+    }
+
+    private void addTextHeader(String title) {
+        mHeaderView = new TextView(getContext());
+        final TextView headerTextView = (TextView) mHeaderView;
+        headerTextView.setTextAppearance(getContext(), R.style.SectionHeaderStyle);
+        headerTextView.setGravity(Gravity.CENTER_HORIZONTAL);
+        updateHeaderText(headerTextView, title);
+        addView(headerTextView);
+    }
+
+    private void updateHeaderText(TextView headerTextView, String title) {
+        setMarqueeText(headerTextView, title);
+        headerTextView.setAllCaps(true);
+        if (ContactsSectionIndexer.BLANK_HEADER_STRING.equals(title)) {
+            headerTextView.setContentDescription(
+                    getContext().getString(R.string.description_no_name_header));
+        } else {
+            headerTextView.setContentDescription(title);
+        }
+        headerTextView.setVisibility(View.VISIBLE);
+    }
+
+    private void addStarImageHeader() {
+        mHeaderView = new ImageView(getContext());
+        final ImageView headerImageView = (ImageView) mHeaderView;
+        headerImageView.setImageDrawable(
+                getResources().getDrawable(R.drawable.ic_material_star, getContext().getTheme()));
+        headerImageView.setImageTintList(ColorStateList.valueOf(getResources()
+                .getColor(R.color.material_star_pink)));
+        headerImageView.setContentDescription(
+                getContext().getString(R.string.list_filter_all_starred));
+        headerImageView.setVisibility(View.VISIBLE);
+        addView(headerImageView);
+    }
+
+    public void setIsSectionHeaderEnabled(boolean isSectionHeaderEnabled) {
+        mIsSectionHeaderEnabled = isSectionHeaderEnabled;
+    }
+
+    /**
+     * Returns the quick contact badge, creating it if necessary.
+     */
+    public QuickContactBadge getQuickContact() {
+        if (!mQuickContactEnabled) {
+            throw new IllegalStateException("QuickContact is disabled for this view");
+        }
+        if (mQuickContact == null) {
+            mQuickContact = new QuickContactBadge(getContext());
+            if (CompatUtils.isLollipopCompatible()) {
+                mQuickContact.setOverlay(null);
+            }
+            mQuickContact.setLayoutParams(getDefaultPhotoLayoutParams());
+            if (mNameTextView != null) {
+                mQuickContact.setContentDescription(getContext().getString(
+                        R.string.description_quick_contact_for, mNameTextView.getText()));
+            }
+
+            addView(mQuickContact);
+            mPhotoViewWidthAndHeightAreReady = false;
+        }
+        return mQuickContact;
+    }
+
+    /**
+     * Returns the photo view, creating it if necessary.
+     */
+    public ImageView getPhotoView() {
+        if (mPhotoView == null) {
+            mPhotoView = new ImageView(getContext());
+            mPhotoView.setLayoutParams(getDefaultPhotoLayoutParams());
+            // Quick contact style used above will set a background - remove it
+            mPhotoView.setBackground(null);
+            addView(mPhotoView);
+            mPhotoViewWidthAndHeightAreReady = false;
+        }
+        return mPhotoView;
+    }
+
+    /**
+     * Removes the photo view.
+     */
+    public void removePhotoView() {
+        removePhotoView(false, true);
+    }
+
+    /**
+     * Removes the photo view.
+     *
+     * @param keepHorizontalPadding True means data on the right side will have
+     *            padding on left, pretending there is still a photo view.
+     * @param keepVerticalPadding True means the View will have some height
+     *            enough for accommodating a photo view.
+     */
+    public void removePhotoView(boolean keepHorizontalPadding, boolean keepVerticalPadding) {
+        mPhotoViewWidthAndHeightAreReady = false;
+        mKeepHorizontalPaddingForPhotoView = keepHorizontalPadding;
+        mKeepVerticalPaddingForPhotoView = keepVerticalPadding;
+        if (mPhotoView != null) {
+            removeView(mPhotoView);
+            mPhotoView = null;
+        }
+        if (mQuickContact != null) {
+            removeView(mQuickContact);
+            mQuickContact = null;
+        }
+    }
+
+    /**
+     * Sets a word prefix that will be highlighted if encountered in fields like
+     * name and search snippet. This will disable the mask highlighting for names.
+     * <p>
+     * NOTE: must be all upper-case
+     */
+    public void setHighlightedPrefix(String upperCasePrefix) {
+        mHighlightedPrefix = upperCasePrefix;
+    }
+
+    /**
+     * Clears previously set highlight sequences for the view.
+     */
+    public void clearHighlightSequences() {
+        mNameHighlightSequence.clear();
+        mNumberHighlightSequence.clear();
+        mHighlightedPrefix = null;
+    }
+
+    /**
+     * Adds a highlight sequence to the name highlighter.
+     * @param start The start position of the highlight sequence.
+     * @param end The end position of the highlight sequence.
+     */
+    public void addNameHighlightSequence(int start, int end) {
+        mNameHighlightSequence.add(new HighlightSequence(start, end));
+    }
+
+    /**
+     * Adds a highlight sequence to the number highlighter.
+     * @param start The start position of the highlight sequence.
+     * @param end The end position of the highlight sequence.
+     */
+    public void addNumberHighlightSequence(int start, int end) {
+        mNumberHighlightSequence.add(new HighlightSequence(start, end));
+    }
+
+    /**
+     * Returns the text view for the contact name, creating it if necessary.
+     */
+    public TextView getNameTextView() {
+        if (mNameTextView == null) {
+            mNameTextView = new TextView(getContext());
+            mNameTextView.setSingleLine(true);
+            mNameTextView.setEllipsize(getTextEllipsis());
+            mNameTextView.setTextColor(mNameTextViewTextColor);
+            mNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mNameTextViewTextSize);
+            // Manually call setActivated() since this view may be added after the first
+            // setActivated() call toward this whole item view.
+            mNameTextView.setActivated(isActivated());
+            mNameTextView.setGravity(Gravity.CENTER_VERTICAL);
+            mNameTextView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+            mNameTextView.setId(R.id.cliv_name_textview);
+            if (CompatUtils.isLollipopCompatible()) {
+                mNameTextView.setElegantTextHeight(false);
+            }
+            addView(mNameTextView);
+        }
+        return mNameTextView;
+    }
+
+    /**
+     * Adds or updates a text view for the phonetic name.
+     */
+    public void setPhoneticName(char[] text, int size) {
+        if (text == null || size == 0) {
+            if (mPhoneticNameTextView != null) {
+                mPhoneticNameTextView.setVisibility(View.GONE);
+            }
+        } else {
+            getPhoneticNameTextView();
+            setMarqueeText(mPhoneticNameTextView, text, size);
+            mPhoneticNameTextView.setVisibility(VISIBLE);
+        }
+    }
+
+    /**
+     * Returns the text view for the phonetic name, creating it if necessary.
+     */
+    public TextView getPhoneticNameTextView() {
+        if (mPhoneticNameTextView == null) {
+            mPhoneticNameTextView = new TextView(getContext());
+            mPhoneticNameTextView.setSingleLine(true);
+            mPhoneticNameTextView.setEllipsize(getTextEllipsis());
+            mPhoneticNameTextView.setTextAppearance(getContext(), android.R.style.TextAppearance_Small);
+            mPhoneticNameTextView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+            mPhoneticNameTextView.setTypeface(mPhoneticNameTextView.getTypeface(), Typeface.BOLD);
+            mPhoneticNameTextView.setActivated(isActivated());
+            mPhoneticNameTextView.setId(R.id.cliv_phoneticname_textview);
+            addView(mPhoneticNameTextView);
+        }
+        return mPhoneticNameTextView;
+    }
+
+    /**
+     * Adds or updates a text view for the data label.
+     */
+    public void setLabel(CharSequence text) {
+        if (TextUtils.isEmpty(text)) {
+            if (mLabelView != null) {
+                mLabelView.setVisibility(View.GONE);
+            }
+        } else {
+            getLabelView();
+            setMarqueeText(mLabelView, text);
+            mLabelView.setVisibility(VISIBLE);
+        }
+    }
+
+    /**
+     * Returns the text view for the data label, creating it if necessary.
+     */
+    public TextView getLabelView() {
+        if (mLabelView == null) {
+            mLabelView = new TextView(getContext());
+            mLabelView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
+                    LayoutParams.WRAP_CONTENT));
+
+            mLabelView.setSingleLine(true);
+            mLabelView.setEllipsize(getTextEllipsis());
+            mLabelView.setTextAppearance(getContext(), R.style.TextAppearanceSmall);
+            if (mPhotoPosition == PhotoPosition.LEFT) {
+                mLabelView.setAllCaps(true);
+            } else {
+                mLabelView.setTypeface(mLabelView.getTypeface(), Typeface.BOLD);
+            }
+            mLabelView.setActivated(isActivated());
+            mLabelView.setId(R.id.cliv_label_textview);
+            addView(mLabelView);
+        }
+        return mLabelView;
+    }
+
+    /**
+     * Adds or updates a text view for the data element.
+     */
+    public void setData(char[] text, int size) {
+        if (text == null || size == 0) {
+            if (mDataView != null) {
+                mDataView.setVisibility(View.GONE);
+            }
+        } else {
+            getDataView();
+            setMarqueeText(mDataView, text, size);
+            mDataView.setVisibility(VISIBLE);
+        }
+    }
+
+    /**
+     * Sets phone number for a list item. This takes care of number highlighting if the highlight
+     * mask exists.
+     */
+    public void setPhoneNumber(String text, String countryIso) {
+        if (text == null) {
+            if (mDataView != null) {
+                mDataView.setVisibility(View.GONE);
+            }
+        } else {
+            getDataView();
+
+            // TODO: Format number using PhoneNumberUtils.formatNumber before assigning it to
+            // mDataView. Make sure that determination of the highlight sequences are done only
+            // after number formatting.
+
+            // Sets phone number texts for display after highlighting it, if applicable.
+            // CharSequence textToSet = text;
+            final SpannableString textToSet = new SpannableString(text);
+
+            if (mNumberHighlightSequence.size() != 0) {
+                final HighlightSequence highlightSequence = mNumberHighlightSequence.get(0);
+                mTextHighlighter.applyMaskingHighlight(textToSet, highlightSequence.start,
+                        highlightSequence.end);
+            }
+
+            setMarqueeText(mDataView, textToSet);
+            mDataView.setVisibility(VISIBLE);
+
+            // We have a phone number as "mDataView" so make it always LTR and VIEW_START
+            mDataView.setTextDirection(View.TEXT_DIRECTION_LTR);
+            mDataView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+        }
+    }
+
+    private void setMarqueeText(TextView textView, char[] text, int size) {
+        if (getTextEllipsis() == TruncateAt.MARQUEE) {
+            setMarqueeText(textView, new String(text, 0, size));
+        } else {
+            textView.setText(text, 0, size);
+        }
+    }
+
+    private void setMarqueeText(TextView textView, CharSequence text) {
+        if (getTextEllipsis() == TruncateAt.MARQUEE) {
+            // To show MARQUEE correctly (with END effect during non-active state), we need
+            // to build Spanned with MARQUEE in addition to TextView's ellipsize setting.
+            final SpannableString spannable = new SpannableString(text);
+            spannable.setSpan(TruncateAt.MARQUEE, 0, spannable.length(),
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            textView.setText(spannable);
+        } else {
+            textView.setText(text);
+        }
+    }
+
+    /**
+     * Returns the {@link AppCompatCheckBox} view, creating it if necessary.
+     */
+    public AppCompatCheckBox getCheckBox() {
+        if (mCheckBox == null) {
+            mCheckBox = new AppCompatCheckBox(getContext());
+            // Make non-focusable, so the rest of the ContactListItemView can be clicked.
+            mCheckBox.setFocusable(false);
+            addView(mCheckBox);
+        }
+        return mCheckBox;
+    }
+
+    /**
+     * Returns the {@link AppCompatImageButton} delete button, creating it if necessary.
+     */
+    public AppCompatImageButton getDeleteImageButton(
+            final MultiSelectEntryContactListAdapter.DeleteContactListener listener,
+            final int position) {
+        if (mDeleteImageButton == null) {
+            mDeleteImageButton = new AppCompatImageButton(getContext());
+            mDeleteImageButton.setImageResource(R.drawable.ic_cancel_black_24dp);
+            mDeleteImageButton.setScaleType(ScaleType.CENTER);
+            mDeleteImageButton.setBackgroundColor(Color.TRANSPARENT);
+            mDeleteImageButton.setContentDescription(
+                    getResources().getString(R.string.description_delete_contact));
+            if (CompatUtils. isLollipopCompatible()) {
+                final TypedValue typedValue = new TypedValue();
+                getContext().getTheme().resolveAttribute(
+                        android.R.attr.selectableItemBackgroundBorderless, typedValue, true);
+                mDeleteImageButton.setBackgroundResource(typedValue.resourceId);
+            }
+            addView(mDeleteImageButton);
+        }
+        // Reset onClickListener because after reloading the view, position might be changed.
+        mDeleteImageButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                // Inform the adapter that delete icon was clicked.
+                if (listener != null) {
+                    listener.onContactDeleteClicked(position);
+                }
+            }
+        });
+        return mDeleteImageButton;
+    }
+
+    /**
+     * Returns the text view for the data text, creating it if necessary.
+     */
+    public TextView getDataView() {
+        if (mDataView == null) {
+            mDataView = new TextView(getContext());
+            mDataView.setSingleLine(true);
+            mDataView.setEllipsize(getTextEllipsis());
+            mDataView.setTextAppearance(getContext(), R.style.TextAppearanceSmall);
+            mDataView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+            mDataView.setActivated(isActivated());
+            mDataView.setId(R.id.cliv_data_view);
+            if (CompatUtils.isLollipopCompatible()) {
+                mDataView.setElegantTextHeight(false);
+            }
+            addView(mDataView);
+        }
+        return mDataView;
+    }
+
+    /**
+     * Adds or updates a text view for the search snippet.
+     */
+    public void setSnippet(String text) {
+        if (TextUtils.isEmpty(text)) {
+            if (mSnippetView != null) {
+                mSnippetView.setVisibility(View.GONE);
+            }
+        } else {
+            mTextHighlighter.setPrefixText(getSnippetView(), text, mHighlightedPrefix);
+            mSnippetView.setVisibility(VISIBLE);
+            if (ContactDisplayUtils.isPossiblePhoneNumber(text)) {
+                // Give the text-to-speech engine a hint that it's a phone number
+                mSnippetView.setContentDescription(
+                        PhoneNumberUtilsCompat.createTtsSpannable(text));
+            } else {
+                mSnippetView.setContentDescription(null);
+            }
+        }
+    }
+
+    /**
+     * Returns the text view for the search snippet, creating it if necessary.
+     */
+    public TextView getSnippetView() {
+        if (mSnippetView == null) {
+            mSnippetView = new TextView(getContext());
+            mSnippetView.setSingleLine(true);
+            mSnippetView.setEllipsize(getTextEllipsis());
+            mSnippetView.setTextAppearance(getContext(), android.R.style.TextAppearance_Small);
+            mSnippetView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+            mSnippetView.setActivated(isActivated());
+            addView(mSnippetView);
+        }
+        return mSnippetView;
+    }
+
+    /**
+     * Returns the text view for the status, creating it if necessary.
+     */
+    public TextView getStatusView() {
+        if (mStatusView == null) {
+            mStatusView = new TextView(getContext());
+            mStatusView.setSingleLine(true);
+            mStatusView.setEllipsize(getTextEllipsis());
+            mStatusView.setTextAppearance(getContext(), android.R.style.TextAppearance_Small);
+            mStatusView.setTextColor(mSecondaryTextColor);
+            mStatusView.setActivated(isActivated());
+            mStatusView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+            addView(mStatusView);
+        }
+        return mStatusView;
+    }
+
+    /**
+     * Adds or updates a text view for the status.
+     */
+    public void setStatus(CharSequence text) {
+        if (TextUtils.isEmpty(text)) {
+            if (mStatusView != null) {
+                mStatusView.setVisibility(View.GONE);
+            }
+        } else {
+            getStatusView();
+            setMarqueeText(mStatusView, text);
+            mStatusView.setVisibility(VISIBLE);
+        }
+    }
+
+    /**
+     * Adds or updates the presence icon view.
+     */
+    public void setPresence(Drawable icon) {
+        if (icon != null) {
+            if (mPresenceIcon == null) {
+                mPresenceIcon = new ImageView(getContext());
+                addView(mPresenceIcon);
+            }
+            mPresenceIcon.setImageDrawable(icon);
+            mPresenceIcon.setScaleType(ScaleType.CENTER);
+            mPresenceIcon.setVisibility(View.VISIBLE);
+        } else {
+            if (mPresenceIcon != null) {
+                mPresenceIcon.setVisibility(View.GONE);
+            }
+        }
+    }
+
+    /**
+     * Set to display work profile icon or not
+     *
+     * @param enabled set to display work profile icon or not
+     */
+    public void setWorkProfileIconEnabled(boolean enabled) {
+        if (mWorkProfileIcon != null) {
+            mWorkProfileIcon.setVisibility(enabled ? View.VISIBLE : View.GONE);
+        } else if (enabled) {
+            mWorkProfileIcon = new ImageView(getContext());
+            addView(mWorkProfileIcon);
+            mWorkProfileIcon.setImageResource(R.drawable.ic_work_profile);
+            mWorkProfileIcon.setScaleType(ScaleType.CENTER_INSIDE);
+            mWorkProfileIcon.setVisibility(View.VISIBLE);
+        }
+    }
+
+    private TruncateAt getTextEllipsis() {
+        return TruncateAt.MARQUEE;
+    }
+
+    public void showDisplayName(Cursor cursor, int nameColumnIndex, int displayOrder) {
+        CharSequence name = cursor.getString(nameColumnIndex);
+        setDisplayName(name);
+
+        // Since the quick contact content description is derived from the display name and there is
+        // no guarantee that when the quick contact is initialized the display name is already set,
+        // do it here too.
+        if (mQuickContact != null) {
+            mQuickContact.setContentDescription(getContext().getString(
+                    R.string.description_quick_contact_for, mNameTextView.getText()));
+        }
+    }
+
+    public void setDisplayName(CharSequence name, boolean highlight) {
+        if (!TextUtils.isEmpty(name) && highlight) {
+            clearHighlightSequences();
+            addNameHighlightSequence(0, name.length());
+        }
+        setDisplayName(name);
+    }
+
+    public void setDisplayName(CharSequence name) {
+        if (!TextUtils.isEmpty(name)) {
+            // Chooses the available highlighting method for highlighting.
+            if (mHighlightedPrefix != null) {
+                name = mTextHighlighter.applyPrefixHighlight(name, mHighlightedPrefix);
+            } else if (mNameHighlightSequence.size() != 0) {
+                final SpannableString spannableName = new SpannableString(name);
+                for (HighlightSequence highlightSequence : mNameHighlightSequence) {
+                    mTextHighlighter.applyMaskingHighlight(spannableName, highlightSequence.start,
+                            highlightSequence.end);
+                }
+                name = spannableName;
+            }
+        } else {
+            name = mUnknownNameText;
+        }
+        setMarqueeText(getNameTextView(), name);
+
+        if (ContactDisplayUtils.isPossiblePhoneNumber(name)) {
+            // Give the text-to-speech engine a hint that it's a phone number
+            mNameTextView.setTextDirection(View.TEXT_DIRECTION_LTR);
+            mNameTextView.setContentDescription(
+                    PhoneNumberUtilsCompat.createTtsSpannable(name.toString()));
+        } else {
+            // Remove span tags of highlighting for talkback to avoid reading highlighting and rest
+            // of the name into two separate parts.
+            mNameTextView.setContentDescription(name.toString());
+        }
+    }
+
+    public void hideCheckBox() {
+        if (mCheckBox != null) {
+            removeView(mCheckBox);
+            mCheckBox = null;
+        }
+    }
+
+    public void hideDeleteImageButton() {
+        if (mDeleteImageButton != null) {
+            removeView(mDeleteImageButton);
+            mDeleteImageButton = null;
+        }
+    }
+
+    public void hideDisplayName() {
+        if (mNameTextView != null) {
+            removeView(mNameTextView);
+            mNameTextView = null;
+        }
+    }
+
+    public void showPhoneticName(Cursor cursor, int phoneticNameColumnIndex) {
+        cursor.copyStringToBuffer(phoneticNameColumnIndex, mPhoneticNameBuffer);
+        int phoneticNameSize = mPhoneticNameBuffer.sizeCopied;
+        if (phoneticNameSize != 0) {
+            setPhoneticName(mPhoneticNameBuffer.data, phoneticNameSize);
+        } else {
+            setPhoneticName(null, 0);
+        }
+    }
+
+    public void hidePhoneticName() {
+        if (mPhoneticNameTextView != null) {
+            removeView(mPhoneticNameTextView);
+            mPhoneticNameTextView = null;
+        }
+    }
+
+    /**
+     * Sets the proper icon (star or presence or nothing) and/or status message.
+     */
+    public void showPresenceAndStatusMessage(Cursor cursor, int presenceColumnIndex,
+            int contactStatusColumnIndex) {
+        Drawable icon = null;
+        int presence = 0;
+        if (!cursor.isNull(presenceColumnIndex)) {
+            presence = cursor.getInt(presenceColumnIndex);
+            icon = ContactPresenceIconUtil.getPresenceIcon(getContext(), presence);
+        }
+        setPresence(icon);
+
+        String statusMessage = null;
+        if (contactStatusColumnIndex != 0 && !cursor.isNull(contactStatusColumnIndex)) {
+            statusMessage = cursor.getString(contactStatusColumnIndex);
+        }
+        // If there is no status message from the contact, but there was a presence value, then use
+        // the default status message string
+        if (statusMessage == null && presence != 0) {
+            statusMessage = ContactStatusUtil.getStatusString(getContext(), presence);
+        }
+        setStatus(statusMessage);
+    }
+
+    /**
+     * Shows search snippet for email and phone number matches.
+     */
+    public void showSnippet(Cursor cursor, String query, int snippetColumn) {
+        // TODO: this does not properly handle phone numbers with control characters
+        // For example if the phone number is 444-5555, the search query 4445 will match the
+        // number since we normalize it before querying CP2 but the snippet will fail since
+        // the portion to be highlighted is 444-5 not 4445.
+        final String snippet = cursor.getString(snippetColumn);
+        if (snippet == null) {
+            setSnippet(null);
+            return;
+        }
+        final String displayName = cursor.getColumnIndex(Contacts.DISPLAY_NAME) >= 0
+                ? cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME)) : null;
+        if (snippet.equals(displayName)) {
+            // If the snippet exactly matches the display name (i.e. the phone number or email
+            // address is being used as the display name) then no snippet is necessary
+            setSnippet(null);
+            return;
+        }
+        // Show the snippet with the part of the query that matched it
+        setSnippet(updateSnippet(snippet, query, displayName));
+    }
+
+    /**
+     * Shows search snippet.
+     */
+    public void showSnippet(Cursor cursor, int summarySnippetColumnIndex) {
+        if (cursor.getColumnCount() <= summarySnippetColumnIndex
+            || !SearchSnippets.SNIPPET.equals(cursor.getColumnName(summarySnippetColumnIndex))) {
+            setSnippet(null);
+            return;
+        }
+
+        String snippet = cursor.getString(summarySnippetColumnIndex);
+
+        // Do client side snippeting if provider didn't do it
+        final Bundle extras = cursor.getExtras();
+        if (extras.getBoolean(ContactsContract.DEFERRED_SNIPPETING)) {
+
+            final String query = extras.getString(ContactsContract.DEFERRED_SNIPPETING_QUERY);
+
+            String displayName = null;
+            int displayNameIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            if (displayNameIndex >= 0) {
+                displayName = cursor.getString(displayNameIndex);
+            }
+
+            snippet = updateSnippet(snippet, query, displayName);
+
+        } else {
+            if (snippet != null) {
+                int from = 0;
+                int to = snippet.length();
+                int start = snippet.indexOf(DefaultContactListAdapter.SNIPPET_START_MATCH);
+                if (start == -1) {
+                    snippet = null;
+                } else {
+                    int firstNl = snippet.lastIndexOf('\n', start);
+                    if (firstNl != -1) {
+                        from = firstNl + 1;
+                    }
+                    int end = snippet.lastIndexOf(DefaultContactListAdapter.SNIPPET_END_MATCH);
+                    if (end != -1) {
+                        int lastNl = snippet.indexOf('\n', end);
+                        if (lastNl != -1) {
+                            to = lastNl;
+                        }
+                    }
+
+                    StringBuilder sb = new StringBuilder();
+                    for (int i = from; i < to; i++) {
+                        char c = snippet.charAt(i);
+                        if (c != DefaultContactListAdapter.SNIPPET_START_MATCH &&
+                                c != DefaultContactListAdapter.SNIPPET_END_MATCH) {
+                            sb.append(c);
+                        }
+                    }
+                    snippet = sb.toString();
+                }
+            }
+        }
+
+        setSnippet(snippet);
+    }
+
+    /**
+     * Used for deferred snippets from the database. The contents come back as large strings which
+     * need to be extracted for display.
+     *
+     * @param snippet The snippet from the database.
+     * @param query The search query substring.
+     * @param displayName The contact display name.
+     * @return The proper snippet to display.
+     */
+    private String updateSnippet(String snippet, String query, String displayName) {
+
+        if (TextUtils.isEmpty(snippet) || TextUtils.isEmpty(query)) {
+            return null;
+        }
+        query = SearchUtil.cleanStartAndEndOfSearchQuery(query.toLowerCase());
+
+        // If the display name already contains the query term, return empty - snippets should
+        // not be needed in that case.
+        if (!TextUtils.isEmpty(displayName)) {
+            final String lowerDisplayName = displayName.toLowerCase();
+            final List<String> nameTokens = split(lowerDisplayName);
+            for (String nameToken : nameTokens) {
+                if (nameToken.startsWith(query)) {
+                    return null;
+                }
+            }
+        }
+
+        // The snippet may contain multiple data lines.
+        // Show the first line that matches the query.
+        final SearchUtil.MatchedLine matched = SearchUtil.findMatchingLine(snippet, query);
+
+        if (matched != null && matched.line != null) {
+            // Tokenize for long strings since the match may be at the end of it.
+            // Skip this part for short strings since the whole string will be displayed.
+            // Most contact strings are short so the snippetize method will be called infrequently.
+            final int lengthThreshold = getResources().getInteger(
+                    R.integer.snippet_length_before_tokenize);
+            if (matched.line.length() > lengthThreshold) {
+                return snippetize(matched.line, matched.startIndex, lengthThreshold);
+            } else {
+                return matched.line;
+            }
+        }
+
+        // No match found.
+        return null;
+    }
+
+    private String snippetize(String line, int matchIndex, int maxLength) {
+        // Show up to maxLength characters. But we only show full tokens so show the last full token
+        // up to maxLength characters. So as many starting tokens as possible before trying ending
+        // tokens.
+        int remainingLength = maxLength;
+        int tempRemainingLength = remainingLength;
+
+        // Start the end token after the matched query.
+        int index = matchIndex;
+        int endTokenIndex = index;
+
+        // Find the match token first.
+        while (index < line.length()) {
+            if (!Character.isLetterOrDigit(line.charAt(index))) {
+                endTokenIndex = index;
+                remainingLength = tempRemainingLength;
+                break;
+            }
+            tempRemainingLength--;
+            index++;
+        }
+
+        // Find as much content before the match.
+        index = matchIndex - 1;
+        tempRemainingLength = remainingLength;
+        int startTokenIndex = matchIndex;
+        while (index > -1 && tempRemainingLength > 0) {
+            if (!Character.isLetterOrDigit(line.charAt(index))) {
+                startTokenIndex = index;
+                remainingLength = tempRemainingLength;
+            }
+            tempRemainingLength--;
+            index--;
+        }
+
+        index = endTokenIndex;
+        tempRemainingLength = remainingLength;
+        // Find remaining content at after match.
+        while (index < line.length() && tempRemainingLength > 0) {
+            if (!Character.isLetterOrDigit(line.charAt(index))) {
+                endTokenIndex = index;
+            }
+            tempRemainingLength--;
+            index++;
+        }
+        // Append ellipse if there is content before or after.
+        final StringBuilder sb = new StringBuilder();
+        if (startTokenIndex > 0) {
+            sb.append("...");
+        }
+        sb.append(line.substring(startTokenIndex, endTokenIndex));
+        if (endTokenIndex < line.length()) {
+            sb.append("...");
+        }
+        return sb.toString();
+    }
+
+    private static final Pattern SPLIT_PATTERN = Pattern.compile(
+            "([\\w-\\.]+)@((?:[\\w]+\\.)+)([a-zA-Z]{2,4})|[\\w]+");
+
+    /**
+     * Helper method for splitting a string into tokens.  The lists passed in are populated with
+     * the
+     * tokens and offsets into the content of each token.  The tokenization function parses e-mail
+     * addresses as a single token; otherwise it splits on any non-alphanumeric character.
+     *
+     * @param content Content to split.
+     * @return List of token strings.
+     */
+    private static List<String> split(String content) {
+        final Matcher matcher = SPLIT_PATTERN.matcher(content);
+        final ArrayList<String> tokens = Lists.newArrayList();
+        while (matcher.find()) {
+            tokens.add(matcher.group());
+        }
+        return tokens;
+    }
+
+    /**
+     * Shows data element.
+     */
+    public void showData(Cursor cursor, int dataColumnIndex) {
+        cursor.copyStringToBuffer(dataColumnIndex, mDataBuffer);
+        setData(mDataBuffer.data, mDataBuffer.sizeCopied);
+    }
+
+    public void setActivatedStateSupported(boolean flag) {
+        this.mActivatedStateSupported = flag;
+    }
+
+    public void setAdjustSelectionBoundsEnabled(boolean enabled) {
+        mAdjustSelectionBoundsEnabled = enabled;
+    }
+
+    @Override
+    public void requestLayout() {
+        // We will assume that once measured this will not need to resize
+        // itself, so there is no need to pass the layout request to the parent
+        // view (ListView).
+        forceLayout();
+    }
+
+    public void setPhotoPosition(PhotoPosition photoPosition) {
+        mPhotoPosition = photoPosition;
+    }
+
+    public PhotoPosition getPhotoPosition() {
+        return mPhotoPosition;
+    }
+
+    /**
+     * Set drawable resources directly for the drawable resource of the photo view.
+     *
+     * @param drawableId Id of drawable resource.
+     */
+    public void setDrawableResource(int drawableId) {
+        ImageView photo = getPhotoView();
+        photo.setScaleType(ImageView.ScaleType.CENTER);
+        final Drawable drawable = ContextCompat.getDrawable(getContext(), drawableId);
+        final int iconColor =
+                ContextCompat.getColor(getContext(), R.color.search_shortcut_icon_color);
+        if (CompatUtils.isLollipopCompatible()) {
+            photo.setImageDrawable(drawable);
+            photo.setImageTintList(ColorStateList.valueOf(iconColor));
+        } else {
+            final Drawable drawableWrapper = DrawableCompat.wrap(drawable).mutate();
+            DrawableCompat.setTint(drawableWrapper, iconColor);
+            photo.setImageDrawable(drawableWrapper);
+        }
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        final float x = event.getX();
+        final float y = event.getY();
+        // If the touch event's coordinates are not within the view's header, then delegate
+        // to super.onTouchEvent so that regular view behavior is preserved. Otherwise, consume
+        // and ignore the touch event.
+        if (mBoundsWithoutHeader.contains((int) x, (int) y) || !pointIsInView(x, y)) {
+            return super.onTouchEvent(event);
+        } else {
+            return true;
+        }
+    }
+
+    private final boolean pointIsInView(float localX, float localY) {
+        return localX >= mLeftOffset && localX < mRightOffset
+                && localY >= 0 && localY < (getBottom() - getTop());
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java b/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
new file mode 100644
index 0000000..6e8e738
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
@@ -0,0 +1,82 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Color;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewParent;
+import android.widget.LinearLayout.LayoutParams;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.util.ViewUtil;
+
+/**
+ * A custom view for the pinned section header shown at the top of the contact list.
+ */
+public class ContactListPinnedHeaderView extends TextView {
+
+    public ContactListPinnedHeaderView(Context context, AttributeSet attrs, View parent) {
+        super(context, attrs);
+
+        if (R.styleable.ContactListItemView == null) {
+            return;
+        }
+        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.ContactListItemView);
+        int backgroundColor = a.getColor(
+                R.styleable.ContactListItemView_list_item_background_color, Color.WHITE);
+        int textOffsetTop = a.getDimensionPixelSize(
+                R.styleable.ContactListItemView_list_item_text_offset_top, 0);
+        int paddingStartOffset = a.getDimensionPixelSize(
+                R.styleable.ContactListItemView_list_item_padding_left, 0);
+        int textWidth = getResources().getDimensionPixelSize(
+                R.dimen.contact_list_section_header_width);
+        int widthIncludingPadding = paddingStartOffset + textWidth;
+        a.recycle();
+
+        setBackgroundColor(backgroundColor);
+        setTextAppearance(getContext(), R.style.SectionHeaderStyle);
+        setLayoutParams(new LayoutParams(widthIncludingPadding, LayoutParams.WRAP_CONTENT));
+        setLayoutDirection(parent.getLayoutDirection());
+        setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
+
+        // Apply text top offset. Multiply by two, because we are implementing this by padding for a
+        // vertically centered view, rather than adjusting the position directly via a layout.
+        setPaddingRelative(
+                getPaddingStart() + paddingStartOffset,
+                getPaddingTop() + (textOffsetTop * 2),
+                getPaddingEnd(),
+                getPaddingBottom());
+    }
+
+    /**
+     * Sets section header or makes it invisible if the title is null.
+     */
+    public void setSectionHeaderTitle(String title) {
+        if (!TextUtils.isEmpty(title)) {
+            setText(title);
+            setVisibility(View.VISIBLE);
+        } else {
+            setVisibility(View.GONE);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactTileAdapter.java b/src/com/android/contacts/common/list/ContactTileAdapter.java
new file mode 100644
index 0000000..6ce4efb
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactTileAdapter.java
@@ -0,0 +1,632 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.provider.ContactsContract.Contacts;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPresenceIconUtil;
+import com.android.contacts.common.ContactStatusUtil;
+import com.android.contacts.common.ContactTileLoaderFactory;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.R;
+import com.android.contacts.common.util.ViewUtil;
+
+import java.util.ArrayList;
+
+/**
+ * Arranges contacts favorites according to provided {@link DisplayType}.
+ * Also allows for a configurable number of columns and {@link DisplayType}
+ */
+public class ContactTileAdapter extends BaseAdapter {
+    private static final String TAG = ContactTileAdapter.class.getSimpleName();
+
+    private DisplayType mDisplayType;
+    private ContactTileView.Listener mListener;
+    private Context mContext;
+    private Resources mResources;
+    protected Cursor mContactCursor = null;
+    private ContactPhotoManager mPhotoManager;
+    protected int mNumFrequents;
+
+    /**
+     * Index of the first NON starred contact in the {@link Cursor}
+     * Only valid when {@link DisplayType#STREQUENT} is true
+     */
+    private int mDividerPosition;
+    protected int mColumnCount;
+    private int mStarredIndex;
+
+    protected int mIdIndex;
+    protected int mLookupIndex;
+    protected int mPhotoUriIndex;
+    protected int mNameIndex;
+    protected int mPresenceIndex;
+    protected int mStatusIndex;
+
+    private boolean mIsQuickContactEnabled = false;
+    private final int mPaddingInPixels;
+    private final int mWhitespaceStartEnd;
+
+    /**
+     * Configures the adapter to filter and display contacts using different view types.
+     * TODO: Create Uris to support getting Starred_only and Frequent_only cursors.
+     */
+    public enum DisplayType {
+        /**
+         * Displays a mixed view type of starred and frequent contacts
+         */
+        STREQUENT,
+
+        /**
+         * Display only starred contacts
+         */
+        STARRED_ONLY,
+
+        /**
+         * Display only most frequently contacted
+         */
+        FREQUENT_ONLY,
+
+        /**
+         * Display all contacts from a group in the cursor
+         */
+        GROUP_MEMBERS
+    }
+
+    public ContactTileAdapter(Context context, ContactTileView.Listener listener, int numCols,
+            DisplayType displayType) {
+        mListener = listener;
+        mContext = context;
+        mResources = context.getResources();
+        mColumnCount = (displayType == DisplayType.FREQUENT_ONLY ? 1 : numCols);
+        mDisplayType = displayType;
+        mNumFrequents = 0;
+
+        // Converting padding in dips to padding in pixels
+        mPaddingInPixels = mContext.getResources()
+                .getDimensionPixelSize(R.dimen.contact_tile_divider_padding);
+        mWhitespaceStartEnd = mContext.getResources()
+                .getDimensionPixelSize(R.dimen.contact_tile_start_end_whitespace);
+
+        bindColumnIndices();
+    }
+
+    public void setPhotoLoader(ContactPhotoManager photoLoader) {
+        mPhotoManager = photoLoader;
+    }
+
+    public void setColumnCount(int columnCount) {
+        mColumnCount = columnCount;
+    }
+
+    public void setDisplayType(DisplayType displayType) {
+        mDisplayType = displayType;
+    }
+
+    public void enableQuickContact(boolean enableQuickContact) {
+        mIsQuickContactEnabled = enableQuickContact;
+    }
+
+    /**
+     * Sets the column indices for expected {@link Cursor}
+     * based on {@link DisplayType}.
+     */
+    protected void bindColumnIndices() {
+        mIdIndex = ContactTileLoaderFactory.CONTACT_ID;
+        mLookupIndex = ContactTileLoaderFactory.LOOKUP_KEY;
+        mPhotoUriIndex = ContactTileLoaderFactory.PHOTO_URI;
+        mNameIndex = ContactTileLoaderFactory.DISPLAY_NAME;
+        mStarredIndex = ContactTileLoaderFactory.STARRED;
+        mPresenceIndex = ContactTileLoaderFactory.CONTACT_PRESENCE;
+        mStatusIndex = ContactTileLoaderFactory.CONTACT_STATUS;
+    }
+
+    private static boolean cursorIsValid(Cursor cursor) {
+        return cursor != null && !cursor.isClosed();
+    }
+
+    /**
+     * Gets the number of frequents from the passed in cursor.
+     *
+     * This methods is needed so the GroupMemberTileAdapter can override this.
+     *
+     * @param cursor The cursor to get number of frequents from.
+     */
+    protected void saveNumFrequentsFromCursor(Cursor cursor) {
+
+        // count the number of frequents
+        switch (mDisplayType) {
+            case STARRED_ONLY:
+                mNumFrequents = 0;
+                break;
+            case STREQUENT:
+                mNumFrequents = cursorIsValid(cursor) ?
+                    cursor.getCount() - mDividerPosition : 0;
+                break;
+            case FREQUENT_ONLY:
+                mNumFrequents = cursorIsValid(cursor) ? cursor.getCount() : 0;
+                break;
+            default:
+                throw new IllegalArgumentException("Unrecognized DisplayType " + mDisplayType);
+        }
+    }
+
+    /**
+     * Creates {@link ContactTileView}s for each item in {@link Cursor}.
+     *
+     * Else use {@link ContactTileLoaderFactory}
+     */
+    public void setContactCursor(Cursor cursor) {
+        mContactCursor = cursor;
+        mDividerPosition = getDividerPosition(cursor);
+
+        saveNumFrequentsFromCursor(cursor);
+
+        // cause a refresh of any views that rely on this data
+        notifyDataSetChanged();
+    }
+
+    /**
+     * Iterates over the {@link Cursor}
+     * Returns position of the first NON Starred Contact
+     * Returns -1 if {@link DisplayType#STARRED_ONLY}
+     * Returns 0 if {@link DisplayType#FREQUENT_ONLY}
+     */
+    protected int getDividerPosition(Cursor cursor) {
+        switch (mDisplayType) {
+            case STREQUENT:
+                if (!cursorIsValid(cursor)) {
+                    return 0;
+                }
+                cursor.moveToPosition(-1);
+                while (cursor.moveToNext()) {
+                    if (cursor.getInt(mStarredIndex) == 0) {
+                        return cursor.getPosition();
+                    }
+                }
+
+                // There are not NON Starred contacts in cursor
+                // Set divider positon to end
+                return cursor.getCount();
+            case STARRED_ONLY:
+                // There is no divider
+                return -1;
+            case FREQUENT_ONLY:
+                // Divider is first
+                return 0;
+            default:
+                throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType);
+        }
+    }
+
+    protected ContactEntry createContactEntryFromCursor(Cursor cursor, int position) {
+        // If the loader was canceled we will be given a null cursor.
+        // In that case, show an empty list of contacts.
+        if (!cursorIsValid(cursor) || cursor.getCount() <= position) {
+            return null;
+        }
+
+        cursor.moveToPosition(position);
+        long id = cursor.getLong(mIdIndex);
+        String photoUri = cursor.getString(mPhotoUriIndex);
+        String lookupKey = cursor.getString(mLookupIndex);
+
+        ContactEntry contact = new ContactEntry();
+        String name = cursor.getString(mNameIndex);
+        contact.namePrimary = (name != null) ? name : mResources.getString(R.string.missing_name);
+        contact.status = cursor.getString(mStatusIndex);
+        contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
+        contact.lookupKey = lookupKey;
+        contact.lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
+        contact.isFavorite = cursor.getInt(mStarredIndex) > 0;
+
+        // Set presence icon and status message
+        Drawable icon = null;
+        int presence = 0;
+        if (!cursor.isNull(mPresenceIndex)) {
+            presence = cursor.getInt(mPresenceIndex);
+            icon = ContactPresenceIconUtil.getPresenceIcon(mContext, presence);
+        }
+        contact.presenceIcon = icon;
+
+        String statusMessage = null;
+        if (mStatusIndex != 0 && !cursor.isNull(mStatusIndex)) {
+            statusMessage = cursor.getString(mStatusIndex);
+        }
+        // If there is no status message from the contact, but there was a presence value,
+        // then use the default status message string
+        if (statusMessage == null && presence != 0) {
+            statusMessage = ContactStatusUtil.getStatusString(mContext, presence);
+        }
+        contact.status = statusMessage;
+
+        return contact;
+    }
+
+    /**
+     * Returns the number of frequents that will be displayed in the list.
+     */
+    public int getNumFrequents() {
+        return mNumFrequents;
+    }
+
+    @Override
+    public int getCount() {
+        if (!cursorIsValid(mContactCursor)) {
+            return 0;
+        }
+
+        switch (mDisplayType) {
+            case STARRED_ONLY:
+                return getRowCount(mContactCursor.getCount());
+            case STREQUENT:
+                // Takes numbers of rows the Starred Contacts Occupy
+                int starredRowCount = getRowCount(mDividerPosition);
+
+                // Compute the frequent row count which is 1 plus the number of frequents
+                // (to account for the divider) or 0 if there are no frequents.
+                int frequentRowCount = mNumFrequents == 0 ? 0 : mNumFrequents + 1;
+
+                // Return the number of starred plus frequent rows
+                return starredRowCount + frequentRowCount;
+            case FREQUENT_ONLY:
+                // Number of frequent contacts
+                return mContactCursor.getCount();
+            default:
+                throw new IllegalArgumentException("Unrecognized DisplayType " + mDisplayType);
+        }
+    }
+
+    /**
+     * Returns the number of rows required to show the provided number of entries
+     * with the current number of columns.
+     */
+    protected int getRowCount(int entryCount) {
+        return entryCount == 0 ? 0 : ((entryCount - 1) / mColumnCount) + 1;
+    }
+
+    public int getColumnCount() {
+        return mColumnCount;
+    }
+
+    /**
+     * Returns an ArrayList of the {@link ContactEntry}s that are to appear
+     * on the row for the given position.
+     */
+    @Override
+    public ArrayList<ContactEntry> getItem(int position) {
+        ArrayList<ContactEntry> resultList = new ArrayList<ContactEntry>(mColumnCount);
+        int contactIndex = position * mColumnCount;
+
+        switch (mDisplayType) {
+            case FREQUENT_ONLY:
+                resultList.add(createContactEntryFromCursor(mContactCursor, position));
+                break;
+            case STARRED_ONLY:
+                for (int columnCounter = 0; columnCounter < mColumnCount; columnCounter++) {
+                    resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
+                    contactIndex++;
+                }
+                break;
+            case STREQUENT:
+                if (position < getRowCount(mDividerPosition)) {
+                    for (int columnCounter = 0; columnCounter < mColumnCount &&
+                            contactIndex != mDividerPosition; columnCounter++) {
+                        resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
+                        contactIndex++;
+                    }
+                } else {
+                    /*
+                     * Current position minus how many rows are before the divider and
+                     * Minus 1 for the divider itself provides the relative index of the frequent
+                     * contact being displayed. Then add the dividerPostion to give the offset
+                     * into the contacts cursor to get the absoulte index.
+                     */
+                    contactIndex = position - getRowCount(mDividerPosition) - 1 + mDividerPosition;
+                    resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
+                }
+                break;
+            default:
+                throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType);
+        }
+        return resultList;
+    }
+
+    @Override
+    public long getItemId(int position) {
+        // As we show several selectable items for each ListView row,
+        // we can not determine a stable id. But as we don't rely on ListView's selection,
+        // this should not be a problem.
+        return position;
+    }
+
+    @Override
+    public boolean areAllItemsEnabled() {
+        return (mDisplayType != DisplayType.STREQUENT);
+    }
+
+    @Override
+    public boolean isEnabled(int position) {
+        return position != getRowCount(mDividerPosition);
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        int itemViewType = getItemViewType(position);
+
+        if (itemViewType == ViewTypes.DIVIDER) {
+            // Checking For Divider First so not to cast convertView
+            final TextView textView = (TextView) (convertView == null ? getDivider() : convertView);
+            setDividerPadding(textView, position == 0);
+            return textView;
+        }
+
+        ContactTileRow contactTileRowView = (ContactTileRow) convertView;
+        ArrayList<ContactEntry> contactList = getItem(position);
+
+        if (contactTileRowView == null) {
+            // Creating new row if needed
+            contactTileRowView = new ContactTileRow(mContext, itemViewType);
+        }
+
+        contactTileRowView.configureRow(contactList, position == getCount() - 1);
+        return contactTileRowView;
+    }
+
+    /**
+     * Divider uses a list_seperator.xml along with text to denote
+     * the most frequently contacted contacts.
+     */
+    private TextView getDivider() {
+        return MoreContactUtils.createHeaderView(mContext, R.string.favoritesFrequentContacted);
+    }
+
+    private void setDividerPadding(TextView headerTextView, boolean isFirstRow) {
+        MoreContactUtils.setHeaderViewBottomPadding(mContext, headerTextView, isFirstRow);
+    }
+
+    private int getLayoutResourceId(int viewType) {
+        switch (viewType) {
+            case ViewTypes.STARRED:
+                return mIsQuickContactEnabled ?
+                        R.layout.contact_tile_starred_quick_contact : R.layout.contact_tile_starred;
+            case ViewTypes.FREQUENT:
+                return R.layout.contact_tile_frequent;
+            default:
+                throw new IllegalArgumentException("Unrecognized viewType " + viewType);
+        }
+    }
+    @Override
+    public int getViewTypeCount() {
+        return ViewTypes.COUNT;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        /*
+         * Returns view type based on {@link DisplayType}.
+         * {@link DisplayType#STARRED_ONLY} and {@link DisplayType#GROUP_MEMBERS}
+         * are {@link ViewTypes#STARRED}.
+         * {@link DisplayType#FREQUENT_ONLY} is {@link ViewTypes#FREQUENT}.
+         * {@link DisplayType#STREQUENT} mixes both {@link ViewTypes}
+         * and also adds in {@link ViewTypes#DIVIDER}.
+         */
+        switch (mDisplayType) {
+            case STREQUENT:
+                if (position < getRowCount(mDividerPosition)) {
+                    return ViewTypes.STARRED;
+                } else if (position == getRowCount(mDividerPosition)) {
+                    return ViewTypes.DIVIDER;
+                } else {
+                    return ViewTypes.FREQUENT;
+                }
+            case STARRED_ONLY:
+                return ViewTypes.STARRED;
+            case FREQUENT_ONLY:
+                return ViewTypes.FREQUENT;
+            default:
+                throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType);
+        }
+    }
+
+    /**
+     * Returns the "frequent header" position. Only available when STREQUENT or
+     * STREQUENT_PHONE_ONLY is used for its display type.
+     */
+    public int getFrequentHeaderPosition() {
+        return getRowCount(mDividerPosition);
+    }
+
+    /**
+     * Acts as a row item composed of {@link ContactTileView}
+     *
+     * TODO: FREQUENT doesn't really need it.  Just let {@link #getView} return
+     */
+    private class ContactTileRow extends FrameLayout {
+        private int mItemViewType;
+        private int mLayoutResId;
+
+        public ContactTileRow(Context context, int itemViewType) {
+            super(context);
+            mItemViewType = itemViewType;
+            mLayoutResId = getLayoutResourceId(mItemViewType);
+
+            // Remove row (but not children) from accessibility node tree.
+            setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
+        }
+
+        /**
+         * Configures the row to add {@link ContactEntry}s information to the views
+         */
+        public void configureRow(ArrayList<ContactEntry> list, boolean isLastRow) {
+            int columnCount = mItemViewType == ViewTypes.FREQUENT ? 1 : mColumnCount;
+
+            // Adding tiles to row and filling in contact information
+            for (int columnCounter = 0; columnCounter < columnCount; columnCounter++) {
+                ContactEntry entry =
+                        columnCounter < list.size() ? list.get(columnCounter) : null;
+                addTileFromEntry(entry, columnCounter, isLastRow);
+            }
+        }
+
+        private void addTileFromEntry(ContactEntry entry, int childIndex, boolean isLastRow) {
+            final ContactTileView contactTile;
+
+            if (getChildCount() <= childIndex) {
+                contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
+                // Note: the layoutparam set here is only actually used for FREQUENT.
+                // We override onMeasure() for STARRED and we don't care the layout param there.
+                Resources resources = mContext.getResources();
+                FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
+                        ViewGroup.LayoutParams.MATCH_PARENT,
+                        ViewGroup.LayoutParams.WRAP_CONTENT);
+                params.setMargins(
+                        mWhitespaceStartEnd,
+                        0,
+                        mWhitespaceStartEnd,
+                        0);
+                contactTile.setLayoutParams(params);
+                contactTile.setPhotoManager(mPhotoManager);
+                contactTile.setListener(mListener);
+                addView(contactTile);
+            } else {
+                contactTile = (ContactTileView) getChildAt(childIndex);
+            }
+            contactTile.loadFromContact(entry);
+
+            switch (mItemViewType) {
+                case ViewTypes.STARRED:
+                    // Set padding between tiles. Divide mPaddingInPixels between left and right
+                    // tiles as evenly as possible.
+                    contactTile.setPaddingRelative(
+                            (mPaddingInPixels + 1) / 2, 0,
+                            mPaddingInPixels
+                            / 2, 0);
+                    break;
+                case ViewTypes.FREQUENT:
+                    contactTile.setHorizontalDividerVisibility(
+                            isLastRow ? View.GONE : View.VISIBLE);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        @Override
+        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+            switch (mItemViewType) {
+                case ViewTypes.STARRED:
+                    onLayoutForTiles();
+                    return;
+                default:
+                    super.onLayout(changed, left, top, right, bottom);
+                    return;
+            }
+        }
+
+        private void onLayoutForTiles() {
+            final int count = getChildCount();
+
+            // Amount of margin needed on the left is based on difference between offset and padding
+            int childLeft = mWhitespaceStartEnd - (mPaddingInPixels + 1) / 2;
+
+            // Just line up children horizontally.
+            for (int i = 0; i < count; i++) {
+                final int rtlAdjustedIndex = ViewUtil.isViewLayoutRtl(this) ? count - i - 1 : i;
+                final View child = getChildAt(rtlAdjustedIndex);
+
+                // Note MeasuredWidth includes the padding.
+                final int childWidth = child.getMeasuredWidth();
+                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());
+                childLeft += childWidth;
+            }
+        }
+
+        @Override
+        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+            switch (mItemViewType) {
+                case ViewTypes.STARRED:
+                    onMeasureForTiles(widthMeasureSpec);
+                    return;
+                default:
+                    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+                    return;
+            }
+        }
+
+        private void onMeasureForTiles(int widthMeasureSpec) {
+            final int width = MeasureSpec.getSize(widthMeasureSpec);
+
+            final int childCount = getChildCount();
+            if (childCount == 0) {
+                // Just in case...
+                setMeasuredDimension(width, 0);
+                return;
+            }
+
+            // 1. Calculate image size.
+            //      = ([total width] - [total whitespace]) / [child count]
+            //
+            // 2. Set it to width/height of each children.
+            //    If we have a remainder, some tiles will have 1 pixel larger width than its height.
+            //
+            // 3. Set the dimensions of itself.
+            //    Let width = given width.
+            //    Let height = wrap content.
+
+            final int totalWhitespaceInPixels = (mColumnCount - 1) * mPaddingInPixels
+                    + mWhitespaceStartEnd * 2;
+
+            // Preferred width / height for images (excluding the padding).
+            // The actual width may be 1 pixel larger than this if we have a remainder.
+            final int imageSize = (width - totalWhitespaceInPixels) / mColumnCount;
+            final int remainder = width - (imageSize * mColumnCount) - totalWhitespaceInPixels;
+
+            for (int i = 0; i < childCount; i++) {
+                final View child = getChildAt(i);
+                final int childWidth = imageSize + child.getPaddingRight() + child.getPaddingLeft()
+                        // Compensate for the remainder
+                        + (i < remainder ? 1 : 0);
+
+                child.measure(
+                        MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY),
+                        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
+                        );
+            }
+            setMeasuredDimension(width, getChildAt(0).getMeasuredHeight());
+        }
+    }
+
+    protected static class ViewTypes {
+        public static final int COUNT = 4;
+        public static final int STARRED = 0;
+        public static final int DIVIDER = 1;
+        public static final int FREQUENT = 2;
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactTileFrequentView.java b/src/com/android/contacts/common/list/ContactTileFrequentView.java
new file mode 100644
index 0000000..7dcd0a1
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactTileFrequentView.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.list;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import com.android.contacts.common.util.ViewUtil;
+
+/**
+ * A {@link com.android.contacts.common.list.ContactTileView} that is used for most frequently contacted in the People app
+ */
+public class ContactTileFrequentView extends ContactTileView {
+    public ContactTileFrequentView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected boolean isDarkTheme() {
+        return false;
+    }
+
+    @Override
+    protected int getApproximateImageSize() {
+        return ViewUtil.getConstantPreLayoutWidth(getPhotoView());
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactTilePhoneFrequentView.java b/src/com/android/contacts/common/list/ContactTilePhoneFrequentView.java
new file mode 100644
index 0000000..aec93ab
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactTilePhoneFrequentView.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.util.ViewUtil;
+
+/**
+ * A dark version of the {@link com.android.contacts.common.list.ContactTileView} that is used in Dialtacts
+ * for frequently called contacts. Slightly different behavior from superclass...
+ * when you tap it, you want to call the frequently-called number for the
+ * contact, even if that is not the default number for that contact.
+ */
+public class ContactTilePhoneFrequentView extends ContactTileView {
+    private String mPhoneNumberString;
+
+    public ContactTilePhoneFrequentView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected boolean isDarkTheme() {
+        return true;
+    }
+
+    @Override
+    protected int getApproximateImageSize() {
+        return ViewUtil.getConstantPreLayoutWidth(getQuickContact());
+    }
+
+    @Override
+    public void loadFromContact(ContactEntry entry) {
+        super.loadFromContact(entry);
+        mPhoneNumberString = null; // ... in case we're reusing the view
+        if (entry != null) {
+            // Grab the phone-number to call directly... see {@link onClick()}
+            mPhoneNumberString = entry.phoneNumber;
+        }
+    }
+
+    @Override
+    protected OnClickListener createClickListener() {
+        return new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mListener == null) return;
+                if (TextUtils.isEmpty(mPhoneNumberString)) {
+                    // Copy "superclass" implementation
+                    mListener.onContactSelected(getLookupUri(), MoreContactUtils
+                            .getTargetRectFromView(ContactTilePhoneFrequentView.this));
+                } else {
+                    // When you tap a frequently-called contact, you want to
+                    // call them at the number that you usually talk to them
+                    // at (i.e. the one displayed in the UI), regardless of
+                    // whether that's their default number.
+                    mListener.onCallNumberDirectly(mPhoneNumberString);
+                }
+            }
+        };
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactTileStarredView.java b/src/com/android/contacts/common/list/ContactTileStarredView.java
new file mode 100644
index 0000000..59ef81e
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactTileStarredView.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+/**
+ * A {@link ContactTileStarredView} displays the contact's picture overlayed with their name
+ * in a square. The actual dimensions are set by
+ * {@link com.android.contacts.common.list.ContactTileAdapter.ContactTileRow}.
+ */
+public class ContactTileStarredView extends ContactTileView {
+
+    /**
+     * The photo manager should display the default image/letter at 80% of its normal size.
+     */
+    private static final float DEFAULT_IMAGE_LETTER_SCALE = 0.8f;
+
+    public ContactTileStarredView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected boolean isDarkTheme() {
+        return false;
+    }
+
+    @Override
+    protected int getApproximateImageSize() {
+        // The picture is the full size of the tile (minus some padding, but we can be generous)
+        return mListener.getApproximateTileWidth();
+    }
+
+    @Override
+    protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
+        return new DefaultImageRequest(displayName, lookupKey, ContactPhotoManager.TYPE_DEFAULT,
+                DEFAULT_IMAGE_LETTER_SCALE, /* offset = */ 0, /* isCircular = */ true);
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactTileView.java b/src/com/android/contacts/common/list/ContactTileView.java
new file mode 100644
index 0000000..172d720
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactTileView.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.R;
+
+/**
+ * A ContactTile displays a contact's picture and name
+ */
+public abstract class ContactTileView extends FrameLayout {
+    private final static String TAG = ContactTileView.class.getSimpleName();
+
+    private Uri mLookupUri;
+    private ImageView mPhoto;
+    private QuickContactBadge mQuickContact;
+    private TextView mName;
+    private TextView mStatus;
+    private TextView mPhoneLabel;
+    private TextView mPhoneNumber;
+    private ContactPhotoManager mPhotoManager = null;
+    private View mPushState;
+    private View mHorizontalDivider;
+    protected Listener mListener;
+
+    public ContactTileView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mName = (TextView) findViewById(R.id.contact_tile_name);
+
+        mQuickContact = (QuickContactBadge) findViewById(R.id.contact_tile_quick);
+        mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
+        mStatus = (TextView) findViewById(R.id.contact_tile_status);
+        mPhoneLabel = (TextView) findViewById(R.id.contact_tile_phone_type);
+        mPhoneNumber = (TextView) findViewById(R.id.contact_tile_phone_number);
+        mPushState = findViewById(R.id.contact_tile_push_state);
+        mHorizontalDivider = findViewById(R.id.contact_tile_horizontal_divider);
+
+        OnClickListener listener = createClickListener();
+        setOnClickListener(listener);
+    }
+
+    protected OnClickListener createClickListener() {
+        return new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mListener == null) return;
+                mListener.onContactSelected(
+                        getLookupUri(),
+                        MoreContactUtils.getTargetRectFromView(ContactTileView.this));
+            }
+        };
+    }
+
+    public void setPhotoManager(ContactPhotoManager photoManager) {
+        mPhotoManager = photoManager;
+    }
+
+    /**
+     * Populates the data members to be displayed from the
+     * fields in {@link com.android.contacts.common.list.ContactEntry}
+     */
+    public void loadFromContact(ContactEntry entry) {
+
+        if (entry != null) {
+            mName.setText(getNameForView(entry));
+            mLookupUri = entry.lookupUri;
+
+            if (mStatus != null) {
+                if (entry.status == null) {
+                    mStatus.setVisibility(View.GONE);
+                } else {
+                    mStatus.setText(entry.status);
+                    mStatus.setCompoundDrawablesWithIntrinsicBounds(entry.presenceIcon,
+                            null, null, null);
+                    mStatus.setVisibility(View.VISIBLE);
+                }
+            }
+
+            if (mPhoneLabel != null) {
+                if (TextUtils.isEmpty(entry.phoneLabel)) {
+                    mPhoneLabel.setVisibility(View.GONE);
+                } else {
+                    mPhoneLabel.setVisibility(View.VISIBLE);
+                    mPhoneLabel.setText(entry.phoneLabel);
+                }
+            }
+
+            if (mPhoneNumber != null) {
+                // TODO: Format number correctly
+                mPhoneNumber.setText(entry.phoneNumber);
+            }
+
+            setVisibility(View.VISIBLE);
+
+            if (mPhotoManager != null) {
+                DefaultImageRequest request = getDefaultImageRequest(entry.namePrimary,
+                        entry.lookupKey);
+                configureViewForImage(entry.photoUri == null);
+                if (mPhoto != null) {
+                    mPhotoManager.loadPhoto(mPhoto, entry.photoUri, getApproximateImageSize(),
+                            isDarkTheme(), isContactPhotoCircular(), request);
+
+                    if (mQuickContact != null) {
+                        mQuickContact.assignContactUri(mLookupUri);
+                    }
+                } else if (mQuickContact != null) {
+                    mQuickContact.assignContactUri(mLookupUri);
+                    mPhotoManager.loadPhoto(mQuickContact, entry.photoUri,
+                            getApproximateImageSize(), isDarkTheme(), isContactPhotoCircular(),
+                            request);
+                }
+            } else {
+                Log.w(TAG, "contactPhotoManager not set");
+            }
+
+            if (mPushState != null) {
+                mPushState.setContentDescription(entry.namePrimary);
+            } else if (mQuickContact != null) {
+                mQuickContact.setContentDescription(entry.namePrimary);
+            }
+        } else {
+            setVisibility(View.INVISIBLE);
+        }
+    }
+
+    public void setListener(Listener listener) {
+        mListener = listener;
+    }
+
+    public void setHorizontalDividerVisibility(int visibility) {
+        if (mHorizontalDivider != null) mHorizontalDivider.setVisibility(visibility);
+    }
+
+    public Uri getLookupUri() {
+        return mLookupUri;
+    }
+
+    protected QuickContactBadge getQuickContact() {
+        return mQuickContact;
+    }
+
+    protected View getPhotoView() {
+        return mPhoto;
+    }
+
+    /**
+     * Returns the string that should actually be displayed as the contact's name. Subclasses
+     * can override this to return formatted versions of the name - i.e. first name only.
+     */
+    protected String getNameForView(ContactEntry contactEntry) {
+        return contactEntry.namePrimary;
+    }
+
+    /**
+     * Implemented by subclasses to estimate the size of the picture. This can return -1 if only
+     * a thumbnail is shown anyway
+     */
+    protected abstract int getApproximateImageSize();
+
+    protected abstract boolean isDarkTheme();
+
+    /**
+     * Implemented by subclasses to reconfigure the view's layout and subviews, based on whether
+     * or not the contact has a user-defined photo.
+     *
+     * @param isDefaultImage True if the contact does not have a user-defined contact photo
+     * (which means a default contact image will be applied by the {@link ContactPhotoManager}
+     */
+    protected void configureViewForImage(boolean isDefaultImage) {
+        // No-op by default.
+    }
+
+    /**
+     * Implemented by subclasses to allow them to return a {@link DefaultImageRequest} with the
+     * various image parameters defined to match their own layouts.
+     *
+     * @param displayName The display name of the contact
+     * @param lookupKey The lookup key of the contact
+     * @return A {@link DefaultImageRequest} object with each field configured by the subclass
+     * as desired, or {@code null}.
+     */
+    protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
+        return new DefaultImageRequest(displayName, lookupKey, isContactPhotoCircular());
+    }
+
+    /**
+     * Whether contact photo should be displayed as a circular image. Implemented by subclasses
+     * so they can change which drawables to fetch.
+     */
+    protected boolean isContactPhotoCircular() {
+        return true;
+    }
+
+    public interface Listener {
+        /**
+         * Notification that the contact was selected; no specific action is dictated.
+         */
+        void onContactSelected(Uri contactLookupUri, Rect viewRect);
+        /**
+         * Notification that the specified number is to be called.
+         */
+        void onCallNumberDirectly(String phoneNumber);
+        /**
+         * @return The width of each tile. This doesn't have to be a precise number (e.g. paddings
+         *         can be ignored), but is used to load the correct picture size from the database
+         */
+        int getApproximateTileWidth();
+    }
+}
diff --git a/src/com/android/contacts/common/list/ContactsSectionIndexer.java b/src/com/android/contacts/common/list/ContactsSectionIndexer.java
new file mode 100644
index 0000000..db64010
--- /dev/null
+++ b/src/com/android/contacts/common/list/ContactsSectionIndexer.java
@@ -0,0 +1,126 @@
+/*
+ * 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.contacts.common.list;
+
+import android.text.TextUtils;
+import android.widget.SectionIndexer;
+
+import java.util.Arrays;
+
+/**
+ * A section indexer that is configured with precomputed section titles and
+ * their respective counts.
+ */
+public class ContactsSectionIndexer implements SectionIndexer {
+
+    protected static final String BLANK_HEADER_STRING = "\u2026"; // ellipsis
+
+    private String[] mSections;
+    private int[] mPositions;
+    private int mCount;
+
+    /**
+     * Constructor.
+     *
+     * @param sections a non-null array
+     * @param counts a non-null array of the same size as <code>sections</code>
+     */
+    public ContactsSectionIndexer(String[] sections, int[] counts) {
+        if (sections == null || counts == null) {
+            throw new NullPointerException();
+        }
+
+        if (sections.length != counts.length) {
+            throw new IllegalArgumentException(
+                    "The sections and counts arrays must have the same length");
+        }
+
+        // TODO process sections/counts based on current locale and/or specific section titles
+
+        this.mSections = sections;
+        mPositions = new int[counts.length];
+        int position = 0;
+        for (int i = 0; i < counts.length; i++) {
+            if (TextUtils.isEmpty(mSections[i])) {
+                mSections[i] = BLANK_HEADER_STRING;
+            } else if (!mSections[i].equals(BLANK_HEADER_STRING)) {
+                mSections[i] = mSections[i].trim();
+            }
+
+            mPositions[i] = position;
+            position += counts[i];
+        }
+        mCount = position;
+    }
+
+    public Object[] getSections() {
+        return mSections;
+    }
+
+    public int[] getPositions() {
+        return mPositions;
+    }
+
+    public int getPositionForSection(int section) {
+        if (section < 0 || section >= mSections.length) {
+            return -1;
+        }
+
+        return mPositions[section];
+    }
+
+    public int getSectionForPosition(int position) {
+        if (position < 0 || position >= mCount) {
+            return -1;
+        }
+
+        int index = Arrays.binarySearch(mPositions, position);
+
+        /*
+         * Consider this example: section positions are 0, 3, 5; the supplied
+         * position is 4. The section corresponding to position 4 starts at
+         * position 3, so the expected return value is 1. Binary search will not
+         * find 4 in the array and thus will return -insertPosition-1, i.e. -3.
+         * To get from that number to the expected value of 1 we need to negate
+         * and subtract 2.
+         */
+        return index >= 0 ? index : -index - 2;
+    }
+
+    public void setProfileAndFavoritesHeader(String header, int numberOfItemsToAdd) {
+        if (mSections != null) {
+            // Don't do anything if the header is already set properly.
+            if (mSections.length > 0 && header.equals(mSections[0])) {
+                return;
+            }
+
+            // Since the section indexer isn't aware of the profile at the top, we need to add a
+            // special section at the top for it and shift everything else down.
+            String[] tempSections = new String[mSections.length + 1];
+            int[] tempPositions = new int[mPositions.length + 1];
+            tempSections[0] = header;
+            tempPositions[0] = 0;
+            for (int i = 1; i <= mPositions.length; i++) {
+                tempSections[i] = mSections[i - 1];
+                tempPositions[i] = mPositions[i - 1] + numberOfItemsToAdd;
+            }
+            mSections = tempSections;
+            mPositions = tempPositions;
+            mCount = mCount + numberOfItemsToAdd;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/list/CustomContactListFilterActivity.java b/src/com/android/contacts/common/list/CustomContactListFilterActivity.java
new file mode 100644
index 0000000..04337b8
--- /dev/null
+++ b/src/com/android/contacts/common/list/CustomContactListFilterActivity.java
@@ -0,0 +1,948 @@
+/*
+ * 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.contacts.common.list;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.app.ProgressDialog;
+import android.content.AsyncTaskLoader;
+import android.content.ContentProviderOperation;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.Loader;
+import android.content.OperationApplicationException;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.preference.PreferenceManager;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Groups;
+import android.provider.ContactsContract.Settings;
+import android.util.Log;
+import android.view.ContextMenu;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MenuItem.OnMenuItemClickListener;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseExpandableListAdapter;
+import android.widget.CheckBox;
+import android.widget.ExpandableListAdapter;
+import android.widget.ExpandableListView;
+import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.util.EmptyService;
+import com.android.contacts.common.util.LocalizedNameResolver;
+import com.android.contacts.common.util.WeakAsyncTask;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+
+/**
+ * Shows a list of all available {@link Groups} available, letting the user
+ * select which ones they want to be visible.
+ */
+public class CustomContactListFilterActivity extends Activity implements
+        ExpandableListView.OnChildClickListener,
+        LoaderCallbacks<CustomContactListFilterActivity.AccountSet> {
+    private static final String TAG = "CustomContactListFilterActivity";
+
+    private static final int ACCOUNT_SET_LOADER_ID = 1;
+
+    private ExpandableListView mList;
+    private DisplayAdapter mAdapter;
+
+    private SharedPreferences mPrefs;
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        setContentView(R.layout.contact_list_filter_custom);
+
+        mList = (ExpandableListView) findViewById(android.R.id.list);
+        mList.setOnChildClickListener(this);
+        mList.setHeaderDividersEnabled(true);
+        mList.setChildDivider(new ColorDrawable(Color.TRANSPARENT));
+
+        mList.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+            @Override
+            public void onLayoutChange(final View v, final int left, final int top, final int right,
+                    final int bottom, final int oldLeft, final int oldTop, final int oldRight,
+                    final int oldBottom) {
+                mList.setIndicatorBounds(
+                        mList.getWidth() - getResources().getDimensionPixelSize(
+                                R.dimen.contact_filter_indicator_padding_end),
+                        mList.getWidth() - getResources().getDimensionPixelSize(
+                                R.dimen.contact_filter_indicator_padding_start));
+            }
+        });
+
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+        mAdapter = new DisplayAdapter(this);
+
+        mList.setOnCreateContextMenuListener(this);
+
+        mList.setAdapter(mAdapter);
+
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            // android.R.id.home will be triggered in onOptionsItemSelected()
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+    }
+
+    public static class CustomFilterConfigurationLoader extends AsyncTaskLoader<AccountSet> {
+
+        private AccountSet mAccountSet;
+
+        public CustomFilterConfigurationLoader(Context context) {
+            super(context);
+        }
+
+        @Override
+        public AccountSet loadInBackground() {
+            Context context = getContext();
+            final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context);
+            final ContentResolver resolver = context.getContentResolver();
+
+            final AccountSet accounts = new AccountSet();
+            for (AccountWithDataSet account : accountTypes.getAccounts(false)) {
+                final AccountType accountType = accountTypes.getAccountTypeForAccount(account);
+                if (accountType.isExtension() && !account.hasData(context)) {
+                    // Extension with no data -- skip.
+                    continue;
+                }
+
+                AccountDisplay accountDisplay =
+                        new AccountDisplay(resolver, account.name, account.type, account.dataSet);
+
+                final Uri.Builder groupsUri = Groups.CONTENT_URI.buildUpon()
+                        .appendQueryParameter(Groups.ACCOUNT_NAME, account.name)
+                        .appendQueryParameter(Groups.ACCOUNT_TYPE, account.type);
+                if (account.dataSet != null) {
+                    groupsUri.appendQueryParameter(Groups.DATA_SET, account.dataSet).build();
+                }
+                final Cursor cursor = resolver.query(groupsUri.build(), null, null, null, null);
+                if (cursor == null) {
+                    continue;
+                }
+                android.content.EntityIterator iterator =
+                        ContactsContract.Groups.newEntityIterator(cursor);
+                try {
+                    boolean hasGroups = false;
+
+                    // Create entries for each known group
+                    while (iterator.hasNext()) {
+                        final ContentValues values = iterator.next().getEntityValues();
+                        final GroupDelta group = GroupDelta.fromBefore(values);
+                        accountDisplay.addGroup(group);
+                        hasGroups = true;
+                    }
+                    // Create single entry handling ungrouped status
+                    accountDisplay.mUngrouped =
+                        GroupDelta.fromSettings(resolver, account.name, account.type,
+                                account.dataSet, hasGroups);
+                    accountDisplay.addGroup(accountDisplay.mUngrouped);
+                } finally {
+                    iterator.close();
+                }
+
+                accounts.add(accountDisplay);
+            }
+
+            return accounts;
+        }
+
+        @Override
+        public void deliverResult(AccountSet cursor) {
+            if (isReset()) {
+                return;
+            }
+
+            mAccountSet = cursor;
+
+            if (isStarted()) {
+                super.deliverResult(cursor);
+            }
+        }
+
+        @Override
+        protected void onStartLoading() {
+            if (mAccountSet != null) {
+                deliverResult(mAccountSet);
+            }
+            if (takeContentChanged() || mAccountSet == null) {
+                forceLoad();
+            }
+        }
+
+        @Override
+        protected void onStopLoading() {
+            cancelLoad();
+        }
+
+        @Override
+        protected void onReset() {
+            super.onReset();
+            onStopLoading();
+            mAccountSet = null;
+        }
+    }
+
+    @Override
+    protected void onStart() {
+        getLoaderManager().initLoader(ACCOUNT_SET_LOADER_ID, null, this);
+        super.onStart();
+    }
+
+    @Override
+    public Loader<AccountSet> onCreateLoader(int id, Bundle args) {
+        return new CustomFilterConfigurationLoader(this);
+    }
+
+    @Override
+    public void onLoadFinished(Loader<AccountSet> loader, AccountSet data) {
+        mAdapter.setAccounts(data);
+    }
+
+    @Override
+    public void onLoaderReset(Loader<AccountSet> loader) {
+        mAdapter.setAccounts(null);
+    }
+
+    private static final int DEFAULT_SHOULD_SYNC = 1;
+    private static final int DEFAULT_VISIBLE = 0;
+
+    /**
+     * Entry holding any changes to {@link Groups} or {@link Settings} rows,
+     * such as {@link Groups#SHOULD_SYNC} or {@link Groups#GROUP_VISIBLE}.
+     */
+    protected static class GroupDelta extends ValuesDelta {
+        private boolean mUngrouped = false;
+        private boolean mAccountHasGroups;
+
+        private GroupDelta() {
+            super();
+        }
+
+        /**
+         * Build {@link GroupDelta} from the {@link Settings} row for the given
+         * {@link Settings#ACCOUNT_NAME}, {@link Settings#ACCOUNT_TYPE}, and
+         * {@link Settings#DATA_SET}.
+         */
+        public static GroupDelta fromSettings(ContentResolver resolver, String accountName,
+                String accountType, String dataSet, boolean accountHasGroups) {
+            final Uri.Builder settingsUri = Settings.CONTENT_URI.buildUpon()
+                    .appendQueryParameter(Settings.ACCOUNT_NAME, accountName)
+                    .appendQueryParameter(Settings.ACCOUNT_TYPE, accountType);
+            if (dataSet != null) {
+                settingsUri.appendQueryParameter(Settings.DATA_SET, dataSet);
+            }
+            final Cursor cursor = resolver.query(settingsUri.build(), new String[] {
+                    Settings.SHOULD_SYNC, Settings.UNGROUPED_VISIBLE
+            }, null, null, null);
+
+            try {
+                final ContentValues values = new ContentValues();
+                values.put(Settings.ACCOUNT_NAME, accountName);
+                values.put(Settings.ACCOUNT_TYPE, accountType);
+                values.put(Settings.DATA_SET, dataSet);
+
+                if (cursor != null && cursor.moveToFirst()) {
+                    // Read existing values when present
+                    values.put(Settings.SHOULD_SYNC, cursor.getInt(0));
+                    values.put(Settings.UNGROUPED_VISIBLE, cursor.getInt(1));
+                    return fromBefore(values).setUngrouped(accountHasGroups);
+                } else {
+                    // Nothing found, so treat as create
+                    values.put(Settings.SHOULD_SYNC, DEFAULT_SHOULD_SYNC);
+                    values.put(Settings.UNGROUPED_VISIBLE, DEFAULT_VISIBLE);
+                    return fromAfter(values).setUngrouped(accountHasGroups);
+                }
+            } finally {
+                if (cursor != null) cursor.close();
+            }
+        }
+
+        public static GroupDelta fromBefore(ContentValues before) {
+            final GroupDelta entry = new GroupDelta();
+            entry.mBefore = before;
+            entry.mAfter = new ContentValues();
+            return entry;
+        }
+
+        public static GroupDelta fromAfter(ContentValues after) {
+            final GroupDelta entry = new GroupDelta();
+            entry.mBefore = null;
+            entry.mAfter = after;
+            return entry;
+        }
+
+        protected GroupDelta setUngrouped(boolean accountHasGroups) {
+            mUngrouped = true;
+            mAccountHasGroups = accountHasGroups;
+            return this;
+        }
+
+        @Override
+        public boolean beforeExists() {
+            return mBefore != null;
+        }
+
+        public boolean getShouldSync() {
+            return getAsInteger(mUngrouped ? Settings.SHOULD_SYNC : Groups.SHOULD_SYNC,
+                    DEFAULT_SHOULD_SYNC) != 0;
+        }
+
+        public boolean getVisible() {
+            return getAsInteger(mUngrouped ? Settings.UNGROUPED_VISIBLE : Groups.GROUP_VISIBLE,
+                    DEFAULT_VISIBLE) != 0;
+        }
+
+        public void putShouldSync(boolean shouldSync) {
+            put(mUngrouped ? Settings.SHOULD_SYNC : Groups.SHOULD_SYNC, shouldSync ? 1 : 0);
+        }
+
+        public void putVisible(boolean visible) {
+            put(mUngrouped ? Settings.UNGROUPED_VISIBLE : Groups.GROUP_VISIBLE, visible ? 1 : 0);
+        }
+
+        private String getAccountType() {
+            return (mBefore == null ? mAfter : mBefore).getAsString(Settings.ACCOUNT_TYPE);
+        }
+
+        public CharSequence getTitle(Context context) {
+            if (mUngrouped) {
+                final String customAllContactsName =
+                        LocalizedNameResolver.getAllContactsName(context, getAccountType());
+                if (customAllContactsName != null) {
+                    return customAllContactsName;
+                }
+                if (mAccountHasGroups) {
+                    return context.getText(R.string.display_ungrouped);
+                } else {
+                    return context.getText(R.string.display_all_contacts);
+                }
+            } else {
+                final Integer titleRes = getAsInteger(Groups.TITLE_RES);
+                if (titleRes != null) {
+                    final String packageName = getAsString(Groups.RES_PACKAGE);
+                    return context.getPackageManager().getText(packageName, titleRes, null);
+                } else {
+                    return getAsString(Groups.TITLE);
+                }
+            }
+        }
+
+        /**
+         * Build a possible {@link ContentProviderOperation} to persist any
+         * changes to the {@link Groups} or {@link Settings} row described by
+         * this {@link GroupDelta}.
+         */
+        public ContentProviderOperation buildDiff() {
+            if (isInsert()) {
+                // Only allow inserts for Settings
+                if (mUngrouped) {
+                    mAfter.remove(mIdColumn);
+                    return ContentProviderOperation.newInsert(Settings.CONTENT_URI)
+                            .withValues(mAfter)
+                            .build();
+                }
+                else {
+                    throw new IllegalStateException("Unexpected diff");
+                }
+            } else if (isUpdate()) {
+                if (mUngrouped) {
+                    String accountName = this.getAsString(Settings.ACCOUNT_NAME);
+                    String accountType = this.getAsString(Settings.ACCOUNT_TYPE);
+                    String dataSet = this.getAsString(Settings.DATA_SET);
+                    StringBuilder selection = new StringBuilder(Settings.ACCOUNT_NAME + "=? AND "
+                            + Settings.ACCOUNT_TYPE + "=?");
+                    String[] selectionArgs;
+                    if (dataSet == null) {
+                        selection.append(" AND " + Settings.DATA_SET + " IS NULL");
+                        selectionArgs = new String[] {accountName, accountType};
+                    } else {
+                        selection.append(" AND " + Settings.DATA_SET + "=?");
+                        selectionArgs = new String[] {accountName, accountType, dataSet};
+                    }
+                    return ContentProviderOperation.newUpdate(Settings.CONTENT_URI)
+                            .withSelection(selection.toString(), selectionArgs)
+                            .withValues(mAfter)
+                            .build();
+                } else {
+                    return ContentProviderOperation.newUpdate(
+                                    addCallerIsSyncAdapterParameter(Groups.CONTENT_URI))
+                            .withSelection(Groups._ID + "=" + this.getId(), null)
+                            .withValues(mAfter)
+                            .build();
+                }
+            } else {
+                return null;
+            }
+        }
+    }
+
+    private static Uri addCallerIsSyncAdapterParameter(Uri uri) {
+        return uri.buildUpon()
+            .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
+            .build();
+    }
+
+    /**
+     * {@link Comparator} to sort by {@link Groups#_ID}.
+     */
+    private static Comparator<GroupDelta> sIdComparator = new Comparator<GroupDelta>() {
+        public int compare(GroupDelta object1, GroupDelta object2) {
+            final Long id1 = object1.getId();
+            final Long id2 = object2.getId();
+            if (id1 == null && id2 == null) {
+                return 0;
+            } else if (id1 == null) {
+                return -1;
+            } else if (id2 == null) {
+                return 1;
+            } else if (id1 < id2) {
+                return -1;
+            } else if (id1 > id2) {
+                return 1;
+            } else {
+                return 0;
+            }
+        }
+    };
+
+    /**
+     * Set of all {@link AccountDisplay} entries, one for each source.
+     */
+    protected static class AccountSet extends ArrayList<AccountDisplay> {
+        public ArrayList<ContentProviderOperation> buildDiff() {
+            final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
+            for (AccountDisplay account : this) {
+                account.buildDiff(diff);
+            }
+            return diff;
+        }
+    }
+
+    /**
+     * {@link GroupDelta} details for a single {@link AccountWithDataSet}, usually shown as
+     * children under a single expandable group.
+     */
+    protected static class AccountDisplay {
+        public final String mName;
+        public final String mType;
+        public final String mDataSet;
+
+        public GroupDelta mUngrouped;
+        public ArrayList<GroupDelta> mSyncedGroups = Lists.newArrayList();
+        public ArrayList<GroupDelta> mUnsyncedGroups = Lists.newArrayList();
+
+        /**
+         * Build an {@link AccountDisplay} covering all {@link Groups} under the
+         * given {@link AccountWithDataSet}.
+         */
+        public AccountDisplay(ContentResolver resolver, String accountName, String accountType,
+                String dataSet) {
+            mName = accountName;
+            mType = accountType;
+            mDataSet = dataSet;
+        }
+
+        /**
+         * Add the given {@link GroupDelta} internally, filing based on its
+         * {@link GroupDelta#getShouldSync()} status.
+         */
+        private void addGroup(GroupDelta group) {
+            if (group.getShouldSync()) {
+                mSyncedGroups.add(group);
+            } else {
+                mUnsyncedGroups.add(group);
+            }
+        }
+
+        /**
+         * Set the {@link GroupDelta#putShouldSync(boolean)} value for all
+         * children {@link GroupDelta} rows.
+         */
+        public void setShouldSync(boolean shouldSync) {
+            final Iterator<GroupDelta> oppositeChildren = shouldSync ?
+                    mUnsyncedGroups.iterator() : mSyncedGroups.iterator();
+            while (oppositeChildren.hasNext()) {
+                final GroupDelta child = oppositeChildren.next();
+                setShouldSync(child, shouldSync, false);
+                oppositeChildren.remove();
+            }
+        }
+
+        public void setShouldSync(GroupDelta child, boolean shouldSync) {
+            setShouldSync(child, shouldSync, true);
+        }
+
+        /**
+         * Set {@link GroupDelta#putShouldSync(boolean)}, and file internally
+         * based on updated state.
+         */
+        public void setShouldSync(GroupDelta child, boolean shouldSync, boolean attemptRemove) {
+            child.putShouldSync(shouldSync);
+            if (shouldSync) {
+                if (attemptRemove) {
+                    mUnsyncedGroups.remove(child);
+                }
+                mSyncedGroups.add(child);
+                Collections.sort(mSyncedGroups, sIdComparator);
+            } else {
+                if (attemptRemove) {
+                    mSyncedGroups.remove(child);
+                }
+                mUnsyncedGroups.add(child);
+            }
+        }
+
+        /**
+         * Build set of {@link ContentProviderOperation} to persist any user
+         * changes to {@link GroupDelta} rows under this {@link AccountWithDataSet}.
+         */
+        public void buildDiff(ArrayList<ContentProviderOperation> diff) {
+            for (GroupDelta group : mSyncedGroups) {
+                final ContentProviderOperation oper = group.buildDiff();
+                if (oper != null) diff.add(oper);
+            }
+            for (GroupDelta group : mUnsyncedGroups) {
+                final ContentProviderOperation oper = group.buildDiff();
+                if (oper != null) diff.add(oper);
+            }
+        }
+    }
+
+    /**
+     * {@link ExpandableListAdapter} that shows {@link GroupDelta} settings,
+     * grouped by {@link AccountWithDataSet} type. Shows footer row when any groups are
+     * unsynced, as determined through {@link AccountDisplay#mUnsyncedGroups}.
+     */
+    protected static class DisplayAdapter extends BaseExpandableListAdapter {
+        private Context mContext;
+        private LayoutInflater mInflater;
+        private AccountTypeManager mAccountTypes;
+        private AccountSet mAccounts;
+
+        private boolean mChildWithPhones = false;
+
+        public DisplayAdapter(Context context) {
+            mContext = context;
+            mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            mAccountTypes = AccountTypeManager.getInstance(context);
+        }
+
+        public void setAccounts(AccountSet accounts) {
+            mAccounts = accounts;
+            notifyDataSetChanged();
+        }
+
+        /**
+         * In group descriptions, show the number of contacts with phone
+         * numbers, in addition to the total contacts.
+         */
+        public void setChildDescripWithPhones(boolean withPhones) {
+            mChildWithPhones = withPhones;
+        }
+
+        @Override
+        public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
+                ViewGroup parent) {
+            if (convertView == null) {
+                convertView = mInflater.inflate(
+                        R.layout.custom_contact_list_filter_account, parent, false);
+            }
+
+            final TextView text1 = (TextView)convertView.findViewById(android.R.id.text1);
+            final TextView text2 = (TextView)convertView.findViewById(android.R.id.text2);
+
+            final AccountDisplay account = (AccountDisplay)this.getGroup(groupPosition);
+
+            final AccountType accountType = mAccountTypes.getAccountType(
+                    account.mType, account.mDataSet);
+
+            text1.setText(account.mName);
+            text1.setVisibility(account.mName == null ? View.GONE : View.VISIBLE);
+            text2.setText(accountType.getDisplayLabel(mContext));
+
+            final int textColor = mContext.getResources().getColor(isExpanded
+                    ? R.color.dialtacts_theme_color
+                    : R.color.account_filter_text_color);
+            text1.setTextColor(textColor);
+            text2.setTextColor(textColor);
+
+            return convertView;
+        }
+
+        @Override
+        public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
+                View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = mInflater.inflate(
+                        R.layout.custom_contact_list_filter_group, parent, false);
+            }
+
+            final TextView text1 = (TextView)convertView.findViewById(android.R.id.text1);
+            final TextView text2 = (TextView)convertView.findViewById(android.R.id.text2);
+            final CheckBox checkbox = (CheckBox)convertView.findViewById(android.R.id.checkbox);
+
+            final AccountDisplay account = mAccounts.get(groupPosition);
+            final GroupDelta child = (GroupDelta)this.getChild(groupPosition, childPosition);
+            if (child != null) {
+                // Handle normal group, with title and checkbox
+                final boolean groupVisible = child.getVisible();
+                checkbox.setVisibility(View.VISIBLE);
+                checkbox.setChecked(groupVisible);
+
+                final CharSequence groupTitle = child.getTitle(mContext);
+                text1.setText(groupTitle);
+                text2.setVisibility(View.GONE);
+            } else {
+                // When unknown child, this is "more" footer view
+                checkbox.setVisibility(View.GONE);
+                text1.setText(R.string.display_more_groups);
+                text2.setVisibility(View.GONE);
+            }
+
+            // Show divider at bottom only for the last child.
+            final View dividerBottom = convertView.findViewById(R.id.adapter_divider_bottom);
+            dividerBottom.setVisibility(isLastChild ? View.VISIBLE : View.GONE);
+
+            return convertView;
+        }
+
+        @Override
+        public Object getChild(int groupPosition, int childPosition) {
+            final AccountDisplay account = mAccounts.get(groupPosition);
+            final boolean validChild = childPosition >= 0
+                    && childPosition < account.mSyncedGroups.size();
+            if (validChild) {
+                return account.mSyncedGroups.get(childPosition);
+            } else {
+                return null;
+            }
+        }
+
+        @Override
+        public long getChildId(int groupPosition, int childPosition) {
+            final GroupDelta child = (GroupDelta)getChild(groupPosition, childPosition);
+            if (child != null) {
+                final Long childId = child.getId();
+                return childId != null ? childId : Long.MIN_VALUE;
+            } else {
+                return Long.MIN_VALUE;
+            }
+        }
+
+        @Override
+        public int getChildrenCount(int groupPosition) {
+            // Count is any synced groups, plus possible footer
+            final AccountDisplay account = mAccounts.get(groupPosition);
+            final boolean anyHidden = account.mUnsyncedGroups.size() > 0;
+            return account.mSyncedGroups.size() + (anyHidden ? 1 : 0);
+        }
+
+        @Override
+        public Object getGroup(int groupPosition) {
+            return mAccounts.get(groupPosition);
+        }
+
+        @Override
+        public int getGroupCount() {
+            if (mAccounts == null) {
+                return 0;
+            }
+            return mAccounts.size();
+        }
+
+        @Override
+        public long getGroupId(int groupPosition) {
+            return groupPosition;
+        }
+
+        @Override
+        public boolean hasStableIds() {
+            return true;
+        }
+
+        @Override
+        public boolean isChildSelectable(int groupPosition, int childPosition) {
+            return true;
+        }
+    }
+
+    /**
+     * Handle any clicks on {@link ExpandableListAdapter} children, which
+     * usually mean toggling its visible state.
+     */
+    @Override
+    public boolean onChildClick(ExpandableListView parent, View view, int groupPosition,
+            int childPosition, long id) {
+        final CheckBox checkbox = (CheckBox)view.findViewById(android.R.id.checkbox);
+
+        final AccountDisplay account = (AccountDisplay)mAdapter.getGroup(groupPosition);
+        final GroupDelta child = (GroupDelta)mAdapter.getChild(groupPosition, childPosition);
+        if (child != null) {
+            checkbox.toggle();
+            child.putVisible(checkbox.isChecked());
+        } else {
+            // Open context menu for bringing back unsynced
+            this.openContextMenu(view);
+        }
+        return true;
+    }
+
+    // TODO: move these definitions to framework constants when we begin
+    // defining this mode through <sync-adapter> tags
+    private static final int SYNC_MODE_UNSUPPORTED = 0;
+    private static final int SYNC_MODE_UNGROUPED = 1;
+    private static final int SYNC_MODE_EVERYTHING = 2;
+
+    protected int getSyncMode(AccountDisplay account) {
+        // TODO: read sync mode through <sync-adapter> definition
+        if (GoogleAccountType.ACCOUNT_TYPE.equals(account.mType) && account.mDataSet == null) {
+            return SYNC_MODE_EVERYTHING;
+        } else {
+            return SYNC_MODE_UNSUPPORTED;
+        }
+    }
+
+    @Override
+    public void onCreateContextMenu(ContextMenu menu, View view,
+            ContextMenu.ContextMenuInfo menuInfo) {
+        super.onCreateContextMenu(menu, view, menuInfo);
+
+        // Bail if not working with expandable long-press, or if not child
+        if (!(menuInfo instanceof ExpandableListContextMenuInfo)) return;
+
+        final ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
+        final int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);
+        final int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition);
+
+        // Skip long-press on expandable parents
+        if (childPosition == -1) return;
+
+        final AccountDisplay account = (AccountDisplay)mAdapter.getGroup(groupPosition);
+        final GroupDelta child = (GroupDelta)mAdapter.getChild(groupPosition, childPosition);
+
+        // Ignore when selective syncing unsupported
+        final int syncMode = getSyncMode(account);
+        if (syncMode == SYNC_MODE_UNSUPPORTED) return;
+
+        if (child != null) {
+            showRemoveSync(menu, account, child, syncMode);
+        } else {
+            showAddSync(menu, account, syncMode);
+        }
+    }
+
+    protected void showRemoveSync(ContextMenu menu, final AccountDisplay account,
+            final GroupDelta child, final int syncMode) {
+        final CharSequence title = child.getTitle(this);
+
+        menu.setHeaderTitle(title);
+        menu.add(R.string.menu_sync_remove).setOnMenuItemClickListener(
+                new OnMenuItemClickListener() {
+                    public boolean onMenuItemClick(MenuItem item) {
+                        handleRemoveSync(account, child, syncMode, title);
+                        return true;
+                    }
+                });
+    }
+
+    protected void handleRemoveSync(final AccountDisplay account, final GroupDelta child,
+            final int syncMode, CharSequence title) {
+        final boolean shouldSyncUngrouped = account.mUngrouped.getShouldSync();
+        if (syncMode == SYNC_MODE_EVERYTHING && shouldSyncUngrouped
+                && !child.equals(account.mUngrouped)) {
+            // Warn before removing this group when it would cause ungrouped to stop syncing
+            final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            final CharSequence removeMessage = this.getString(
+                    R.string.display_warn_remove_ungrouped, title);
+            builder.setTitle(R.string.menu_sync_remove);
+            builder.setMessage(removeMessage);
+            builder.setNegativeButton(android.R.string.cancel, null);
+            builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+                public void onClick(DialogInterface dialog, int which) {
+                    // Mark both this group and ungrouped to stop syncing
+                    account.setShouldSync(account.mUngrouped, false);
+                    account.setShouldSync(child, false);
+                    mAdapter.notifyDataSetChanged();
+                }
+            });
+            builder.show();
+        } else {
+            // Mark this group to not sync
+            account.setShouldSync(child, false);
+            mAdapter.notifyDataSetChanged();
+        }
+    }
+
+    protected void showAddSync(ContextMenu menu, final AccountDisplay account, final int syncMode) {
+        menu.setHeaderTitle(R.string.dialog_sync_add);
+
+        // Create item for each available, unsynced group
+        for (final GroupDelta child : account.mUnsyncedGroups) {
+            if (!child.getShouldSync()) {
+                final CharSequence title = child.getTitle(this);
+                menu.add(title).setOnMenuItemClickListener(new OnMenuItemClickListener() {
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Adding specific group for syncing
+                        if (child.mUngrouped && syncMode == SYNC_MODE_EVERYTHING) {
+                            account.setShouldSync(true);
+                        } else {
+                            account.setShouldSync(child, true);
+                        }
+                        mAdapter.notifyDataSetChanged();
+                        return true;
+                    }
+                });
+            }
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private void doSaveAction() {
+        if (mAdapter == null || mAdapter.mAccounts == null) {
+            finish();
+            return;
+        }
+
+        setResult(RESULT_OK);
+
+        final ArrayList<ContentProviderOperation> diff = mAdapter.mAccounts.buildDiff();
+        if (diff.isEmpty()) {
+            finish();
+            return;
+        }
+
+        new UpdateTask(this).execute(diff);
+    }
+
+    /**
+     * Background task that persists changes to {@link Groups#GROUP_VISIBLE},
+     * showing spinner dialog to user while updating.
+     */
+    public static class UpdateTask extends
+            WeakAsyncTask<ArrayList<ContentProviderOperation>, Void, Void, Activity> {
+        private ProgressDialog mProgress;
+
+        public UpdateTask(Activity target) {
+            super(target);
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        protected void onPreExecute(Activity target) {
+            final Context context = target;
+
+            mProgress = ProgressDialog.show(
+                    context, null, context.getText(R.string.savingDisplayGroups));
+
+            // Before starting this task, start an empty service to protect our
+            // process from being reclaimed by the system.
+            context.startService(new Intent(context, EmptyService.class));
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        protected Void doInBackground(
+                Activity target, ArrayList<ContentProviderOperation>... params) {
+            final Context context = target;
+            final ContentValues values = new ContentValues();
+            final ContentResolver resolver = context.getContentResolver();
+
+            try {
+                final ArrayList<ContentProviderOperation> diff = params[0];
+                resolver.applyBatch(ContactsContract.AUTHORITY, diff);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Problem saving display groups", e);
+            } catch (OperationApplicationException e) {
+                Log.e(TAG, "Problem saving display groups", e);
+            }
+
+            return null;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        protected void onPostExecute(Activity target, Void result) {
+            final Context context = target;
+
+            try {
+                mProgress.dismiss();
+            } catch (Exception e) {
+                Log.e(TAG, "Error dismissing progress dialog", e);
+            }
+
+            target.finish();
+
+            // Stop the service that was protecting us
+            context.stopService(new Intent(context, EmptyService.class));
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        super.onCreateOptionsMenu(menu);
+
+        final MenuItem menuItem = menu.add(Menu.NONE, R.id.menu_save, Menu.NONE,
+                R.string.menu_custom_filter_save);
+        menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                // Pretend cancel.
+                setResult(Activity.RESULT_CANCELED);
+                finish();
+                return true;
+            case R.id.menu_save:
+                this.doSaveAction();
+                return true;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/src/com/android/contacts/common/list/DefaultContactListAdapter.java b/src/com/android/contacts/common/list/DefaultContactListAdapter.java
new file mode 100644
index 0000000..994fe1a
--- /dev/null
+++ b/src/com/android/contacts/common/list/DefaultContactListAdapter.java
@@ -0,0 +1,297 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.net.Uri;
+import android.net.Uri.Builder;
+import android.preference.PreferenceManager;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.provider.ContactsContract.RawContacts;
+import android.provider.ContactsContract.SearchSnippets;
+import android.text.TextUtils;
+import android.view.View;
+
+import com.android.contacts.common.Experiments;
+import com.android.contacts.common.compat.ContactsCompat;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.commonbind.experiments.Flags;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type.
+ */
+public class DefaultContactListAdapter extends ContactListAdapter {
+
+    public static final char SNIPPET_START_MATCH = '[';
+    public static final char SNIPPET_END_MATCH = ']';
+
+    // Contacts contacted within the last 3 days (in seconds)
+    private static final long LAST_TIME_USED_3_DAYS_SEC = 3L * 24 * 60 * 60;
+
+    // Contacts contacted within the last 7 days (in seconds)
+    private static final long LAST_TIME_USED_7_DAYS_SEC = 7L * 24 * 60 * 60;
+
+    // Contacts contacted within the last 14 days (in seconds)
+    private static final long LAST_TIME_USED_14_DAYS_SEC = 14L * 24 * 60 * 60;
+
+    // Contacts contacted within the last 30 days (in seconds)
+    private static final long LAST_TIME_USED_30_DAYS_SEC = 30L * 24 * 60 * 60;
+
+    private static final String TIME_SINCE_LAST_USED_SEC =
+            "(strftime('%s', 'now') - " + Contacts.LAST_TIME_CONTACTED + "/1000)";
+
+    private static final String STREQUENT_SORT =
+            "(CASE WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_3_DAYS_SEC +
+                    " THEN 0 " +
+                    " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_7_DAYS_SEC +
+                    " THEN 1 " +
+                    " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_14_DAYS_SEC +
+                    " THEN 2 " +
+                    " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_30_DAYS_SEC +
+                    " THEN 3 " +
+                    " ELSE 4 END), " +
+                    Contacts.TIMES_CONTACTED + " DESC, " +
+                    Contacts.STARRED + " DESC";
+
+    public DefaultContactListAdapter(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void configureLoader(CursorLoader loader, long directoryId) {
+        if (loader instanceof FavoritesAndContactsLoader) {
+            ((FavoritesAndContactsLoader) loader).setLoadFavorites(shouldIncludeFavorites());
+        }
+
+        String sortOrder = null;
+        if (isSearchMode()) {
+            String query = getQueryString();
+            if (query == null) query = "";
+            query = query.trim();
+            if (TextUtils.isEmpty(query)) {
+                // Regardless of the directory, we don't want anything returned,
+                // so let's just send a "nothing" query to the local directory.
+                loader.setUri(Contacts.CONTENT_URI);
+                loader.setProjection(getProjection(false));
+                loader.setSelection("0");
+            } else if (isGroupMembersFilter()) {
+                final ContactListFilter filter = getFilter();
+                configureUri(loader, directoryId, filter);
+                // TODO: This is not the normal type to filter URI so we load the non-search
+                // projection. Consider creating a specific group member adapter to make it more
+                // clear.
+                loader.setProjection(getProjection(/* forSearch */ false));
+                loader.setSelection(
+                        Contacts.DISPLAY_NAME_PRIMARY + " LIKE ?1 OR " +
+                        Contacts.DISPLAY_NAME_ALTERNATIVE + " LIKE ?1");
+                final String[] args = new String[1];
+                args[0] = query + "%";
+                loader.setSelectionArgs(args);
+            } else {
+                final Builder builder = ContactsCompat.getContentUri().buildUpon();
+                appendSearchParameters(builder, query, directoryId);
+                loader.setUri(builder.build());
+                loader.setProjection(getProjection(true));
+                sortOrder = STREQUENT_SORT;
+            }
+        } else {
+            final ContactListFilter filter = getFilter();
+            configureUri(loader, directoryId, filter);
+            if (filter != null
+                    && filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
+                loader.setProjection(getDataProjectionForContacts(false));
+            } else {
+                loader.setProjection(getProjection(false));
+            }
+            configureSelection(loader, directoryId, filter);
+        }
+
+        if (getSortOrder() == ContactsPreferences.SORT_ORDER_PRIMARY) {
+            if (sortOrder == null) {
+                sortOrder = Contacts.SORT_KEY_PRIMARY;
+            } else {
+                sortOrder += ", " + Contacts.SORT_KEY_PRIMARY;
+            }
+        } else {
+            if (sortOrder == null) {
+                sortOrder = Contacts.SORT_KEY_ALTERNATIVE;
+            } else {
+                sortOrder += ", " + Contacts.SORT_KEY_ALTERNATIVE;
+            }
+        }
+        loader.setSortOrder(sortOrder);
+    }
+
+    private boolean isGroupMembersFilter() {
+        final ContactListFilter filter = getFilter();
+        return filter != null && filter.filterType == ContactListFilter.FILTER_TYPE_GROUP_MEMBERS;
+    }
+
+    private void appendSearchParameters(Builder builder, String query, long directoryId) {
+        builder.appendPath(query); // Builder will encode the query
+        builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                String.valueOf(directoryId));
+        if (directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE) {
+            builder.appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
+                    String.valueOf(getDirectoryResultLimit(getDirectoryById(directoryId))));
+        }
+        builder.appendQueryParameter(SearchSnippets.DEFERRED_SNIPPETING_KEY, "1");
+    }
+
+    protected void configureUri(CursorLoader loader, long directoryId, ContactListFilter filter) {
+        Uri uri = Contacts.CONTENT_URI;
+        if (filter != null) {
+            if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
+                String lookupKey = getSelectedContactLookupKey();
+                if (lookupKey != null) {
+                    uri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey);
+                } else {
+                    uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, getSelectedContactId());
+                }
+            } else if (filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
+                uri = Data.CONTENT_URI;
+            }
+        }
+
+        if (directoryId == Directory.DEFAULT && isSectionHeaderDisplayEnabled()) {
+            uri = ContactListAdapter.buildSectionIndexerUri(uri);
+        }
+
+        // The "All accounts" filter is the same as the entire contents of Directory.DEFAULT
+        if (filter != null
+                && filter.filterType != ContactListFilter.FILTER_TYPE_CUSTOM
+                && filter.filterType != ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
+            final Uri.Builder builder = uri.buildUpon();
+            builder.appendQueryParameter(
+                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
+            if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT
+                || filter.filterType == ContactListFilter.FILTER_TYPE_GROUP_MEMBERS) {
+                filter.addAccountQueryParameterToUrl(builder);
+            }
+            uri = builder.build();
+        }
+
+        loader.setUri(uri);
+    }
+
+    private void configureSelection(
+            CursorLoader loader, long directoryId, ContactListFilter filter) {
+        if (filter == null) {
+            return;
+        }
+
+        if (directoryId != Directory.DEFAULT) {
+            return;
+        }
+
+        StringBuilder selection = new StringBuilder();
+        List<String> selectionArgs = new ArrayList<String>();
+
+        switch (filter.filterType) {
+            case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
+                // We have already added directory=0 to the URI, which takes care of this
+                // filter
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {
+                // We have already added the lookup key to the URI, which takes care of this
+                // filter
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_STARRED: {
+                selection.append(Contacts.STARRED + "!=0");
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
+                selection.append(Contacts.HAS_PHONE_NUMBER + "=1");
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_CUSTOM: {
+                selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
+                if (isCustomFilterForPhoneNumbersOnly()) {
+                    selection.append(" AND " + Contacts.HAS_PHONE_NUMBER + "=1");
+                }
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_ACCOUNT: {
+                // We use query parameters for account filter, so no selection to add here.
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_GROUP_MEMBERS: {
+                // TODO(wjang): check if we need it
+                // selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS: {
+                selection.append(AccountWithDataSet.LOCAL_ACCOUNT_SELECTION);
+                break;
+            }
+        }
+        loader.setSelection(selection.toString());
+        loader.setSelectionArgs(selectionArgs.toArray(new String[0]));
+    }
+
+    @Override
+    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
+        super.bindView(itemView, partition, cursor, position);
+        final ContactListItemView view = (ContactListItemView)itemView;
+
+        view.setHighlightedPrefix(isSearchMode() ? getUpperCaseQueryString() : null);
+
+        if (isSelectionVisible()) {
+            view.setActivated(isSelectedContact(partition, cursor));
+        }
+
+        bindSectionHeaderAndDivider(view, position, cursor);
+
+        if (isQuickContactEnabled()) {
+            bindQuickContact(view, partition, cursor, ContactQuery.CONTACT_PHOTO_ID,
+                    ContactQuery.CONTACT_PHOTO_URI, ContactQuery.CONTACT_ID,
+                    ContactQuery.CONTACT_LOOKUP_KEY, ContactQuery.CONTACT_DISPLAY_NAME);
+        } else {
+            if (getDisplayPhotos()) {
+                bindPhoto(view, partition, cursor);
+            }
+        }
+
+        bindNameAndViewId(view, cursor);
+        bindPresenceAndStatusMessage(view, cursor);
+
+        if (isSearchMode()) {
+            bindSearchSnippet(view, cursor);
+        } else {
+            view.setSnippet(null);
+        }
+    }
+
+    private boolean isCustomFilterForPhoneNumbersOnly() {
+        // TODO: this flag should not be stored in shared prefs.  It needs to be in the db.
+        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+        return prefs.getBoolean(ContactsPreferences.PREF_DISPLAY_ONLY_PHONES,
+                ContactsPreferences.PREF_DISPLAY_ONLY_PHONES_DEFAULT);
+    }
+}
diff --git a/src/com/android/contacts/common/list/DirectoryListLoader.java b/src/com/android/contacts/common/list/DirectoryListLoader.java
new file mode 100644
index 0000000..c45a3ca
--- /dev/null
+++ b/src/com/android/contacts/common/list/DirectoryListLoader.java
@@ -0,0 +1,217 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Directory;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.DirectoryCompat;
+
+/**
+ * A specialized loader for the list of directories, see {@link Directory}.
+ */
+public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
+
+    private static final String TAG = "ContactEntryListAdapter";
+
+    public static final int SEARCH_MODE_NONE = 0;
+    public static final int SEARCH_MODE_DEFAULT = 1;
+    public static final int SEARCH_MODE_CONTACT_SHORTCUT = 2;
+    public static final int SEARCH_MODE_DATA_SHORTCUT = 3;
+
+    private static final class DirectoryQuery {
+        public static final String ORDER_BY = Directory._ID;
+
+        public static final String[] PROJECTION = {
+            Directory._ID,
+            Directory.PACKAGE_NAME,
+            Directory.TYPE_RESOURCE_ID,
+            Directory.DISPLAY_NAME,
+            Directory.PHOTO_SUPPORT,
+        };
+
+        public static final int ID = 0;
+        public static final int PACKAGE_NAME = 1;
+        public static final int TYPE_RESOURCE_ID = 2;
+        public static final int DISPLAY_NAME = 3;
+        public static final int PHOTO_SUPPORT = 4;
+
+        public static Uri getDirectoryUri(int mode) {
+            if (mode == SEARCH_MODE_DATA_SHORTCUT || mode == SEARCH_MODE_CONTACT_SHORTCUT) {
+                return Directory.CONTENT_URI;
+            } else {
+                return DirectoryCompat.getContentUri();
+            }
+        }
+    }
+
+    // This is a virtual column created for a MatrixCursor.
+    public static final String DIRECTORY_TYPE = "directoryType";
+
+    private static final String[] RESULT_PROJECTION = {
+        Directory._ID,
+        DIRECTORY_TYPE,
+        Directory.DISPLAY_NAME,
+        Directory.PHOTO_SUPPORT,
+    };
+
+    private final ContentObserver mObserver = new ContentObserver(new Handler()) {
+        @Override
+        public void onChange(boolean selfChange) {
+            forceLoad();
+        }
+    };
+
+    private int mDirectorySearchMode;
+    private boolean mLocalInvisibleDirectoryEnabled;
+
+    private MatrixCursor mDefaultDirectoryList;
+
+    public DirectoryListLoader(Context context) {
+        super(context);
+    }
+
+    public void setDirectorySearchMode(int mode) {
+        mDirectorySearchMode = mode;
+    }
+
+    /**
+     * A flag that indicates whether the {@link Directory#LOCAL_INVISIBLE} directory should
+     * be included in the results.
+     */
+    public void setLocalInvisibleDirectoryEnabled(boolean flag) {
+        this.mLocalInvisibleDirectoryEnabled = flag;
+    }
+
+    @Override
+    protected void onStartLoading() {
+        getContext().getContentResolver().
+                registerContentObserver(DirectoryQuery.getDirectoryUri(mDirectorySearchMode),
+                        false, mObserver);
+        forceLoad();
+    }
+
+    @Override
+    protected void onStopLoading() {
+        getContext().getContentResolver().unregisterContentObserver(mObserver);
+    }
+
+    @Override
+    public Cursor loadInBackground() {
+        if (mDirectorySearchMode == SEARCH_MODE_NONE) {
+            return getDefaultDirectories();
+        }
+
+        MatrixCursor result = new MatrixCursor(RESULT_PROJECTION);
+        Context context = getContext();
+        PackageManager pm = context.getPackageManager();
+        String selection;
+        switch (mDirectorySearchMode) {
+            case SEARCH_MODE_DEFAULT:
+                selection = null;
+                break;
+
+            case SEARCH_MODE_CONTACT_SHORTCUT:
+                selection = Directory.SHORTCUT_SUPPORT + "=" + Directory.SHORTCUT_SUPPORT_FULL;
+                break;
+
+            case SEARCH_MODE_DATA_SHORTCUT:
+                selection = Directory.SHORTCUT_SUPPORT + " IN ("
+                        + Directory.SHORTCUT_SUPPORT_FULL + ", "
+                        + Directory.SHORTCUT_SUPPORT_DATA_ITEMS_ONLY + ")";
+                break;
+
+            default:
+                throw new RuntimeException(
+                        "Unsupported directory search mode: " + mDirectorySearchMode);
+        }
+        Cursor cursor = null;
+        try {
+            cursor = context.getContentResolver().query(
+                    DirectoryQuery.getDirectoryUri(mDirectorySearchMode),
+                    DirectoryQuery.PROJECTION, selection, null, DirectoryQuery.ORDER_BY);
+
+            if (cursor == null) {
+                return result;
+            }
+
+            while(cursor.moveToNext()) {
+                long directoryId = cursor.getLong(DirectoryQuery.ID);
+                if (!mLocalInvisibleDirectoryEnabled
+                        && DirectoryCompat.isInvisibleDirectory(directoryId)) {
+                    continue;
+                }
+                String directoryType = null;
+
+                String packageName = cursor.getString(DirectoryQuery.PACKAGE_NAME);
+                int typeResourceId = cursor.getInt(DirectoryQuery.TYPE_RESOURCE_ID);
+                if (!TextUtils.isEmpty(packageName) && typeResourceId != 0) {
+                    try {
+                        directoryType = pm.getResourcesForApplication(packageName)
+                                .getString(typeResourceId);
+                    } catch (Exception e) {
+                        Log.e(TAG, "Cannot obtain directory type from package: " + packageName);
+                    }
+                }
+                String displayName = cursor.getString(DirectoryQuery.DISPLAY_NAME);
+                int photoSupport = cursor.getInt(DirectoryQuery.PHOTO_SUPPORT);
+                result.addRow(new Object[]{directoryId, directoryType, displayName, photoSupport});
+            }
+        } catch (RuntimeException e) {
+            Log.w(TAG, "Runtime Exception when querying directory");
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+
+        return result;
+    }
+
+    private Cursor getDefaultDirectories() {
+        if (mDefaultDirectoryList == null) {
+            mDefaultDirectoryList = new MatrixCursor(RESULT_PROJECTION);
+            mDefaultDirectoryList.addRow(new Object[] {
+                    Directory.DEFAULT,
+                    getContext().getString(R.string.contactsList),
+                    null
+            });
+            mDefaultDirectoryList.addRow(new Object[] {
+                    Directory.LOCAL_INVISIBLE,
+                    getContext().getString(R.string.local_invisible_directory),
+                    null
+            });
+        }
+        return mDefaultDirectoryList;
+    }
+
+    @Override
+    protected void onReset() {
+        stopLoading();
+    }
+}
diff --git a/src/com/android/contacts/common/list/DirectoryPartition.java b/src/com/android/contacts/common/list/DirectoryPartition.java
new file mode 100644
index 0000000..ca0dc11
--- /dev/null
+++ b/src/com/android/contacts/common/list/DirectoryPartition.java
@@ -0,0 +1,179 @@
+/*
+ * 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.contacts.common.list;
+
+import android.provider.ContactsContract.Directory;
+
+import com.android.common.widget.CompositeCursorAdapter;
+
+/**
+ * Model object for a {@link Directory} row.
+ */
+public final class DirectoryPartition extends CompositeCursorAdapter.Partition {
+
+    public static final int STATUS_NOT_LOADED = 0;
+    public static final int STATUS_LOADING = 1;
+    public static final int STATUS_LOADED = 2;
+
+    public static final int RESULT_LIMIT_DEFAULT = -1;
+
+    private long mDirectoryId;
+    private String mContentUri;
+    private String mDirectoryType;
+    private String mDisplayName;
+    private int mStatus;
+    private boolean mPriorityDirectory;
+    private boolean mPhotoSupported;
+    private int mResultLimit = RESULT_LIMIT_DEFAULT;
+    private boolean mDisplayNumber = true;
+
+    private String mLabel;
+
+    public DirectoryPartition(boolean showIfEmpty, boolean hasHeader) {
+        super(showIfEmpty, hasHeader);
+    }
+
+    /**
+     * Directory ID, see {@link Directory}.
+     */
+    public long getDirectoryId() {
+        return mDirectoryId;
+    }
+
+    public void setDirectoryId(long directoryId) {
+        this.mDirectoryId = directoryId;
+    }
+
+    /**
+     * Directory type resolved from {@link Directory#PACKAGE_NAME} and
+     * {@link Directory#TYPE_RESOURCE_ID};
+     */
+    public String getDirectoryType() {
+        return mDirectoryType;
+    }
+
+    public void setDirectoryType(String directoryType) {
+        this.mDirectoryType = directoryType;
+    }
+
+    /**
+     * See {@link Directory#DISPLAY_NAME}.
+     */
+    public String getDisplayName() {
+        return mDisplayName;
+    }
+
+    public void setDisplayName(String displayName) {
+        this.mDisplayName = displayName;
+    }
+
+    public int getStatus() {
+        return mStatus;
+    }
+
+    public void setStatus(int status) {
+        mStatus = status;
+    }
+
+    public boolean isLoading() {
+        return mStatus == STATUS_NOT_LOADED || mStatus == STATUS_LOADING;
+    }
+
+    /**
+     * Returns true if this directory should be loaded before non-priority directories.
+     */
+    public boolean isPriorityDirectory() {
+        return mPriorityDirectory;
+    }
+
+    public void setPriorityDirectory(boolean priorityDirectory) {
+        mPriorityDirectory = priorityDirectory;
+    }
+
+    /**
+     * Returns true if this directory supports photos.
+     */
+    public boolean isPhotoSupported() {
+        return mPhotoSupported;
+    }
+
+    public void setPhotoSupported(boolean flag) {
+        this.mPhotoSupported = flag;
+    }
+
+    /**
+     * Max number of results for this directory. Defaults to {@link #RESULT_LIMIT_DEFAULT} which
+     * implies using the adapter's
+     * {@link com.android.contacts.common.list.ContactListAdapter#getDirectoryResultLimit()}
+     */
+    public int getResultLimit() {
+        return mResultLimit;
+    }
+
+    public void setResultLimit(int resultLimit) {
+        mResultLimit = resultLimit;
+    }
+
+    /**
+     * Used by extended directories to specify a custom content URI. Extended directories MUST have
+     * a content URI
+     */
+    public String getContentUri() {
+        return mContentUri;
+    }
+
+    public void setContentUri(String contentUri) {
+        mContentUri = contentUri;
+    }
+
+    /**
+     * A label to display in the header next to the display name.
+     */
+    public String getLabel() {
+        return mLabel;
+    }
+
+    public void setLabel(String label) {
+        mLabel = label;
+    }
+
+    @Override
+    public String toString() {
+        return "DirectoryPartition{" +
+                "mDirectoryId=" + mDirectoryId +
+                ", mContentUri='" + mContentUri + '\'' +
+                ", mDirectoryType='" + mDirectoryType + '\'' +
+                ", mDisplayName='" + mDisplayName + '\'' +
+                ", mStatus=" + mStatus +
+                ", mPriorityDirectory=" + mPriorityDirectory +
+                ", mPhotoSupported=" + mPhotoSupported +
+                ", mResultLimit=" + mResultLimit +
+                ", mLabel='" + mLabel + '\'' +
+                '}';
+    }
+
+    /**
+     * Whether or not to display the phone number in app that have that option - Dialer. If false,
+     * Phone Label should be used instead of Phone Number.
+     */
+    public boolean isDisplayNumber() {
+        return mDisplayNumber;
+    }
+
+    public void setDisplayNumber(boolean displayNumber) {
+        mDisplayNumber = displayNumber;
+    }
+}
diff --git a/src/com/android/contacts/common/list/FavoritesAndContactsLoader.java b/src/com/android/contacts/common/list/FavoritesAndContactsLoader.java
new file mode 100644
index 0000000..d1ae911
--- /dev/null
+++ b/src/com/android/contacts/common/list/FavoritesAndContactsLoader.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.database.MergeCursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract.Contacts;
+
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * A loader for use in the default contact list, which will also query for favorite contacts
+ * if configured to do so.
+ */
+public class FavoritesAndContactsLoader extends CursorLoader {
+
+    private boolean mLoadFavorites;
+
+    private String[] mProjection;
+
+    private Uri mExtraUri;
+    private String[] mExtraProjection;
+    private String mExtraSelection;
+    private String[] mExtraSelectionArgs;
+    private boolean mMergeExtraContactsAfterPrimary;
+
+    public FavoritesAndContactsLoader(Context context) {
+        super(context);
+    }
+
+    /** Whether to load favorites and merge results in before any other results. */
+    public void setLoadFavorites(boolean flag) {
+        mLoadFavorites = flag;
+    }
+
+    public void setProjection(String[] projection) {
+        super.setProjection(projection);
+        mProjection = projection;
+    }
+
+    /** Configure an extra query and merge results in before the primary results. */
+    public void setLoadExtraContactsFirst(Uri uri, String[] projection) {
+        mExtraUri = uri;
+        mExtraProjection = projection;
+        mMergeExtraContactsAfterPrimary = false;
+    }
+
+    /** Configure an extra query and merge results in after the primary results. */
+    public void setLoadExtraContactsLast(Uri uri, String[] projection, String selection,
+            String[] selectionArgs) {
+        mExtraUri = uri;
+        mExtraProjection = projection;
+        mExtraSelection = selection;
+        mExtraSelectionArgs = selectionArgs;
+        mMergeExtraContactsAfterPrimary = true;
+    }
+
+    private boolean canLoadExtraContacts() {
+        return mExtraUri != null && mExtraProjection != null;
+    }
+
+    @Override
+    public Cursor loadInBackground() {
+        List<Cursor> cursors = Lists.newArrayList();
+        if (mLoadFavorites) {
+            cursors.add(loadFavoritesContacts());
+        }
+        if (canLoadExtraContacts() && !mMergeExtraContactsAfterPrimary) {
+            cursors.add(loadExtraContacts());
+        }
+        // ContactsCursor.loadInBackground() can return null; MergeCursor
+        // correctly handles null cursors.
+        Cursor cursor = null;
+        try {
+            cursor = super.loadInBackground();
+        } catch (NullPointerException | SecurityException e) {
+            // Ignore NPEs and SecurityExceptions thrown by providers
+        }
+        final Cursor contactsCursor = cursor;
+        cursors.add(contactsCursor);
+        if (canLoadExtraContacts() && mMergeExtraContactsAfterPrimary) {
+            cursors.add(loadExtraContacts());
+        }
+        return new MergeCursor(cursors.toArray(new Cursor[cursors.size()])) {
+            @Override
+            public Bundle getExtras() {
+                // Need to get the extras from the contacts cursor.
+                return contactsCursor == null ? new Bundle() : contactsCursor.getExtras();
+            }
+        };
+    }
+
+    private Cursor loadExtraContacts() {
+        return getContext().getContentResolver().query(
+                mExtraUri, mExtraProjection, mExtraSelection, mExtraSelectionArgs, null);
+    }
+
+    private Cursor loadFavoritesContacts() {
+        return getContext().getContentResolver().query(
+                Contacts.CONTENT_URI, mProjection, Contacts.STARRED + "=?", new String[]{"1"},
+                getSortOrder());
+    }
+}
diff --git a/src/com/android/contacts/common/list/IndexerListAdapter.java b/src/com/android/contacts/common/list/IndexerListAdapter.java
new file mode 100644
index 0000000..032bb53
--- /dev/null
+++ b/src/com/android/contacts/common/list/IndexerListAdapter.java
@@ -0,0 +1,226 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ListView;
+import android.widget.SectionIndexer;
+
+/**
+ * A list adapter that supports section indexer and a pinned header.
+ */
+public abstract class IndexerListAdapter extends PinnedHeaderListAdapter implements SectionIndexer {
+
+    protected Context mContext;
+    private SectionIndexer mIndexer;
+    private int mIndexedPartition = 0;
+    private boolean mSectionHeaderDisplayEnabled;
+    private View mHeader;
+
+    /**
+     * An item view is displayed differently depending on whether it is placed
+     * at the beginning, middle or end of a section. It also needs to know the
+     * section header when it is at the beginning of a section. This object
+     * captures all this configuration.
+     */
+    public static final class Placement {
+        private int position = ListView.INVALID_POSITION;
+        public boolean firstInSection;
+        public boolean lastInSection;
+        public String sectionHeader;
+
+        public void invalidate() {
+            position = ListView.INVALID_POSITION;
+        }
+    }
+
+    private Placement mPlacementCache = new Placement();
+
+    /**
+     * Constructor.
+     */
+    public IndexerListAdapter(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    /**
+     * Creates a section header view that will be pinned at the top of the list
+     * as the user scrolls.
+     */
+    protected abstract View createPinnedSectionHeaderView(Context context, ViewGroup parent);
+
+    /**
+     * Sets the title in the pinned header as the user scrolls.
+     */
+    protected abstract void setPinnedSectionTitle(View pinnedHeaderView, String title);
+
+    public boolean isSectionHeaderDisplayEnabled() {
+        return mSectionHeaderDisplayEnabled;
+    }
+
+    public void setSectionHeaderDisplayEnabled(boolean flag) {
+        this.mSectionHeaderDisplayEnabled = flag;
+    }
+
+    public int getIndexedPartition() {
+        return mIndexedPartition;
+    }
+
+    public void setIndexedPartition(int partition) {
+        this.mIndexedPartition = partition;
+    }
+
+    public SectionIndexer getIndexer() {
+        return mIndexer;
+    }
+
+    public void setIndexer(SectionIndexer indexer) {
+        mIndexer = indexer;
+        mPlacementCache.invalidate();
+    }
+
+    public Object[] getSections() {
+        if (mIndexer == null) {
+            return new String[] { " " };
+        } else {
+            return mIndexer.getSections();
+        }
+    }
+
+    /**
+     * @return relative position of the section in the indexed partition
+     */
+    public int getPositionForSection(int sectionIndex) {
+        if (mIndexer == null) {
+            return -1;
+        }
+
+        return mIndexer.getPositionForSection(sectionIndex);
+    }
+
+    /**
+     * @param position relative position in the indexed partition
+     */
+    public int getSectionForPosition(int position) {
+        if (mIndexer == null) {
+            return -1;
+        }
+
+        return mIndexer.getSectionForPosition(position);
+    }
+
+    @Override
+    public int getPinnedHeaderCount() {
+        if (isSectionHeaderDisplayEnabled()) {
+            return super.getPinnedHeaderCount() + 1;
+        } else {
+            return super.getPinnedHeaderCount();
+        }
+    }
+
+    @Override
+    public View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent) {
+        if (isSectionHeaderDisplayEnabled() && viewIndex == getPinnedHeaderCount() - 1) {
+            if (mHeader == null) {
+                mHeader = createPinnedSectionHeaderView(mContext, parent);
+            }
+            return mHeader;
+        } else {
+            return super.getPinnedHeaderView(viewIndex, convertView, parent);
+        }
+    }
+
+    @Override
+    public void configurePinnedHeaders(PinnedHeaderListView listView) {
+        super.configurePinnedHeaders(listView);
+
+        if (!isSectionHeaderDisplayEnabled()) {
+            return;
+        }
+
+        int index = getPinnedHeaderCount() - 1;
+        if (mIndexer == null || getCount() == 0) {
+            listView.setHeaderInvisible(index, false);
+        } else {
+            int listPosition = listView.getPositionAt(listView.getTotalTopPinnedHeaderHeight());
+            int position = listPosition - listView.getHeaderViewsCount();
+
+            int section = -1;
+            int partition = getPartitionForPosition(position);
+            if (partition == mIndexedPartition) {
+                int offset = getOffsetInPartition(position);
+                if (offset != -1) {
+                    section = getSectionForPosition(offset);
+                }
+            }
+
+            if (section == -1) {
+                listView.setHeaderInvisible(index, false);
+            } else {
+                View topChild = listView.getChildAt(listPosition);
+                if (topChild != null) {
+                    // Match the pinned header's height to the height of the list item.
+                    mHeader.setMinimumHeight(topChild.getMeasuredHeight());
+                }
+                setPinnedSectionTitle(mHeader, (String)mIndexer.getSections()[section]);
+
+                // Compute the item position where the current partition begins
+                int partitionStart = getPositionForPartition(mIndexedPartition);
+                if (hasHeader(mIndexedPartition)) {
+                    partitionStart++;
+                }
+
+                // Compute the item position where the next section begins
+                int nextSectionPosition = partitionStart + getPositionForSection(section + 1);
+                boolean isLastInSection = position == nextSectionPosition - 1;
+                listView.setFadingHeader(index, listPosition, isLastInSection);
+            }
+        }
+    }
+
+    /**
+     * Computes the item's placement within its section and populates the {@code placement}
+     * object accordingly.  Please note that the returned object is volatile and should be
+     * copied if the result needs to be used later.
+     */
+    public Placement getItemPlacementInSection(int position) {
+        if (mPlacementCache.position == position) {
+            return mPlacementCache;
+        }
+
+        mPlacementCache.position = position;
+        if (isSectionHeaderDisplayEnabled()) {
+            int section = getSectionForPosition(position);
+            if (section != -1 && getPositionForSection(section) == position) {
+                mPlacementCache.firstInSection = true;
+                mPlacementCache.sectionHeader = (String)getSections()[section];
+            } else {
+                mPlacementCache.firstInSection = false;
+                mPlacementCache.sectionHeader = null;
+            }
+
+            mPlacementCache.lastInSection = (getPositionForSection(section + 1) - 1 == position);
+        } else {
+            mPlacementCache.firstInSection = false;
+            mPlacementCache.lastInSection = false;
+            mPlacementCache.sectionHeader = null;
+        }
+        return mPlacementCache;
+    }
+}
diff --git a/src/com/android/contacts/common/list/MultiSelectEntryContactListAdapter.java b/src/com/android/contacts/common/list/MultiSelectEntryContactListAdapter.java
new file mode 100644
index 0000000..9ab6e1c
--- /dev/null
+++ b/src/com/android/contacts/common/list/MultiSelectEntryContactListAdapter.java
@@ -0,0 +1,199 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.provider.ContactsContract;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.CheckBox;
+
+import java.util.TreeSet;
+
+/**
+ * An extension of the default contact adapter that adds checkboxes and the ability
+ * to select multiple contacts.
+ */
+public abstract class MultiSelectEntryContactListAdapter extends ContactEntryListAdapter {
+
+    private SelectedContactsListener mSelectedContactsListener;
+    private DeleteContactListener mDeleteContactListener;
+    private TreeSet<Long> mSelectedContactIds = new TreeSet<Long>();
+    private boolean mDisplayCheckBoxes;
+    private final int mContactIdColumnIndex;
+
+    public interface SelectedContactsListener {
+        void onSelectedContactsChanged();
+        void onSelectedContactsChangedViaCheckBox();
+    }
+
+    public interface DeleteContactListener {
+        void onContactDeleteClicked(int position);
+    }
+
+    /**
+     * @param contactIdColumnIndex the column index of the contact ID in the underlying cursor;
+     *         it is passed in so that this adapter can support different kinds of contact
+     *         lists (e.g. aggregate contacts or raw contacts).
+     */
+    public MultiSelectEntryContactListAdapter(Context context, int contactIdColumnIndex) {
+        super(context);
+        mContactIdColumnIndex = contactIdColumnIndex;
+    }
+
+    /**
+     * Returns the column index of the contact ID in the underlying cursor; the contact ID
+     * retrieved using this index is the value that is selected by this adapter (and returned
+     * by {@link #getSelectedContactIds}).
+     */
+    public int getContactColumnIdIndex() {
+        return mContactIdColumnIndex;
+    }
+
+    public DeleteContactListener getDeleteContactListener() {
+        return mDeleteContactListener;
+    }
+
+    public void setDeleteContactListener(DeleteContactListener deleteContactListener) {
+        mDeleteContactListener = deleteContactListener;
+    }
+
+    public void setSelectedContactsListener(SelectedContactsListener listener) {
+        mSelectedContactsListener = listener;
+    }
+
+    /**
+     * Returns set of selected contacts.
+     */
+    public TreeSet<Long> getSelectedContactIds() {
+        return mSelectedContactIds;
+    }
+
+    /**
+     * Returns the selected contacts as an array.
+     */
+    public long[] getSelectedContactIdsArray() {
+        final Long[] contactIds = mSelectedContactIds.toArray(
+                new Long[mSelectedContactIds.size()]);
+        final long[] result = new long[contactIds.length];
+        for (int i = 0; i < contactIds.length; i++) {
+            result[i] = contactIds[i];
+        }
+        return result;
+    }
+
+    /**
+     * Update set of selected contacts. This changes which checkboxes are set.
+     */
+    public void setSelectedContactIds(TreeSet<Long> selectedContactIds) {
+        this.mSelectedContactIds = selectedContactIds;
+        notifyDataSetChanged();
+        if (mSelectedContactsListener != null) {
+            mSelectedContactsListener.onSelectedContactsChanged();
+        }
+    }
+
+    /**
+     * Shows checkboxes beside contacts if {@param displayCheckBoxes} is {@code TRUE}.
+     * Not guaranteed to work with all configurations of this adapter.
+     */
+    public void setDisplayCheckBoxes(boolean showCheckBoxes) {
+        if (!mDisplayCheckBoxes && showCheckBoxes) {
+            setSelectedContactIds(new TreeSet<Long>());
+        }
+        mDisplayCheckBoxes = showCheckBoxes;
+        notifyDataSetChanged();
+        if (mSelectedContactsListener != null) {
+            mSelectedContactsListener.onSelectedContactsChanged();
+        }
+    }
+
+    /**
+     * Checkboxes are being displayed beside contacts.
+     */
+    public boolean isDisplayingCheckBoxes() {
+        return mDisplayCheckBoxes;
+    }
+
+    /**
+     * Toggle the checkbox beside the contact for {@param contactId}.
+     */
+    public void toggleSelectionOfContactId(long contactId) {
+        if (mSelectedContactIds.contains(contactId)) {
+            mSelectedContactIds.remove(contactId);
+        } else {
+            mSelectedContactIds.add(contactId);
+        }
+        notifyDataSetChanged();
+        if (mSelectedContactsListener != null) {
+            mSelectedContactsListener.onSelectedContactsChanged();
+        }
+    }
+
+    @Override
+    public long getItemId(int position) {
+        Cursor cursor = (Cursor) getItem(position);
+        if (cursor != null) {
+            return cursor.getLong(getContactColumnIdIndex());
+        }
+        return 0;
+     }
+
+    @Override
+    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
+        super.bindView(itemView, partition, cursor, position);
+        final ContactListItemView view = (ContactListItemView) itemView;
+        bindViewId(view, cursor, getContactColumnIdIndex());
+        bindCheckBox(view, cursor, position, partition == ContactsContract.Directory.DEFAULT);
+    }
+
+    private void bindCheckBox(ContactListItemView view, Cursor cursor, int position,
+            boolean isLocalDirectory) {
+        // Disable clicking on all contacts from remote directories when showing check boxes. We do
+        // this by telling the view to handle clicking itself.
+        view.setClickable(!isLocalDirectory && mDisplayCheckBoxes);
+        // Only show checkboxes if mDisplayCheckBoxes is enabled. Also, never show the
+        // checkbox for other directory contacts except local directory.
+        if (!mDisplayCheckBoxes || !isLocalDirectory) {
+            view.hideCheckBox();
+            return;
+        }
+        final CheckBox checkBox = view.getCheckBox();
+        final long contactId = cursor.getLong(mContactIdColumnIndex);
+        checkBox.setChecked(mSelectedContactIds.contains(contactId));
+        checkBox.setTag(contactId);
+        checkBox.setOnClickListener(mCheckBoxClickListener);
+    }
+
+    private final OnClickListener mCheckBoxClickListener = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            final CheckBox checkBox = (CheckBox) v;
+            final Long contactId = (Long) checkBox.getTag();
+            if (checkBox.isChecked()) {
+                mSelectedContactIds.add(contactId);
+            } else {
+                mSelectedContactIds.remove(contactId);
+            }
+            notifyDataSetChanged();
+            if (mSelectedContactsListener != null) {
+                mSelectedContactsListener.onSelectedContactsChangedViaCheckBox();
+            }
+        }
+    };
+}
diff --git a/src/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java b/src/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
new file mode 100644
index 0000000..fe23054
--- /dev/null
+++ b/src/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
@@ -0,0 +1,48 @@
+/*
+ * 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.contacts.common.list;
+
+import android.app.ActionBar;
+import android.content.Intent;
+import android.net.Uri;
+
+/**
+ * Action callbacks that can be sent by a phone number picker.
+ */
+public interface OnPhoneNumberPickerActionListener  {
+    public static final int CALL_INITIATION_UNKNOWN = 0;
+
+    /**
+     * Returns the selected phone number uri to the requester.
+     */
+    void onPickDataUri(Uri dataUri, boolean isVideoCall, int callInitiationType);
+
+    /**
+     * Returns the specified phone number to the requester.
+     * May call the specified phone number, either as an audio or video call.
+     */
+    void onPickPhoneNumber(String phoneNumber, boolean isVideoCall, int callInitiationType);
+
+    /**
+     * Returns the selected number as a shortcut intent.
+     */
+    void onShortcutIntentCreated(Intent intent);
+
+    /**
+     * Called when home menu in {@link ActionBar} is clicked by the user.
+     */
+    void onHomeInActionBarSelected();
+}
diff --git a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
new file mode 100644
index 0000000..348cac2
--- /dev/null
+++ b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -0,0 +1,657 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.net.Uri.Builder;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Callable;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CallableCompat;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.DirectoryCompat;
+import com.android.contacts.common.compat.PhoneCompat;
+import com.android.contacts.common.extensions.ExtendedPhoneDirectoriesManager;
+import com.android.contacts.common.extensions.ExtensionsFactory;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.util.Constants;
+
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A cursor adapter for the {@link Phone#CONTENT_ITEM_TYPE} and
+ * {@link SipAddress#CONTENT_ITEM_TYPE}.
+ *
+ * By default this adapter just handles phone numbers. When {@link #setUseCallableUri(boolean)} is
+ * called with "true", this adapter starts handling SIP addresses too, by using {@link Callable}
+ * API instead of {@link Phone}.
+ */
+public class PhoneNumberListAdapter extends ContactEntryListAdapter {
+
+    private static final String TAG = PhoneNumberListAdapter.class.getSimpleName();
+
+    public interface Listener {
+        void onVideoCallIconClicked(int position);
+    }
+
+    // A list of extended directories to add to the directories from the database
+    private final List<DirectoryPartition> mExtendedDirectories;
+
+    // Extended directories will have ID's that are higher than any of the id's from the database,
+    // so that we can identify them and set them up properly. If no extended directories
+    // exist, this will be Long.MAX_VALUE
+    private long mFirstExtendedDirectoryId = Long.MAX_VALUE;
+
+    public static class PhoneQuery {
+
+        /**
+         * Optional key used as part of a JSON lookup key to specify an analytics category
+         * associated with the row.
+         */
+        public static final String ANALYTICS_CATEGORY = "analytics_category";
+
+        /**
+         * Optional key used as part of a JSON lookup key to specify an analytics action associated
+         * with the row.
+         */
+        public static final String ANALYTICS_ACTION = "analytics_action";
+
+        /**
+         * Optional key used as part of a JSON lookup key to specify an analytics value associated
+         * with the row.
+         */
+        public static final String ANALYTICS_VALUE = "analytics_value";
+
+        public static final String[] PROJECTION_PRIMARY_INTERNAL = new String[] {
+            Phone._ID,                          // 0
+            Phone.TYPE,                         // 1
+            Phone.LABEL,                        // 2
+            Phone.NUMBER,                       // 3
+            Phone.CONTACT_ID,                   // 4
+            Phone.LOOKUP_KEY,                   // 5
+            Phone.PHOTO_ID,                     // 6
+            Phone.DISPLAY_NAME_PRIMARY,         // 7
+            Phone.PHOTO_THUMBNAIL_URI,          // 8
+        };
+
+        public static final String[] PROJECTION_PRIMARY;
+
+        static {
+            final List<String> projectionList = Lists.newArrayList(PROJECTION_PRIMARY_INTERNAL);
+            if (CompatUtils.isMarshmallowCompatible()) {
+                projectionList.add(Phone.CARRIER_PRESENCE); // 9
+            }
+            PROJECTION_PRIMARY = projectionList.toArray(new String[projectionList.size()]);
+        }
+
+        public static final String[] PROJECTION_ALTERNATIVE_INTERNAL = new String[] {
+            Phone._ID,                          // 0
+            Phone.TYPE,                         // 1
+            Phone.LABEL,                        // 2
+            Phone.NUMBER,                       // 3
+            Phone.CONTACT_ID,                   // 4
+            Phone.LOOKUP_KEY,                   // 5
+            Phone.PHOTO_ID,                     // 6
+            Phone.DISPLAY_NAME_ALTERNATIVE,     // 7
+            Phone.PHOTO_THUMBNAIL_URI,          // 8
+        };
+
+        public static final String[] PROJECTION_ALTERNATIVE;
+
+        static {
+            final List<String> projectionList = Lists.newArrayList(PROJECTION_ALTERNATIVE_INTERNAL);
+            if (CompatUtils.isMarshmallowCompatible()) {
+                projectionList.add(Phone.CARRIER_PRESENCE); // 9
+            }
+            PROJECTION_ALTERNATIVE = projectionList.toArray(new String[projectionList.size()]);
+        }
+
+        public static final int PHONE_ID                = 0;
+        public static final int PHONE_TYPE              = 1;
+        public static final int PHONE_LABEL             = 2;
+        public static final int PHONE_NUMBER            = 3;
+        public static final int CONTACT_ID              = 4;
+        public static final int LOOKUP_KEY              = 5;
+        public static final int PHOTO_ID                = 6;
+        public static final int DISPLAY_NAME            = 7;
+        public static final int PHOTO_URI               = 8;
+        public static final int CARRIER_PRESENCE        = 9;
+    }
+
+    private static final String IGNORE_NUMBER_TOO_LONG_CLAUSE =
+            "length(" + Phone.NUMBER + ") < 1000";
+
+    private final CharSequence mUnknownNameText;
+    private final String mCountryIso;
+
+    private ContactListItemView.PhotoPosition mPhotoPosition;
+
+    private boolean mUseCallableUri;
+
+    private Listener mListener;
+
+    private boolean mIsVideoEnabled;
+    private boolean mIsPresenceEnabled;
+
+    public PhoneNumberListAdapter(Context context) {
+        super(context);
+        setDefaultFilterHeaderText(R.string.list_filter_phones);
+        mUnknownNameText = context.getText(android.R.string.unknownName);
+        mCountryIso = GeoUtil.getCurrentCountryIso(context);
+
+        final ExtendedPhoneDirectoriesManager manager
+                = ExtensionsFactory.getExtendedPhoneDirectoriesManager();
+        if (manager != null) {
+            mExtendedDirectories = manager.getExtendedDirectories(mContext);
+        } else {
+            // Empty list to avoid sticky NPE's
+            mExtendedDirectories = new ArrayList<DirectoryPartition>();
+        }
+
+        int videoCapabilities = CallUtil.getVideoCallingAvailability(context);
+        mIsVideoEnabled = (videoCapabilities & CallUtil.VIDEO_CALLING_ENABLED) != 0;
+        mIsPresenceEnabled = (videoCapabilities & CallUtil.VIDEO_CALLING_PRESENCE) != 0;
+    }
+
+    protected CharSequence getUnknownNameText() {
+        return mUnknownNameText;
+    }
+
+    @Override
+    public void configureLoader(CursorLoader loader, long directoryId) {
+        String query = getQueryString();
+        if (query == null) {
+            query = "";
+        }
+        if (isExtendedDirectory(directoryId)) {
+            final DirectoryPartition directory = getExtendedDirectoryFromId(directoryId);
+            final String contentUri = directory.getContentUri();
+            if (contentUri == null) {
+                throw new IllegalStateException("Extended directory must have a content URL: "
+                        + directory);
+            }
+            final Builder builder = Uri.parse(contentUri).buildUpon();
+            builder.appendPath(query);
+            builder.appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
+                    String.valueOf(getDirectoryResultLimit(directory)));
+            loader.setUri(builder.build());
+            loader.setProjection(PhoneQuery.PROJECTION_PRIMARY);
+        } else {
+            final boolean isRemoteDirectoryQuery
+                    = DirectoryCompat.isRemoteDirectoryId(directoryId);
+            final Builder builder;
+            if (isSearchMode()) {
+                final Uri baseUri;
+                if (isRemoteDirectoryQuery) {
+                    baseUri = PhoneCompat.getContentFilterUri();
+                } else if (mUseCallableUri) {
+                    baseUri = CallableCompat.getContentFilterUri();
+                } else {
+                    baseUri = PhoneCompat.getContentFilterUri();
+                }
+                builder = baseUri.buildUpon();
+                builder.appendPath(query);      // Builder will encode the query
+                builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                        String.valueOf(directoryId));
+                if (isRemoteDirectoryQuery) {
+                    builder.appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
+                            String.valueOf(getDirectoryResultLimit(getDirectoryById(directoryId))));
+                }
+            } else {
+                Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
+                builder = baseUri.buildUpon().appendQueryParameter(
+                        ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
+                if (isSectionHeaderDisplayEnabled()) {
+                    builder.appendQueryParameter(Phone.EXTRA_ADDRESS_BOOK_INDEX, "true");
+                }
+                applyFilter(loader, builder, directoryId, getFilter());
+            }
+
+            // Ignore invalid phone numbers that are too long. These can potentially cause freezes
+            // in the UI and there is no reason to display them.
+            final String prevSelection = loader.getSelection();
+            final String newSelection;
+            if (!TextUtils.isEmpty(prevSelection)) {
+                newSelection = prevSelection + " AND " + IGNORE_NUMBER_TOO_LONG_CLAUSE;
+            } else {
+                newSelection = IGNORE_NUMBER_TOO_LONG_CLAUSE;
+            }
+            loader.setSelection(newSelection);
+
+            // Remove duplicates when it is possible.
+            builder.appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true");
+            loader.setUri(builder.build());
+
+            // TODO a projection that includes the search snippet
+            if (getContactNameDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+                loader.setProjection(PhoneQuery.PROJECTION_PRIMARY);
+            } else {
+                loader.setProjection(PhoneQuery.PROJECTION_ALTERNATIVE);
+            }
+
+            if (getSortOrder() == ContactsPreferences.SORT_ORDER_PRIMARY) {
+                loader.setSortOrder(Phone.SORT_KEY_PRIMARY);
+            } else {
+                loader.setSortOrder(Phone.SORT_KEY_ALTERNATIVE);
+            }
+        }
+    }
+
+    protected boolean isExtendedDirectory(long directoryId) {
+        return directoryId >= mFirstExtendedDirectoryId;
+    }
+
+    private DirectoryPartition getExtendedDirectoryFromId(long directoryId) {
+        final int directoryIndex = (int) (directoryId - mFirstExtendedDirectoryId);
+        return mExtendedDirectories.get(directoryIndex);
+    }
+
+    /**
+     * Configure {@code loader} and {@code uriBuilder} according to {@code directoryId} and {@code
+     * filter}.
+     */
+    private void applyFilter(CursorLoader loader, Uri.Builder uriBuilder, long directoryId,
+            ContactListFilter filter) {
+        if (filter == null || directoryId != Directory.DEFAULT) {
+            return;
+        }
+
+        final StringBuilder selection = new StringBuilder();
+        final List<String> selectionArgs = new ArrayList<String>();
+
+        switch (filter.filterType) {
+            case ContactListFilter.FILTER_TYPE_CUSTOM: {
+                selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
+                selection.append(" AND " + Contacts.HAS_PHONE_NUMBER + "=1");
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_ACCOUNT: {
+                filter.addAccountQueryParameterToUrl(uriBuilder);
+                break;
+            }
+            case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS:
+            case ContactListFilter.FILTER_TYPE_DEFAULT:
+                break; // No selection needed.
+            case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
+                break; // This adapter is always "phone only", so no selection needed either.
+            default:
+                Log.w(TAG, "Unsupported filter type came " +
+                        "(type: " + filter.filterType + ", toString: " + filter + ")" +
+                        " showing all contacts.");
+                // No selection.
+                break;
+        }
+        loader.setSelection(selection.toString());
+        loader.setSelectionArgs(selectionArgs.toArray(new String[0]));
+    }
+
+    @Override
+    public String getContactDisplayName(int position) {
+        return ((Cursor) getItem(position)).getString(PhoneQuery.DISPLAY_NAME);
+    }
+
+    public String getPhoneNumber(int position) {
+        final Cursor item = (Cursor)getItem(position);
+        return item != null ? item.getString(PhoneQuery.PHONE_NUMBER) : null;
+    }
+
+    /**
+     * Builds a {@link Data#CONTENT_URI} for the given cursor position.
+     *
+     * @return Uri for the data. may be null if the cursor is not ready.
+     */
+    public Uri getDataUri(int position) {
+        final int partitionIndex = getPartitionForPosition(position);
+        final Cursor item = (Cursor)getItem(position);
+        return item != null ? getDataUri(partitionIndex, item) : null;
+    }
+
+    public Uri getDataUri(int partitionIndex, Cursor cursor) {
+        final long directoryId =
+                ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
+        if (DirectoryCompat.isRemoteDirectoryId(directoryId)) {
+            return null;
+        } else if (DirectoryCompat.isEnterpriseDirectoryId(directoryId)) {
+            /*
+             * ContentUris.withAppendedId(Data.CONTENT_URI, phoneId), is invalid if
+             * isEnterpriseDirectoryId returns true, because the uri itself will fail since the
+             * ContactsProvider in Android Framework currently doesn't support it. return null until
+             * Android framework has enterprise version of Data.CONTENT_URI
+             */
+            return null;
+        } else {
+            final long phoneId = cursor.getLong(PhoneQuery.PHONE_ID);
+            return ContentUris.withAppendedId(Data.CONTENT_URI, phoneId);
+        }
+    }
+
+    /**
+     * Retrieves the lookup key for the given cursor position.
+     *
+     * @param position The cursor position.
+     * @return The lookup key.
+     */
+    public String getLookupKey(int position) {
+        final Cursor item = (Cursor)getItem(position);
+        return item != null ? item.getString(PhoneQuery.LOOKUP_KEY) : null;
+    }
+
+    @Override
+    protected ContactListItemView newView(
+            Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+        ContactListItemView view = super.newView(context, partition, cursor, position, parent);
+        view.setUnknownNameText(mUnknownNameText);
+        view.setQuickContactEnabled(isQuickContactEnabled());
+        view.setPhotoPosition(mPhotoPosition);
+        return view;
+    }
+
+    protected void setHighlight(ContactListItemView view, Cursor cursor) {
+        view.setHighlightedPrefix(isSearchMode() ? getUpperCaseQueryString() : null);
+    }
+
+    // Override default, which would return number of phone numbers, so we
+    // instead return number of contacts.
+    @Override
+    protected int getResultCount(Cursor cursor) {
+        if (cursor == null) {
+            return 0;
+        }
+        cursor.moveToPosition(-1);
+        long curContactId = -1;
+        int numContacts = 0;
+        while(cursor.moveToNext()) {
+            final long contactId = cursor.getLong(PhoneQuery.CONTACT_ID);
+            if (contactId != curContactId) {
+                curContactId = contactId;
+                ++numContacts;
+            }
+        }
+        return numContacts;
+    }
+
+    @Override
+    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
+        super.bindView(itemView, partition, cursor, position);
+        ContactListItemView view = (ContactListItemView)itemView;
+
+        setHighlight(view, cursor);
+
+        // Look at elements before and after this position, checking if contact IDs are same.
+        // If they have one same contact ID, it means they can be grouped.
+        //
+        // In one group, only the first entry will show its photo and its name, and the other
+        // entries in the group show just their data (e.g. phone number, email address).
+        cursor.moveToPosition(position);
+        boolean isFirstEntry = true;
+        boolean showBottomDivider = true;
+        final long currentContactId = cursor.getLong(PhoneQuery.CONTACT_ID);
+        if (cursor.moveToPrevious() && !cursor.isBeforeFirst()) {
+            final long previousContactId = cursor.getLong(PhoneQuery.CONTACT_ID);
+            if (currentContactId == previousContactId) {
+                isFirstEntry = false;
+            }
+        }
+        cursor.moveToPosition(position);
+        if (cursor.moveToNext() && !cursor.isAfterLast()) {
+            final long nextContactId = cursor.getLong(PhoneQuery.CONTACT_ID);
+            if (currentContactId == nextContactId) {
+                // The following entry should be in the same group, which means we don't want a
+                // divider between them.
+                // TODO: we want a different divider than the divider between groups. Just hiding
+                // this divider won't be enough.
+                showBottomDivider = false;
+            }
+        }
+        cursor.moveToPosition(position);
+
+        bindViewId(view, cursor, PhoneQuery.PHONE_ID);
+
+        bindSectionHeaderAndDivider(view, position);
+        if (isFirstEntry) {
+            bindName(view, cursor);
+            if (isQuickContactEnabled()) {
+                bindQuickContact(view, partition, cursor, PhoneQuery.PHOTO_ID,
+                        PhoneQuery.PHOTO_URI, PhoneQuery.CONTACT_ID,
+                        PhoneQuery.LOOKUP_KEY, PhoneQuery.DISPLAY_NAME);
+            } else {
+                if (getDisplayPhotos()) {
+                    bindPhoto(view, partition, cursor);
+                }
+            }
+        } else {
+            unbindName(view);
+
+            view.removePhotoView(true, false);
+        }
+
+        final DirectoryPartition directory = (DirectoryPartition) getPartition(partition);
+        bindPhoneNumber(view, cursor, directory.isDisplayNumber(), position);
+    }
+
+    protected void bindPhoneNumber(ContactListItemView view, Cursor cursor, boolean displayNumber,
+            int position) {
+        CharSequence label = null;
+        if (displayNumber &&  !cursor.isNull(PhoneQuery.PHONE_TYPE)) {
+            final int type = cursor.getInt(PhoneQuery.PHONE_TYPE);
+            final String customLabel = cursor.getString(PhoneQuery.PHONE_LABEL);
+
+            // TODO cache
+            label = Phone.getTypeLabel(getContext().getResources(), type, customLabel);
+        }
+        view.setLabel(label);
+        final String text;
+        if (displayNumber) {
+            text = cursor.getString(PhoneQuery.PHONE_NUMBER);
+        } else {
+            // Display phone label. If that's null, display geocoded location for the number
+            final String phoneLabel = cursor.getString(PhoneQuery.PHONE_LABEL);
+            if (phoneLabel != null) {
+                text = phoneLabel;
+            } else {
+                final String phoneNumber = cursor.getString(PhoneQuery.PHONE_NUMBER);
+                text = GeoUtil.getGeocodedLocationFor(mContext, phoneNumber);
+            }
+        }
+        view.setPhoneNumber(text, mCountryIso);
+
+        if (CompatUtils.isVideoCompatible()) {
+            // Determine if carrier presence indicates the number supports video calling.
+            int carrierPresence = cursor.getInt(PhoneQuery.CARRIER_PRESENCE);
+            boolean isPresent = (carrierPresence & Phone.CARRIER_PRESENCE_VT_CAPABLE) != 0;
+
+            boolean isVideoIconShown = mIsVideoEnabled && (
+                    mIsPresenceEnabled && isPresent || !mIsPresenceEnabled);
+            view.setShowVideoCallIcon(isVideoIconShown, mListener, position);
+        }
+    }
+
+    protected void bindSectionHeaderAndDivider(final ContactListItemView view, int position) {
+        if (isSectionHeaderDisplayEnabled()) {
+            Placement placement = getItemPlacementInSection(position);
+            view.setSectionHeader(placement.firstInSection ? placement.sectionHeader : null);
+        } else {
+            view.setSectionHeader(null);
+        }
+    }
+
+    protected void bindName(final ContactListItemView view, Cursor cursor) {
+        view.showDisplayName(cursor, PhoneQuery.DISPLAY_NAME, getContactNameDisplayOrder());
+        // Note: we don't show phonetic names any more (see issue 5265330)
+    }
+
+    protected void unbindName(final ContactListItemView view) {
+        view.hideDisplayName();
+    }
+
+    @Override
+    protected void bindWorkProfileIcon(final ContactListItemView view, int partition) {
+        final DirectoryPartition directory = (DirectoryPartition) getPartition(partition);
+        final long directoryId = directory.getDirectoryId();
+        final long userType = ContactsUtils.determineUserType(directoryId, null);
+        // Work directory must not be a extended directory. An extended directory is custom
+        // directory in the app, but not a directory provided by framework. So it can't be
+        // USER_TYPE_WORK.
+        view.setWorkProfileIconEnabled(
+                !isExtendedDirectory(directoryId) && userType == ContactsUtils.USER_TYPE_WORK);
+    }
+
+    protected void bindPhoto(final ContactListItemView view, int partitionIndex, Cursor cursor) {
+        if (!isPhotoSupported(partitionIndex)) {
+            view.removePhotoView();
+            return;
+        }
+
+        long photoId = 0;
+        if (!cursor.isNull(PhoneQuery.PHOTO_ID)) {
+            photoId = cursor.getLong(PhoneQuery.PHOTO_ID);
+        }
+
+        if (photoId != 0) {
+            getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false,
+                    getCircularPhotos(), null);
+        } else {
+            final String photoUriString = cursor.getString(PhoneQuery.PHOTO_URI);
+            final Uri photoUri = photoUriString == null ? null : Uri.parse(photoUriString);
+
+            DefaultImageRequest request = null;
+            if (photoUri == null) {
+                final String displayName = cursor.getString(PhoneQuery.DISPLAY_NAME);
+                final String lookupKey = cursor.getString(PhoneQuery.LOOKUP_KEY);
+                request = new DefaultImageRequest(displayName, lookupKey, getCircularPhotos());
+            }
+            getPhotoLoader().loadDirectoryPhoto(view.getPhotoView(), photoUri, false,
+                    getCircularPhotos(), request);
+        }
+    }
+
+    public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) {
+        mPhotoPosition = photoPosition;
+    }
+
+    public ContactListItemView.PhotoPosition getPhotoPosition() {
+        return mPhotoPosition;
+    }
+
+    public void setUseCallableUri(boolean useCallableUri) {
+        mUseCallableUri = useCallableUri;
+    }
+
+    public boolean usesCallableUri() {
+        return mUseCallableUri;
+    }
+
+    /**
+     * Override base implementation to inject extended directories between local & remote
+     * directories. This is done in the following steps:
+     * 1. Call base implementation to add directories from the cursor.
+     * 2. Iterate all base directories and establish the following information:
+     *   a. The highest directory id so that we can assign unused id's to the extended directories.
+     *   b. The index of the last non-remote directory. This is where we will insert extended
+     *      directories.
+     * 3. Iterate the extended directories and for each one, assign an ID and insert it in the
+     *    proper location.
+     */
+    @Override
+    public void changeDirectories(Cursor cursor) {
+        super.changeDirectories(cursor);
+        if (getDirectorySearchMode() == DirectoryListLoader.SEARCH_MODE_NONE) {
+            return;
+        }
+        final int numExtendedDirectories = mExtendedDirectories.size();
+        if (getPartitionCount() == cursor.getCount() + numExtendedDirectories) {
+            // already added all directories;
+            return;
+        }
+        //
+        mFirstExtendedDirectoryId = Long.MAX_VALUE;
+        if (numExtendedDirectories > 0) {
+            // The Directory.LOCAL_INVISIBLE is not in the cursor but we can't reuse it's
+            // "special" ID.
+            long maxId = Directory.LOCAL_INVISIBLE;
+            int insertIndex = 0;
+            for (int i = 0, n = getPartitionCount(); i < n; i++) {
+                final DirectoryPartition partition = (DirectoryPartition) getPartition(i);
+                final long id = partition.getDirectoryId();
+                if (id > maxId) {
+                    maxId = id;
+                }
+                if (!DirectoryCompat.isRemoteDirectoryId(id)) {
+                    // assuming remote directories come after local, we will end up with the index
+                    // where we should insert extended directories. This also works if there are no
+                    // remote directories at all.
+                    insertIndex = i + 1;
+                }
+            }
+            // Extended directories ID's cannot collide with base directories
+            mFirstExtendedDirectoryId = maxId + 1;
+            for (int i = 0; i < numExtendedDirectories; i++) {
+                final long id = mFirstExtendedDirectoryId + i;
+                final DirectoryPartition directory = mExtendedDirectories.get(i);
+                if (getPartitionByDirectoryId(id) == -1) {
+                    addPartition(insertIndex, directory);
+                    directory.setDirectoryId(id);
+                }
+            }
+        }
+    }
+
+    @Override
+    protected Uri getContactUri(int partitionIndex, Cursor cursor,
+            int contactIdColumn, int lookUpKeyColumn) {
+        final DirectoryPartition directory = (DirectoryPartition) getPartition(partitionIndex);
+        final long directoryId = directory.getDirectoryId();
+        if (!isExtendedDirectory(directoryId)) {
+            return super.getContactUri(partitionIndex, cursor, contactIdColumn, lookUpKeyColumn);
+        }
+        return Contacts.CONTENT_LOOKUP_URI.buildUpon()
+                .appendPath(Constants.LOOKUP_URI_ENCODED)
+                .appendQueryParameter(Directory.DISPLAY_NAME, directory.getLabel())
+                .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                        String.valueOf(directoryId))
+                .encodedFragment(cursor.getString(lookUpKeyColumn))
+                .build();
+    }
+
+    public Listener getListener() {
+        return mListener;
+    }
+
+    public void setListener(Listener listener) {
+        mListener = listener;
+    }
+}
diff --git a/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java
new file mode 100644
index 0000000..3d542eb
--- /dev/null
+++ b/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java
@@ -0,0 +1,345 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Intent;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Fragment containing a phone number list for picking.
+ */
+public class PhoneNumberPickerFragment extends ContactEntryListFragment<ContactEntryListAdapter>
+        implements OnShortcutIntentCreatedListener, PhoneNumberListAdapter.Listener {
+    private static final String TAG = PhoneNumberPickerFragment.class.getSimpleName();
+
+    private static final String KEY_SHORTCUT_ACTION = "shortcutAction";
+
+    private OnPhoneNumberPickerActionListener mListener;
+    private String mShortcutAction;
+
+    private ContactListFilter mFilter;
+
+    private static final String KEY_FILTER = "filter";
+
+    /** true if the loader has started at least once. */
+    private boolean mLoaderStarted;
+
+    private boolean mUseCallableUri;
+
+    private ContactListItemView.PhotoPosition mPhotoPosition =
+            ContactListItemView.getDefaultPhotoPosition(false /* normal/non opposite */);
+
+    /**
+     * Handles a click on the video call icon for a row in the list.
+     *
+     * @param position The position in the list where the click ocurred.
+     */
+    @Override
+    public void onVideoCallIconClicked(int position) {
+        callNumber(position, true /* isVideoCall */);
+    }
+
+    public PhoneNumberPickerFragment() {
+        setQuickContactEnabled(false);
+        setPhotoLoaderEnabled(true);
+        setSectionHeaderDisplayEnabled(true);
+        setDirectorySearchMode(DirectoryListLoader.SEARCH_MODE_NONE);
+
+        // Show nothing instead of letting caller Activity show something.
+        setHasOptionsMenu(true);
+    }
+
+    public void setDirectorySearchEnabled(boolean flag) {
+        setDirectorySearchMode(flag ? DirectoryListLoader.SEARCH_MODE_DEFAULT
+                : DirectoryListLoader.SEARCH_MODE_NONE);
+    }
+
+    public void setOnPhoneNumberPickerActionListener(OnPhoneNumberPickerActionListener listener) {
+        this.mListener = listener;
+    }
+
+    public OnPhoneNumberPickerActionListener getOnPhoneNumberPickerListener() {
+        return mListener;
+    }
+
+    @Override
+    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
+        super.onCreateView(inflater, container);
+
+        setVisibleScrollbarEnabled(getVisibleScrollbarEnabled());
+    }
+
+    protected boolean getVisibleScrollbarEnabled() {
+        return true;
+    }
+
+    @Override
+    public void restoreSavedState(Bundle savedState) {
+        super.restoreSavedState(savedState);
+
+        if (savedState == null) {
+            return;
+        }
+
+        mFilter = savedState.getParcelable(KEY_FILTER);
+        mShortcutAction = savedState.getString(KEY_SHORTCUT_ACTION);
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putParcelable(KEY_FILTER, mFilter);
+        outState.putString(KEY_SHORTCUT_ACTION, mShortcutAction);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        final int itemId = item.getItemId();
+        if (itemId == android.R.id.home) {  // See ActionBar#setDisplayHomeAsUpEnabled()
+            if (mListener != null) {
+                mListener.onHomeInActionBarSelected();
+            }
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    /**
+     * @param shortcutAction either {@link Intent#ACTION_CALL} or
+     *            {@link Intent#ACTION_SENDTO} or null.
+     */
+    public void setShortcutAction(String shortcutAction) {
+        this.mShortcutAction = shortcutAction;
+    }
+
+    @Override
+    protected void onItemClick(int position, long id) {
+        callNumber(position, false /* isVideoCall */);
+    }
+
+    /**
+     * Initiates a call to the number at the specified position.
+     *
+     * @param position The position.
+     * @param isVideoCall {@code true} if the call should be initiated as a video call,
+     *      {@code false} otherwise.
+     */
+    private void callNumber(int position, boolean isVideoCall) {
+        final Uri phoneUri = getPhoneUri(position);
+
+        if (phoneUri != null) {
+            pickPhoneNumber(phoneUri, isVideoCall);
+        } else {
+            final String number = getPhoneNumber(position);
+            if (!TextUtils.isEmpty(number)) {
+                cacheContactInfo(position);
+                mListener.onPickPhoneNumber(number, isVideoCall,
+                        getCallInitiationType(true /* isRemoteDirectory */));
+            } else {
+                Log.w(TAG, "Item at " + position + " was clicked before"
+                        + " adapter is ready. Ignoring");
+            }
+        }
+
+        // Get the lookup key and track any analytics
+        final String lookupKey = getLookupKey(position);
+        if (!TextUtils.isEmpty(lookupKey)) {
+            maybeTrackAnalytics(lookupKey);
+        }
+    }
+
+    protected void cacheContactInfo(int position) {
+        // Not implemented. Hook for child classes
+    }
+
+    protected String getPhoneNumber(int position) {
+        final PhoneNumberListAdapter adapter = (PhoneNumberListAdapter) getAdapter();
+        return adapter.getPhoneNumber(position);
+    }
+
+    protected Uri getPhoneUri(int position) {
+        final PhoneNumberListAdapter adapter = (PhoneNumberListAdapter) getAdapter();
+        return adapter.getDataUri(position);
+    }
+
+    protected String getLookupKey(int position) {
+        final PhoneNumberListAdapter adapter = (PhoneNumberListAdapter) getAdapter();
+        return adapter.getLookupKey(position);
+    }
+
+    @Override
+    protected void startLoading() {
+        mLoaderStarted = true;
+        super.startLoading();
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        super.onLoadFinished(loader, data);
+
+        // disable scroll bar if there is no data
+        setVisibleScrollbarEnabled(data != null && !data.isClosed() && data.getCount() > 0);
+    }
+
+    public void setUseCallableUri(boolean useCallableUri) {
+        mUseCallableUri = useCallableUri;
+    }
+
+    public boolean usesCallableUri() {
+        return mUseCallableUri;
+    }
+
+    @Override
+    protected ContactEntryListAdapter createListAdapter() {
+        PhoneNumberListAdapter adapter = new PhoneNumberListAdapter(getActivity());
+        adapter.setDisplayPhotos(true);
+        adapter.setUseCallableUri(mUseCallableUri);
+        return adapter;
+    }
+
+    @Override
+    protected void configureAdapter() {
+        super.configureAdapter();
+
+        final ContactEntryListAdapter adapter = getAdapter();
+        if (adapter == null) {
+            return;
+        }
+
+        if (!isSearchMode() && mFilter != null) {
+            adapter.setFilter(mFilter);
+        }
+
+        setPhotoPosition(adapter);
+    }
+
+    protected void setPhotoPosition(ContactEntryListAdapter adapter) {
+        ((PhoneNumberListAdapter) adapter).setPhotoPosition(mPhotoPosition);
+    }
+
+    @Override
+    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
+        return inflater.inflate(R.layout.contact_list_content, null);
+    }
+
+    public void pickPhoneNumber(Uri uri, boolean isVideoCall) {
+        if (mShortcutAction == null) {
+            mListener.onPickDataUri(uri, isVideoCall,
+                    getCallInitiationType(false /* isRemoteDirectory */));
+        } else {
+            startPhoneNumberShortcutIntent(uri, isVideoCall);
+        }
+    }
+
+    protected void startPhoneNumberShortcutIntent(Uri uri, boolean isVideoCall) {
+        ShortcutIntentBuilder builder = new ShortcutIntentBuilder(getActivity(), this);
+        builder.createPhoneNumberShortcutIntent(uri, mShortcutAction);
+    }
+
+    @Override
+    public void onShortcutIntentCreated(Uri uri, Intent shortcutIntent) {
+        mListener.onShortcutIntentCreated(shortcutIntent);
+    }
+
+    @Override
+    public void onPickerResult(Intent data) {
+        mListener.onPickDataUri(data.getData(), false /* isVideoCall */,
+                getCallInitiationType(false /* isRemoteDirectory */));
+    }
+
+    public void setFilter(ContactListFilter filter) {
+        if ((mFilter == null && filter == null) ||
+                (mFilter != null && mFilter.equals(filter))) {
+            return;
+        }
+
+        mFilter = filter;
+        if (mLoaderStarted) {
+            reloadData();
+        }
+    }
+
+    public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) {
+        mPhotoPosition = photoPosition;
+
+        final PhoneNumberListAdapter adapter = (PhoneNumberListAdapter) getAdapter();
+        if (adapter != null) {
+            adapter.setPhotoPosition(photoPosition);
+        }
+    }
+
+    /**
+     * @param isRemoteDirectory {@code true} if the call was initiated using a contact/phone number
+     *         not in the local contacts database
+     */
+    protected int getCallInitiationType(boolean isRemoteDirectory) {
+        return OnPhoneNumberPickerActionListener.CALL_INITIATION_UNKNOWN;
+    }
+
+    /**
+     * Where a lookup key contains analytic event information, logs the associated analytics event.
+     *
+     * @param lookupKey The lookup key JSON object.
+     */
+    private void maybeTrackAnalytics(String lookupKey) {
+        try {
+            JSONObject json = new JSONObject(lookupKey);
+
+            String analyticsCategory = json.getString(
+                    PhoneNumberListAdapter.PhoneQuery.ANALYTICS_CATEGORY);
+            String analyticsAction = json.getString(
+                    PhoneNumberListAdapter.PhoneQuery.ANALYTICS_ACTION);
+            String analyticsValue = json.getString(
+                    PhoneNumberListAdapter.PhoneQuery.ANALYTICS_VALUE);
+
+            if (TextUtils.isEmpty(analyticsCategory) || TextUtils.isEmpty(analyticsAction) ||
+                    TextUtils.isEmpty(analyticsValue)) {
+                return;
+            }
+
+            // Assume that the analytic value being tracked could be a float value, but just cast
+            // to a long so that the analytic server can handle it.
+            long value;
+            try {
+                float floatValue = Float.parseFloat(analyticsValue);
+                value = (long) floatValue;
+            } catch (NumberFormatException nfe) {
+                return;
+            }
+
+            AnalyticsUtil.sendEvent(getActivity().getApplication(), analyticsCategory,
+                    analyticsAction, "" /* label */, value);
+        } catch (JSONException e) {
+            // Not an error; just a lookup key that doesn't have the right information.
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/list/PinnedHeaderListAdapter.java b/src/com/android/contacts/common/list/PinnedHeaderListAdapter.java
new file mode 100644
index 0000000..72f3f19
--- /dev/null
+++ b/src/com/android/contacts/common/list/PinnedHeaderListAdapter.java
@@ -0,0 +1,169 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.common.widget.CompositeCursorAdapter;
+
+/**
+ * A subclass of {@link CompositeCursorAdapter} that manages pinned partition headers.
+ */
+public abstract class PinnedHeaderListAdapter extends CompositeCursorAdapter
+        implements PinnedHeaderListView.PinnedHeaderAdapter {
+
+    public static final int PARTITION_HEADER_TYPE = 0;
+
+    private boolean mPinnedPartitionHeadersEnabled;
+    private boolean mHeaderVisibility[];
+
+    public PinnedHeaderListAdapter(Context context) {
+        super(context);
+    }
+
+    public PinnedHeaderListAdapter(Context context, int initialCapacity) {
+        super(context, initialCapacity);
+    }
+
+    public boolean getPinnedPartitionHeadersEnabled() {
+        return mPinnedPartitionHeadersEnabled;
+    }
+
+    public void setPinnedPartitionHeadersEnabled(boolean flag) {
+        this.mPinnedPartitionHeadersEnabled = flag;
+    }
+
+    @Override
+    public int getPinnedHeaderCount() {
+        if (mPinnedPartitionHeadersEnabled) {
+            return getPartitionCount();
+        } else {
+            return 0;
+        }
+    }
+
+    protected boolean isPinnedPartitionHeaderVisible(int partition) {
+        return getPinnedPartitionHeadersEnabled() && hasHeader(partition)
+                && !isPartitionEmpty(partition);
+    }
+
+    /**
+     * The default implementation creates the same type of view as a normal
+     * partition header.
+     */
+    @Override
+    public View getPinnedHeaderView(int partition, View convertView, ViewGroup parent) {
+        if (hasHeader(partition)) {
+            View view = null;
+            if (convertView != null) {
+                Integer headerType = (Integer)convertView.getTag();
+                if (headerType != null && headerType == PARTITION_HEADER_TYPE) {
+                    view = convertView;
+                }
+            }
+            if (view == null) {
+                view = newHeaderView(getContext(), partition, null, parent);
+                view.setTag(PARTITION_HEADER_TYPE);
+                view.setFocusable(false);
+                view.setEnabled(false);
+            }
+            bindHeaderView(view, partition, getCursor(partition));
+            view.setLayoutDirection(parent.getLayoutDirection());
+            return view;
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public void configurePinnedHeaders(PinnedHeaderListView listView) {
+        if (!getPinnedPartitionHeadersEnabled()) {
+            return;
+        }
+
+        int size = getPartitionCount();
+
+        // Cache visibility bits, because we will need them several times later on
+        if (mHeaderVisibility == null || mHeaderVisibility.length != size) {
+            mHeaderVisibility = new boolean[size];
+        }
+        for (int i = 0; i < size; i++) {
+            boolean visible = isPinnedPartitionHeaderVisible(i);
+            mHeaderVisibility[i] = visible;
+            if (!visible) {
+                listView.setHeaderInvisible(i, true);
+            }
+        }
+
+        int headerViewsCount = listView.getHeaderViewsCount();
+
+        // Starting at the top, find and pin headers for partitions preceding the visible one(s)
+        int maxTopHeader = -1;
+        int topHeaderHeight = 0;
+        for (int i = 0; i < size; i++) {
+            if (mHeaderVisibility[i]) {
+                int position = listView.getPositionAt(topHeaderHeight) - headerViewsCount;
+                int partition = getPartitionForPosition(position);
+                if (i > partition) {
+                    break;
+                }
+
+                listView.setHeaderPinnedAtTop(i, topHeaderHeight, false);
+                topHeaderHeight += listView.getPinnedHeaderHeight(i);
+                maxTopHeader = i;
+            }
+        }
+
+        // Starting at the bottom, find and pin headers for partitions following the visible one(s)
+        int maxBottomHeader = size;
+        int bottomHeaderHeight = 0;
+        int listHeight = listView.getHeight();
+        for (int i = size; --i > maxTopHeader;) {
+            if (mHeaderVisibility[i]) {
+                int position = listView.getPositionAt(listHeight - bottomHeaderHeight)
+                        - headerViewsCount;
+                if (position < 0) {
+                    break;
+                }
+
+                int partition = getPartitionForPosition(position - 1);
+                if (partition == -1 || i <= partition) {
+                    break;
+                }
+
+                int height = listView.getPinnedHeaderHeight(i);
+                bottomHeaderHeight += height;
+
+                listView.setHeaderPinnedAtBottom(i, listHeight - bottomHeaderHeight, false);
+                maxBottomHeader = i;
+            }
+        }
+
+        // Headers in between the top-pinned and bottom-pinned should be hidden
+        for (int i = maxTopHeader + 1; i < maxBottomHeader; i++) {
+            if (mHeaderVisibility[i]) {
+                listView.setHeaderInvisible(i, isPartitionEmpty(i));
+            }
+        }
+    }
+
+    @Override
+    public int getScrollPositionForHeader(int viewIndex) {
+        return getPositionForPartition(viewIndex);
+    }
+}
diff --git a/src/com/android/contacts/common/list/PinnedHeaderListView.java b/src/com/android/contacts/common/list/PinnedHeaderListView.java
new file mode 100644
index 0000000..45ce4b3
--- /dev/null
+++ b/src/com/android/contacts/common/list/PinnedHeaderListView.java
@@ -0,0 +1,584 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.RectF;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ListAdapter;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.util.ViewUtil;
+
+/**
+ * A ListView that maintains a header pinned at the top of the list. The
+ * pinned header can be pushed up and dissolved as needed.
+ */
+public class PinnedHeaderListView extends AutoScrollListView
+        implements OnScrollListener, OnItemSelectedListener {
+
+    /**
+     * Adapter interface.  The list adapter must implement this interface.
+     */
+    public interface PinnedHeaderAdapter {
+
+        /**
+         * Returns the overall number of pinned headers, visible or not.
+         */
+        int getPinnedHeaderCount();
+
+        /**
+         * Creates or updates the pinned header view.
+         */
+        View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent);
+
+        /**
+         * Configures the pinned headers to match the visible list items. The
+         * adapter should call {@link PinnedHeaderListView#setHeaderPinnedAtTop},
+         * {@link PinnedHeaderListView#setHeaderPinnedAtBottom},
+         * {@link PinnedHeaderListView#setFadingHeader} or
+         * {@link PinnedHeaderListView#setHeaderInvisible}, for each header that
+         * needs to change its position or visibility.
+         */
+        void configurePinnedHeaders(PinnedHeaderListView listView);
+
+        /**
+         * Returns the list position to scroll to if the pinned header is touched.
+         * Return -1 if the list does not need to be scrolled.
+         */
+        int getScrollPositionForHeader(int viewIndex);
+    }
+
+    private static final int MAX_ALPHA = 255;
+    private static final int TOP = 0;
+    private static final int BOTTOM = 1;
+    private static final int FADING = 2;
+
+    private static final int DEFAULT_ANIMATION_DURATION = 20;
+
+    private static final int DEFAULT_SMOOTH_SCROLL_DURATION = 100;
+
+    private static final class PinnedHeader {
+        View view;
+        boolean visible;
+        int y;
+        int height;
+        int alpha;
+        int state;
+
+        boolean animating;
+        boolean targetVisible;
+        int sourceY;
+        int targetY;
+        long targetTime;
+    }
+
+    private PinnedHeaderAdapter mAdapter;
+    private int mSize;
+    private PinnedHeader[] mHeaders;
+    private RectF mBounds = new RectF();
+    private OnScrollListener mOnScrollListener;
+    private OnItemSelectedListener mOnItemSelectedListener;
+    private int mScrollState;
+
+    private boolean mScrollToSectionOnHeaderTouch = false;
+    private boolean mHeaderTouched = false;
+
+    private int mAnimationDuration = DEFAULT_ANIMATION_DURATION;
+    private boolean mAnimating;
+    private long mAnimationTargetTime;
+    private int mHeaderPaddingStart;
+    private int mHeaderWidth;
+
+    public PinnedHeaderListView(Context context) {
+        this(context, null, android.R.attr.listViewStyle);
+    }
+
+    public PinnedHeaderListView(Context context, AttributeSet attrs) {
+        this(context, attrs, android.R.attr.listViewStyle);
+    }
+
+    public PinnedHeaderListView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        super.setOnScrollListener(this);
+        super.setOnItemSelectedListener(this);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        super.onLayout(changed, l, t, r, b);
+        mHeaderPaddingStart = getPaddingStart();
+        mHeaderWidth = r - l - mHeaderPaddingStart - getPaddingEnd();
+    }
+
+    @Override
+    public void setAdapter(ListAdapter adapter) {
+        mAdapter = (PinnedHeaderAdapter)adapter;
+        super.setAdapter(adapter);
+    }
+
+    @Override
+    public void setOnScrollListener(OnScrollListener onScrollListener) {
+        mOnScrollListener = onScrollListener;
+        super.setOnScrollListener(this);
+    }
+
+    @Override
+    public void setOnItemSelectedListener(OnItemSelectedListener listener) {
+        mOnItemSelectedListener = listener;
+        super.setOnItemSelectedListener(this);
+    }
+
+    public void setScrollToSectionOnHeaderTouch(boolean value) {
+        mScrollToSectionOnHeaderTouch = value;
+    }
+
+    @Override
+    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
+            int totalItemCount) {
+        if (mAdapter != null) {
+            int count = mAdapter.getPinnedHeaderCount();
+            if (count != mSize) {
+                mSize = count;
+                if (mHeaders == null) {
+                    mHeaders = new PinnedHeader[mSize];
+                } else if (mHeaders.length < mSize) {
+                    PinnedHeader[] headers = mHeaders;
+                    mHeaders = new PinnedHeader[mSize];
+                    System.arraycopy(headers, 0, mHeaders, 0, headers.length);
+                }
+            }
+
+            for (int i = 0; i < mSize; i++) {
+                if (mHeaders[i] == null) {
+                    mHeaders[i] = new PinnedHeader();
+                }
+                mHeaders[i].view = mAdapter.getPinnedHeaderView(i, mHeaders[i].view, this);
+            }
+
+            mAnimationTargetTime = System.currentTimeMillis() + mAnimationDuration;
+            mAdapter.configurePinnedHeaders(this);
+            invalidateIfAnimating();
+        }
+        if (mOnScrollListener != null) {
+            mOnScrollListener.onScroll(this, firstVisibleItem, visibleItemCount, totalItemCount);
+        }
+    }
+
+    @Override
+    protected float getTopFadingEdgeStrength() {
+        // Disable vertical fading at the top when the pinned header is present
+        return mSize > 0 ? 0 : super.getTopFadingEdgeStrength();
+    }
+
+    @Override
+    public void onScrollStateChanged(AbsListView view, int scrollState) {
+        mScrollState = scrollState;
+        if (mOnScrollListener != null) {
+            mOnScrollListener.onScrollStateChanged(this, scrollState);
+        }
+    }
+
+    /**
+     * Ensures that the selected item is positioned below the top-pinned headers
+     * and above the bottom-pinned ones.
+     */
+    @Override
+    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+        int height = getHeight();
+
+        int windowTop = 0;
+        int windowBottom = height;
+
+        for (int i = 0; i < mSize; i++) {
+            PinnedHeader header = mHeaders[i];
+            if (header.visible) {
+                if (header.state == TOP) {
+                    windowTop = header.y + header.height;
+                } else if (header.state == BOTTOM) {
+                    windowBottom = header.y;
+                    break;
+                }
+            }
+        }
+
+        View selectedView = getSelectedView();
+        if (selectedView != null) {
+            if (selectedView.getTop() < windowTop) {
+                setSelectionFromTop(position, windowTop);
+            } else if (selectedView.getBottom() > windowBottom) {
+                setSelectionFromTop(position, windowBottom - selectedView.getHeight());
+            }
+        }
+
+        if (mOnItemSelectedListener != null) {
+            mOnItemSelectedListener.onItemSelected(parent, view, position, id);
+        }
+    }
+
+    @Override
+    public void onNothingSelected(AdapterView<?> parent) {
+        if (mOnItemSelectedListener != null) {
+            mOnItemSelectedListener.onNothingSelected(parent);
+        }
+    }
+
+    public int getPinnedHeaderHeight(int viewIndex) {
+        ensurePinnedHeaderLayout(viewIndex);
+        return mHeaders[viewIndex].view.getHeight();
+    }
+
+    /**
+     * Set header to be pinned at the top.
+     *
+     * @param viewIndex index of the header view
+     * @param y is position of the header in pixels.
+     * @param animate true if the transition to the new coordinate should be animated
+     */
+    public void setHeaderPinnedAtTop(int viewIndex, int y, boolean animate) {
+        ensurePinnedHeaderLayout(viewIndex);
+        PinnedHeader header = mHeaders[viewIndex];
+        header.visible = true;
+        header.y = y;
+        header.state = TOP;
+
+        // TODO perhaps we should animate at the top as well
+        header.animating = false;
+    }
+
+    /**
+     * Set header to be pinned at the bottom.
+     *
+     * @param viewIndex index of the header view
+     * @param y is position of the header in pixels.
+     * @param animate true if the transition to the new coordinate should be animated
+     */
+    public void setHeaderPinnedAtBottom(int viewIndex, int y, boolean animate) {
+        ensurePinnedHeaderLayout(viewIndex);
+        PinnedHeader header = mHeaders[viewIndex];
+        header.state = BOTTOM;
+        if (header.animating) {
+            header.targetTime = mAnimationTargetTime;
+            header.sourceY = header.y;
+            header.targetY = y;
+        } else if (animate && (header.y != y || !header.visible)) {
+            if (header.visible) {
+                header.sourceY = header.y;
+            } else {
+                header.visible = true;
+                header.sourceY = y + header.height;
+            }
+            header.animating = true;
+            header.targetVisible = true;
+            header.targetTime = mAnimationTargetTime;
+            header.targetY = y;
+        } else {
+            header.visible = true;
+            header.y = y;
+        }
+    }
+
+    /**
+     * Set header to be pinned at the top of the first visible item.
+     *
+     * @param viewIndex index of the header view
+     * @param position is position of the header in pixels.
+     */
+    public void setFadingHeader(int viewIndex, int position, boolean fade) {
+        ensurePinnedHeaderLayout(viewIndex);
+
+        View child = getChildAt(position - getFirstVisiblePosition());
+        if (child == null) return;
+
+        PinnedHeader header = mHeaders[viewIndex];
+        // Hide header when it's a star.
+        // TODO: try showing the view even when it's a star;
+        // if we have to hide the star view, then try hiding it in some higher layer.
+        header.visible = !TextUtils.equals(
+                ((TextView) header.view).getText(), getContext().getString(R.string.star_sign));
+        header.state = FADING;
+        header.alpha = MAX_ALPHA;
+        header.animating = false;
+
+        int top = getTotalTopPinnedHeaderHeight();
+        header.y = top;
+        if (fade) {
+            int bottom = child.getBottom() - top;
+            int headerHeight = header.height;
+            if (bottom < headerHeight) {
+                int portion = bottom - headerHeight;
+                header.alpha = MAX_ALPHA * (headerHeight + portion) / headerHeight;
+                header.y = top + portion;
+            }
+        }
+    }
+
+    /**
+     * Makes header invisible.
+     *
+     * @param viewIndex index of the header view
+     * @param animate true if the transition to the new coordinate should be animated
+     */
+    public void setHeaderInvisible(int viewIndex, boolean animate) {
+        PinnedHeader header = mHeaders[viewIndex];
+        if (header.visible && (animate || header.animating) && header.state == BOTTOM) {
+            header.sourceY = header.y;
+            if (!header.animating) {
+                header.visible = true;
+                header.targetY = getBottom() + header.height;
+            }
+            header.animating = true;
+            header.targetTime = mAnimationTargetTime;
+            header.targetVisible = false;
+        } else {
+            header.visible = false;
+        }
+    }
+
+    private void ensurePinnedHeaderLayout(int viewIndex) {
+        View view = mHeaders[viewIndex].view;
+        if (view.isLayoutRequested()) {
+            ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
+            int widthSpec;
+            int heightSpec;
+
+            if (layoutParams != null && layoutParams.width > 0) {
+                widthSpec = View.MeasureSpec
+                        .makeMeasureSpec(layoutParams.width, View.MeasureSpec.EXACTLY);
+            } else {
+                widthSpec = View.MeasureSpec
+                        .makeMeasureSpec(mHeaderWidth, View.MeasureSpec.EXACTLY);
+            }
+
+            if (layoutParams != null && layoutParams.height > 0) {
+                heightSpec = View.MeasureSpec
+                        .makeMeasureSpec(layoutParams.height, View.MeasureSpec.EXACTLY);
+            } else {
+                heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
+            }
+            view.measure(widthSpec, heightSpec);
+            int height = view.getMeasuredHeight();
+            mHeaders[viewIndex].height = height;
+            view.layout(0, 0, view.getMeasuredWidth(), height);
+        }
+    }
+
+    /**
+     * Returns the sum of heights of headers pinned to the top.
+     */
+    public int getTotalTopPinnedHeaderHeight() {
+        for (int i = mSize; --i >= 0;) {
+            PinnedHeader header = mHeaders[i];
+            if (header.visible && header.state == TOP) {
+                return header.y + header.height;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Returns the list item position at the specified y coordinate.
+     */
+    public int getPositionAt(int y) {
+        do {
+            int position = pointToPosition(getPaddingLeft() + 1, y);
+            if (position != -1) {
+                return position;
+            }
+            // If position == -1, we must have hit a separator. Let's examine
+            // a nearby pixel
+            y--;
+        } while (y > 0);
+        return 0;
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        mHeaderTouched = false;
+        if (super.onInterceptTouchEvent(ev)) {
+            return true;
+        }
+
+        if (mScrollState == SCROLL_STATE_IDLE) {
+            final int y = (int)ev.getY();
+            final int x = (int)ev.getX();
+            for (int i = mSize; --i >= 0;) {
+                PinnedHeader header = mHeaders[i];
+                final int padding = ViewUtil.isViewLayoutRtl(this) ?
+                        getWidth() - mHeaderPaddingStart - header.view.getWidth() :
+                        mHeaderPaddingStart;
+                if (header.visible && header.y <= y && header.y + header.height > y &&
+                        x >= padding && padding + header.view.getWidth() >= x) {
+                    mHeaderTouched = true;
+                    if (mScrollToSectionOnHeaderTouch &&
+                            ev.getAction() == MotionEvent.ACTION_DOWN) {
+                        return smoothScrollToPartition(i);
+                    } else {
+                        return true;
+                    }
+                }
+            }
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent ev) {
+        if (mHeaderTouched) {
+            if (ev.getAction() == MotionEvent.ACTION_UP) {
+                mHeaderTouched = false;
+            }
+            return true;
+        }
+        return super.onTouchEvent(ev);
+    }
+
+    private boolean smoothScrollToPartition(int partition) {
+        if (mAdapter == null) {
+            return false;
+        }
+        final int position = mAdapter.getScrollPositionForHeader(partition);
+        if (position == -1) {
+            return false;
+        }
+
+        int offset = 0;
+        for (int i = 0; i < partition; i++) {
+            PinnedHeader header = mHeaders[i];
+            if (header.visible) {
+                offset += header.height;
+            }
+        }
+        smoothScrollToPositionFromTop(position + getHeaderViewsCount(), offset,
+                DEFAULT_SMOOTH_SCROLL_DURATION);
+        return true;
+    }
+
+    private void invalidateIfAnimating() {
+        mAnimating = false;
+        for (int i = 0; i < mSize; i++) {
+            if (mHeaders[i].animating) {
+                mAnimating = true;
+                invalidate();
+                return;
+            }
+        }
+    }
+
+    @Override
+    protected void dispatchDraw(Canvas canvas) {
+        long currentTime = mAnimating ? System.currentTimeMillis() : 0;
+
+        int top = 0;
+        int right = 0;
+        int bottom = getBottom();
+        boolean hasVisibleHeaders = false;
+        for (int i = 0; i < mSize; i++) {
+            PinnedHeader header = mHeaders[i];
+            if (header.visible) {
+                hasVisibleHeaders = true;
+                if (header.state == BOTTOM && header.y < bottom) {
+                    bottom = header.y;
+                } else if (header.state == TOP || header.state == FADING) {
+                    int newTop = header.y + header.height;
+                    if (newTop > top) {
+                        top = newTop;
+                    }
+                }
+            }
+        }
+
+        if (hasVisibleHeaders) {
+            canvas.save();
+        }
+
+        super.dispatchDraw(canvas);
+
+        if (hasVisibleHeaders) {
+            canvas.restore();
+
+            // If the first item is visible and if it has a positive top that is greater than the
+            // first header's assigned y-value, use that for the first header's y value. This way,
+            // the header inherits any padding applied to the list view.
+            if (mSize > 0 && getFirstVisiblePosition() == 0) {
+                View firstChild = getChildAt(0);
+                PinnedHeader firstHeader = mHeaders[0];
+
+                if (firstHeader != null) {
+                    int firstHeaderTop = firstChild != null ? firstChild.getTop() : 0;
+                    firstHeader.y = Math.max(firstHeader.y, firstHeaderTop);
+                }
+            }
+
+            // First draw top headers, then the bottom ones to handle the Z axis correctly
+            for (int i = mSize; --i >= 0;) {
+                PinnedHeader header = mHeaders[i];
+                if (header.visible && (header.state == TOP || header.state == FADING)) {
+                    drawHeader(canvas, header, currentTime);
+                }
+            }
+
+            for (int i = 0; i < mSize; i++) {
+                PinnedHeader header = mHeaders[i];
+                if (header.visible && header.state == BOTTOM) {
+                    drawHeader(canvas, header, currentTime);
+                }
+            }
+        }
+
+        invalidateIfAnimating();
+    }
+
+    private void drawHeader(Canvas canvas, PinnedHeader header, long currentTime) {
+        if (header.animating) {
+            int timeLeft = (int)(header.targetTime - currentTime);
+            if (timeLeft <= 0) {
+                header.y = header.targetY;
+                header.visible = header.targetVisible;
+                header.animating = false;
+            } else {
+                header.y = header.targetY + (header.sourceY - header.targetY) * timeLeft
+                        / mAnimationDuration;
+            }
+        }
+        if (header.visible) {
+            View view = header.view;
+            int saveCount = canvas.save();
+            int translateX = ViewUtil.isViewLayoutRtl(this) ?
+                    getWidth() - mHeaderPaddingStart - view.getWidth() :
+                    mHeaderPaddingStart;
+            canvas.translate(translateX, header.y);
+            if (header.state == FADING) {
+                mBounds.set(0, 0, view.getWidth(), view.getHeight());
+                canvas.saveLayerAlpha(mBounds, header.alpha, Canvas.ALL_SAVE_FLAG);
+            }
+            view.draw(canvas);
+            canvas.restoreToCount(saveCount);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/list/ProviderStatusWatcher.java b/src/com/android/contacts/common/list/ProviderStatusWatcher.java
new file mode 100644
index 0000000..3e8e2eb
--- /dev/null
+++ b/src/com/android/contacts/common/list/ProviderStatusWatcher.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.list;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.provider.ContactsContract.ProviderStatus;
+import android.util.Log;
+
+import com.android.contacts.common.compat.ProviderStatusCompat;
+
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * A singleton that keeps track of the last known provider status.
+ *
+ * All methods must be called on the UI thread unless noted otherwise.
+ *
+ * All members must be set on the UI thread unless noted otherwise.
+ */
+public class ProviderStatusWatcher extends ContentObserver {
+    private static final String TAG = "ProviderStatusWatcher";
+    private static final boolean DEBUG = false;
+
+    /**
+     * Callback interface invoked when the provider status changes.
+     */
+    public interface ProviderStatusListener {
+        public void onProviderStatusChange();
+    }
+
+    private static final String[] PROJECTION = new String[] {
+        ProviderStatus.STATUS
+    };
+
+    /**
+     * We'll wait for this amount of time on the UI thread if the load hasn't finished.
+     */
+    private static final int LOAD_WAIT_TIMEOUT_MS = 1000;
+
+    private static ProviderStatusWatcher sInstance;
+
+    private final Context mContext;
+    private final Handler mHandler = new Handler();
+
+    private final Object mSignal = new Object();
+
+    private int mStartRequestedCount;
+
+    private LoaderTask mLoaderTask;
+
+    /** Last known provider status.  This can be changed on a worker thread.
+     *  See {@link ProviderStatus#STATUS} */
+    private Integer mProviderStatus;
+
+    private final ArrayList<ProviderStatusListener> mListeners = Lists.newArrayList();
+
+    private final Runnable mStartLoadingRunnable = new Runnable() {
+        @Override
+        public void run() {
+            startLoading();
+        }
+    };
+
+    /**
+     * Returns the singleton instance.
+     */
+    public synchronized static ProviderStatusWatcher getInstance(Context context) {
+        if (sInstance == null) {
+            sInstance = new ProviderStatusWatcher(context);
+        }
+        return sInstance;
+    }
+
+    private ProviderStatusWatcher(Context context) {
+        super(null);
+        mContext = context;
+    }
+
+    /** Add a listener. */
+    public void addListener(ProviderStatusListener listener) {
+        mListeners.add(listener);
+    }
+
+    /** Remove a listener */
+    public void removeListener(ProviderStatusListener listener) {
+        mListeners.remove(listener);
+    }
+
+    private void notifyListeners() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyListeners: " + mListeners.size());
+        }
+        if (isStarted()) {
+            for (ProviderStatusListener listener : mListeners) {
+                listener.onProviderStatusChange();
+            }
+        }
+    }
+
+    private boolean isStarted() {
+        return mStartRequestedCount > 0;
+    }
+
+    /**
+     * Starts watching the provider status.  {@link #start()} and {@link #stop()} calls can be
+     * nested.
+     */
+    public void start() {
+        if (++mStartRequestedCount == 1) {
+            mContext.getContentResolver()
+                .registerContentObserver(ProviderStatus.CONTENT_URI, false, this);
+            startLoading();
+
+            if (DEBUG) {
+                Log.d(TAG, "Start observing");
+            }
+        }
+    }
+
+    /**
+     * Stops watching the provider status.
+     */
+    public void stop() {
+        if (!isStarted()) {
+            Log.e(TAG, "Already stopped");
+            return;
+        }
+        if (--mStartRequestedCount == 0) {
+
+            mHandler.removeCallbacks(mStartLoadingRunnable);
+
+            mContext.getContentResolver().unregisterContentObserver(this);
+            if (DEBUG) {
+                Log.d(TAG, "Stop observing");
+            }
+        }
+    }
+
+    /**
+     * @return last known provider status.
+     *
+     * If this method is called when we haven't started the status query or the query is still in
+     * progress, it will start a query in a worker thread if necessary, and *wait for the result*.
+     *
+     * This means this method is essentially a blocking {@link ProviderStatus#CONTENT_URI} query.
+     * This URI is not backed by the file system, so is usually fast enough to perform on the main
+     * thread, but in extreme cases (when the system takes a while to bring up the contacts
+     * provider?) this may still cause ANRs.
+     *
+     * In order to avoid that, if we can't load the status within {@link #LOAD_WAIT_TIMEOUT_MS},
+     * we'll give up and just returns {@link ProviderStatusCompat#STATUS_BUSY} in order to unblock
+     * the UI thread.  The actual result will be delivered later via {@link ProviderStatusListener}.
+     * (If {@link ProviderStatusCompat#STATUS_BUSY} is returned, the app (should) shows an according
+     * message, like "contacts are being updated".)
+     */
+    public int getProviderStatus() {
+        waitForLoaded();
+
+        if (mProviderStatus == null) {
+            return ProviderStatusCompat.STATUS_BUSY;
+        }
+
+        return mProviderStatus;
+    }
+
+    private void waitForLoaded() {
+        if (mProviderStatus == null) {
+            if (mLoaderTask == null) {
+                // For some reason the loader couldn't load the status.  Let's start it again.
+                startLoading();
+            }
+            synchronized (mSignal) {
+                try {
+                    mSignal.wait(LOAD_WAIT_TIMEOUT_MS);
+                } catch (InterruptedException ignore) {
+                }
+            }
+        }
+    }
+
+    private void startLoading() {
+        if (mLoaderTask != null) {
+            return; // Task already running.
+        }
+
+        if (DEBUG) {
+            Log.d(TAG, "Start loading");
+        }
+
+        mLoaderTask = new LoaderTask();
+        mLoaderTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+    }
+
+    private class LoaderTask extends AsyncTask<Void, Void, Boolean> {
+        @Override
+        protected Boolean doInBackground(Void... params) {
+            try {
+                Cursor cursor = mContext.getContentResolver().query(ProviderStatus.CONTENT_URI,
+                        PROJECTION, null, null, null);
+                if (cursor != null) {
+                    try {
+                        if (cursor.moveToFirst()) {
+                            // Note here we can't just say "Status", as AsyncTask has the "Status"
+                            // enum too.
+                            mProviderStatus = cursor.getInt(0);
+                            return true;
+                        }
+                    } finally {
+                        cursor.close();
+                    }
+                }
+                return false;
+            } finally {
+                synchronized (mSignal) {
+                    mSignal.notifyAll();
+                }
+            }
+        }
+
+        @Override
+        protected void onCancelled(Boolean result) {
+            cleanUp();
+        }
+
+        @Override
+        protected void onPostExecute(Boolean loaded) {
+            cleanUp();
+            if (loaded != null && loaded) {
+                notifyListeners();
+            }
+        }
+
+        private void cleanUp() {
+            mLoaderTask = null;
+        }
+    }
+
+    /**
+     * Called when provider status may has changed.
+     *
+     * This method will be called on a worker thread by the framework.
+     */
+    @Override
+    public void onChange(boolean selfChange, Uri uri) {
+        if (!ProviderStatus.CONTENT_URI.equals(uri)) return;
+
+        // Provider status change is rare, so okay to log.
+        Log.i(TAG, "Provider status changed.");
+
+        mHandler.removeCallbacks(mStartLoadingRunnable); // Remove one in the queue, if any.
+        mHandler.post(mStartLoadingRunnable);
+    }
+}
diff --git a/src/com/android/contacts/common/list/ShortcutIntentBuilder.java b/src/com/android/contacts/common/list/ShortcutIntentBuilder.java
new file mode 100644
index 0000000..f30a176
--- /dev/null
+++ b/src/com/android/contacts/common/list/ShortcutIntentBuilder.java
@@ -0,0 +1,427 @@
+/*
+ * 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.contacts.common.list;
+
+import android.app.ActivityManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Paint.FontMetricsInt;
+import android.graphics.Rect;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+import android.telecom.PhoneAccount;
+import android.text.TextPaint;
+import android.text.TextUtils;
+import android.text.TextUtils.TruncateAt;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.R;
+
+/**
+ * Constructs shortcut intents.
+ */
+public class ShortcutIntentBuilder {
+
+    private static final String[] CONTACT_COLUMNS = {
+        Contacts.DISPLAY_NAME,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY
+    };
+
+    private static final int CONTACT_DISPLAY_NAME_COLUMN_INDEX = 0;
+    private static final int CONTACT_PHOTO_ID_COLUMN_INDEX = 1;
+    private static final int CONTACT_LOOKUP_KEY_COLUMN_INDEX = 2;
+
+    private static final String[] PHONE_COLUMNS = {
+        Phone.DISPLAY_NAME,
+        Phone.PHOTO_ID,
+        Phone.NUMBER,
+        Phone.TYPE,
+        Phone.LABEL,
+        Phone.LOOKUP_KEY
+    };
+
+    private static final int PHONE_DISPLAY_NAME_COLUMN_INDEX = 0;
+    private static final int PHONE_PHOTO_ID_COLUMN_INDEX = 1;
+    private static final int PHONE_NUMBER_COLUMN_INDEX = 2;
+    private static final int PHONE_TYPE_COLUMN_INDEX = 3;
+    private static final int PHONE_LABEL_COLUMN_INDEX = 4;
+    private static final int PHONE_LOOKUP_KEY_COLUMN_INDEX = 5;
+
+    private static final String[] PHOTO_COLUMNS = {
+        Photo.PHOTO,
+    };
+
+    private static final int PHOTO_PHOTO_COLUMN_INDEX = 0;
+
+    private static final String PHOTO_SELECTION = Photo._ID + "=?";
+
+    private final OnShortcutIntentCreatedListener mListener;
+    private final Context mContext;
+    private int mIconSize;
+    private final int mIconDensity;
+    private final int mOverlayTextBackgroundColor;
+    private final Resources mResources;
+
+    /**
+     * This is a hidden API of the launcher in JellyBean that allows us to disable the animation
+     * that it would usually do, because it interferes with our own animation for QuickContact.
+     * This is needed since some versions of the launcher override the intent flags and therefore
+     * ignore Intent.FLAG_ACTIVITY_NO_ANIMATION.
+     */
+    public static final String INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION =
+            "com.android.launcher.intent.extra.shortcut.INGORE_LAUNCH_ANIMATION";
+
+    /**
+     * Listener interface.
+     */
+    public interface OnShortcutIntentCreatedListener {
+
+        /**
+         * Callback for shortcut intent creation.
+         *
+         * @param uri the original URI for which the shortcut intent has been
+         *            created.
+         * @param shortcutIntent resulting shortcut intent.
+         */
+        void onShortcutIntentCreated(Uri uri, Intent shortcutIntent);
+    }
+
+    public ShortcutIntentBuilder(Context context, OnShortcutIntentCreatedListener listener) {
+        mContext = context;
+        mListener = listener;
+
+        mResources = context.getResources();
+        final ActivityManager am = (ActivityManager) context
+                .getSystemService(Context.ACTIVITY_SERVICE);
+        mIconSize = mResources.getDimensionPixelSize(R.dimen.shortcut_icon_size);
+        if (mIconSize == 0) {
+            mIconSize = am.getLauncherLargeIconSize();
+        }
+        mIconDensity = am.getLauncherLargeIconDensity();
+        mOverlayTextBackgroundColor = mResources.getColor(R.color.shortcut_overlay_text_background);
+    }
+
+    public void createContactShortcutIntent(Uri contactUri) {
+        new ContactLoadingAsyncTask(contactUri).execute();
+    }
+
+    public void createPhoneNumberShortcutIntent(Uri dataUri, String shortcutAction) {
+        new PhoneNumberLoadingAsyncTask(dataUri, shortcutAction).execute();
+    }
+
+    /**
+     * An asynchronous task that loads name, photo and other data from the database.
+     */
+    private abstract class LoadingAsyncTask extends AsyncTask<Void, Void, Void> {
+        protected Uri mUri;
+        protected String mContentType;
+        protected String mDisplayName;
+        protected String mLookupKey;
+        protected byte[] mBitmapData;
+        protected long mPhotoId;
+
+        public LoadingAsyncTask(Uri uri) {
+            mUri = uri;
+        }
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            mContentType = mContext.getContentResolver().getType(mUri);
+            loadData();
+            loadPhoto();
+            return null;
+        }
+
+        protected abstract void loadData();
+
+        private void loadPhoto() {
+            if (mPhotoId == 0) {
+                return;
+            }
+
+            ContentResolver resolver = mContext.getContentResolver();
+            Cursor cursor = resolver.query(Data.CONTENT_URI, PHOTO_COLUMNS, PHOTO_SELECTION,
+                    new String[] { String.valueOf(mPhotoId) }, null);
+            if (cursor != null) {
+                try {
+                    if (cursor.moveToFirst()) {
+                        mBitmapData = cursor.getBlob(PHOTO_PHOTO_COLUMN_INDEX);
+                    }
+                } finally {
+                    cursor.close();
+                }
+            }
+        }
+    }
+
+    private final class ContactLoadingAsyncTask extends LoadingAsyncTask {
+        public ContactLoadingAsyncTask(Uri uri) {
+            super(uri);
+        }
+
+        @Override
+        protected void loadData() {
+            ContentResolver resolver = mContext.getContentResolver();
+            Cursor cursor = resolver.query(mUri, CONTACT_COLUMNS, null, null, null);
+            if (cursor != null) {
+                try {
+                    if (cursor.moveToFirst()) {
+                        mDisplayName = cursor.getString(CONTACT_DISPLAY_NAME_COLUMN_INDEX);
+                        mPhotoId = cursor.getLong(CONTACT_PHOTO_ID_COLUMN_INDEX);
+                        mLookupKey = cursor.getString(CONTACT_LOOKUP_KEY_COLUMN_INDEX);
+                    }
+                } finally {
+                    cursor.close();
+                }
+            }
+        }
+        @Override
+        protected void onPostExecute(Void result) {
+            createContactShortcutIntent(mUri, mContentType, mDisplayName, mLookupKey, mBitmapData);
+        }
+    }
+
+    private final class PhoneNumberLoadingAsyncTask extends LoadingAsyncTask {
+        private final String mShortcutAction;
+        private String mPhoneNumber;
+        private int mPhoneType;
+        private String mPhoneLabel;
+
+        public PhoneNumberLoadingAsyncTask(Uri uri, String shortcutAction) {
+            super(uri);
+            mShortcutAction = shortcutAction;
+        }
+
+        @Override
+        protected void loadData() {
+            ContentResolver resolver = mContext.getContentResolver();
+            Cursor cursor = resolver.query(mUri, PHONE_COLUMNS, null, null, null);
+            if (cursor != null) {
+                try {
+                    if (cursor.moveToFirst()) {
+                        mDisplayName = cursor.getString(PHONE_DISPLAY_NAME_COLUMN_INDEX);
+                        mPhotoId = cursor.getLong(PHONE_PHOTO_ID_COLUMN_INDEX);
+                        mPhoneNumber = cursor.getString(PHONE_NUMBER_COLUMN_INDEX);
+                        mPhoneType = cursor.getInt(PHONE_TYPE_COLUMN_INDEX);
+                        mPhoneLabel = cursor.getString(PHONE_LABEL_COLUMN_INDEX);
+                        mLookupKey = cursor.getString(PHONE_LOOKUP_KEY_COLUMN_INDEX);
+                    }
+                } finally {
+                    cursor.close();
+                }
+            }
+        }
+
+        @Override
+        protected void onPostExecute(Void result) {
+            createPhoneNumberShortcutIntent(mUri, mDisplayName, mLookupKey, mBitmapData,
+                    mPhoneNumber, mPhoneType, mPhoneLabel, mShortcutAction);
+        }
+    }
+
+    private Drawable getPhotoDrawable(byte[] bitmapData, String displayName, String lookupKey) {
+        if (bitmapData != null) {
+            Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapData, 0, bitmapData.length, null);
+            return new BitmapDrawable(mContext.getResources(), bitmap);
+        } else {
+            return ContactPhotoManager.getDefaultAvatarDrawableForContact(mContext.getResources(),
+                    false, new DefaultImageRequest(displayName, lookupKey, false));
+        }
+    }
+
+    private void createContactShortcutIntent(Uri contactUri, String contentType, String displayName,
+            String lookupKey, byte[] bitmapData) {
+        Drawable drawable = getPhotoDrawable(bitmapData, displayName, lookupKey);
+
+        // Use an implicit intent without a package name set. It is reasonable for a disambiguation
+        // dialog to appear when opening QuickContacts from the launcher. Plus, this will be more
+        // resistant to future package name changes done to Contacts.
+        Intent shortcutIntent = new Intent(ContactsContract.QuickContact.ACTION_QUICK_CONTACT);
+
+        // When starting from the launcher, start in a new, cleared task.
+        // CLEAR_WHEN_TASK_RESET cannot reset the root of a task, so we
+        // clear the whole thing preemptively here since QuickContactActivity will
+        // finish itself when launching other detail activities. We need to use
+        // Intent.FLAG_ACTIVITY_NO_ANIMATION since not all versions of launcher will respect
+        // the INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION intent extra.
+        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
+                | Intent.FLAG_ACTIVITY_NO_ANIMATION);
+
+        // Tell the launcher to not do its animation, because we are doing our own
+        shortcutIntent.putExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION, true);
+
+        shortcutIntent.setDataAndType(contactUri, contentType);
+        shortcutIntent.putExtra(ContactsContract.QuickContact.EXTRA_EXCLUDE_MIMES,
+                (String[]) null);
+
+        final Bitmap icon = generateQuickContactIcon(drawable);
+
+        Intent intent = new Intent();
+        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
+        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
+        if (TextUtils.isEmpty(displayName)) {
+            intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, mContext.getResources().getString(
+                    R.string.missing_name));
+        } else {
+            intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, displayName);
+        }
+
+        mListener.onShortcutIntentCreated(contactUri, intent);
+    }
+
+    private void createPhoneNumberShortcutIntent(Uri uri, String displayName, String lookupKey,
+            byte[] bitmapData, String phoneNumber, int phoneType, String phoneLabel,
+            String shortcutAction) {
+        Drawable drawable = getPhotoDrawable(bitmapData, displayName, lookupKey);
+
+        Bitmap bitmap;
+        Uri phoneUri;
+        if (Intent.ACTION_CALL.equals(shortcutAction)) {
+            // Make the URI a direct tel: URI so that it will always continue to work
+            phoneUri = Uri.fromParts(PhoneAccount.SCHEME_TEL, phoneNumber, null);
+            bitmap = generatePhoneNumberIcon(drawable, phoneType, phoneLabel,
+                    R.drawable.ic_call);
+        } else {
+            phoneUri = Uri.fromParts(ContactsUtils.SCHEME_SMSTO, phoneNumber, null);
+            bitmap = generatePhoneNumberIcon(drawable, phoneType, phoneLabel,
+                    R.drawable.ic_message_24dp_mirrored);
+        }
+
+        Intent shortcutIntent = new Intent(shortcutAction, phoneUri);
+        shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+        Intent intent = new Intent();
+        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
+        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
+
+        if (TextUtils.isEmpty(displayName)) {
+            displayName = mContext.getResources().getString(R.string.missing_name);
+        }
+        if (TextUtils.equals(shortcutAction, Intent.ACTION_CALL)) {
+            intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
+                    mContext.getResources().getString(R.string.call_by_shortcut, displayName));
+        } else if (TextUtils.equals(shortcutAction, Intent.ACTION_SENDTO)) {
+            intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
+                    mContext.getResources().getString(R.string.sms_by_shortcut, displayName));
+        }
+
+        mListener.onShortcutIntentCreated(uri, intent);
+    }
+
+    private Bitmap generateQuickContactIcon(Drawable photo) {
+
+        // Setup the drawing classes
+        Bitmap bitmap = Bitmap.createBitmap(mIconSize, mIconSize, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(bitmap);
+
+        // Copy in the photo
+        Rect dst = new Rect(0,0, mIconSize, mIconSize);
+        photo.setBounds(dst);
+        photo.draw(canvas);
+
+        // Draw the icon with a rounded border
+        RoundedBitmapDrawable roundedDrawable =
+                RoundedBitmapDrawableFactory.create(mResources, bitmap);
+        roundedDrawable.setAntiAlias(true);
+        roundedDrawable.setCornerRadius(mIconSize / 2);
+        Bitmap roundedBitmap = Bitmap.createBitmap(mIconSize, mIconSize, Bitmap.Config.ARGB_8888);
+        canvas.setBitmap(roundedBitmap);
+        roundedDrawable.setBounds(dst);
+        roundedDrawable.draw(canvas);
+        canvas.setBitmap(null);
+
+        return roundedBitmap;
+    }
+
+    /**
+     * Generates a phone number shortcut icon. Adds an overlay describing the type of the phone
+     * number, and if there is a photo also adds the call action icon.
+     */
+    private Bitmap generatePhoneNumberIcon(Drawable photo, int phoneType, String phoneLabel,
+            int actionResId) {
+        final Resources r = mContext.getResources();
+        final float density = r.getDisplayMetrics().density;
+
+        Bitmap phoneIcon = ((BitmapDrawable) r.getDrawableForDensity(actionResId, mIconDensity))
+                .getBitmap();
+
+        Bitmap icon = generateQuickContactIcon(photo);
+        Canvas canvas = new Canvas(icon);
+
+        // Copy in the photo
+        Paint photoPaint = new Paint();
+        photoPaint.setDither(true);
+        photoPaint.setFilterBitmap(true);
+        Rect dst = new Rect(0, 0, mIconSize, mIconSize);
+
+        // Create an overlay for the phone number type
+        CharSequence overlay = Phone.getTypeLabel(r, phoneType, phoneLabel);
+
+        if (overlay != null) {
+            TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
+            textPaint.setTextSize(r.getDimension(R.dimen.shortcut_overlay_text_size));
+            textPaint.setColor(r.getColor(R.color.textColorIconOverlay));
+            textPaint.setShadowLayer(4f, 0, 2f, r.getColor(R.color.textColorIconOverlayShadow));
+
+            final FontMetricsInt fmi = textPaint.getFontMetricsInt();
+
+            // First fill in a darker background around the text to be drawn
+            final Paint workPaint = new Paint();
+            workPaint.setColor(mOverlayTextBackgroundColor);
+            workPaint.setStyle(Paint.Style.FILL);
+            final int textPadding = r
+                    .getDimensionPixelOffset(R.dimen.shortcut_overlay_text_background_padding);
+            final int textBandHeight = (fmi.descent - fmi.ascent) + textPadding * 2;
+            dst.set(0, mIconSize - textBandHeight, mIconSize, mIconSize);
+            canvas.drawRect(dst, workPaint);
+
+            overlay = TextUtils.ellipsize(overlay, textPaint, mIconSize, TruncateAt.END);
+            final float textWidth = textPaint.measureText(overlay, 0, overlay.length());
+            canvas.drawText(overlay, 0, overlay.length(), (mIconSize - textWidth) / 2, mIconSize
+                    - fmi.descent - textPadding, textPaint);
+        }
+
+        // Draw the phone action icon as an overlay
+        Rect src = new Rect(0, 0, phoneIcon.getWidth(), phoneIcon.getHeight());
+        int iconWidth = icon.getWidth();
+        dst.set(iconWidth - ((int) (20 * density)), -1,
+                iconWidth, ((int) (19 * density)));
+        canvas.drawBitmap(phoneIcon, src, dst, photoPaint);
+
+        canvas.setBitmap(null);
+
+        return icon;
+    }
+}
diff --git a/src/com/android/contacts/common/list/ViewPagerTabStrip.java b/src/com/android/contacts/common/list/ViewPagerTabStrip.java
new file mode 100644
index 0000000..c8ae21a
--- /dev/null
+++ b/src/com/android/contacts/common/list/ViewPagerTabStrip.java
@@ -0,0 +1,108 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import com.android.contacts.common.R;
+
+public class ViewPagerTabStrip extends LinearLayout {
+    private int mSelectedUnderlineThickness;
+    private final Paint mSelectedUnderlinePaint;
+
+    private int mIndexForSelection;
+    private float mSelectionOffset;
+
+    public ViewPagerTabStrip(Context context) {
+        this(context, null);
+    }
+
+    public ViewPagerTabStrip(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        final Resources res = context.getResources();
+
+        mSelectedUnderlineThickness =
+                res.getDimensionPixelSize(R.dimen.tab_selected_underline_height);
+        int underlineColor = res.getColor(R.color.tab_selected_underline_color);
+        int backgroundColor = res.getColor(R.color.actionbar_background_color);
+
+        mSelectedUnderlinePaint = new Paint();
+        mSelectedUnderlinePaint.setColor(underlineColor);
+
+        setBackgroundColor(backgroundColor);
+        setWillNotDraw(false);
+    }
+
+    /**
+     * Notifies this view that view pager has been scrolled. We save the tab index
+     * and selection offset for interpolating the position and width of selection
+     * underline.
+     */
+    void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+        mIndexForSelection = position;
+        mSelectionOffset = positionOffset;
+        invalidate();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        int childCount = getChildCount();
+
+        // Thick colored underline below the current selection
+        if (childCount > 0) {
+            View selectedTitle = getChildAt(mIndexForSelection);
+
+            if (selectedTitle == null) {
+                // The view pager's tab count changed but we weren't notified yet. Ignore this draw
+                // pass, when we get a new selection we will update and draw the selection strip in
+                // the correct place.
+                return;
+            }
+            int selectedLeft = selectedTitle.getLeft();
+            int selectedRight = selectedTitle.getRight();
+            final boolean isRtl = isRtl();
+            final boolean hasNextTab = isRtl ? mIndexForSelection > 0
+                    : (mIndexForSelection < (getChildCount() - 1));
+            if ((mSelectionOffset > 0.0f) && hasNextTab) {
+                // Draw the selection partway between the tabs
+                View nextTitle = getChildAt(mIndexForSelection + (isRtl ? -1 : 1));
+                int nextLeft = nextTitle.getLeft();
+                int nextRight = nextTitle.getRight();
+
+                selectedLeft = (int) (mSelectionOffset * nextLeft +
+                        (1.0f - mSelectionOffset) * selectedLeft);
+                selectedRight = (int) (mSelectionOffset * nextRight +
+                        (1.0f - mSelectionOffset) * selectedRight);
+            }
+
+            int height = getHeight();
+            canvas.drawRect(selectedLeft, height - mSelectedUnderlineThickness,
+                    selectedRight, height, mSelectedUnderlinePaint);
+        }
+    }
+
+    private boolean isRtl() {
+        return getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/list/ViewPagerTabs.java b/src/com/android/contacts/common/list/ViewPagerTabs.java
new file mode 100644
index 0000000..48de6af
--- /dev/null
+++ b/src/com/android/contacts/common/list/ViewPagerTabs.java
@@ -0,0 +1,315 @@
+/*
+ * 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.contacts.common.list;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.graphics.Outline;
+import android.support.v4.view.PagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+import android.widget.FrameLayout;
+import android.widget.HorizontalScrollView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CompatUtils;
+
+/**
+ * Lightweight implementation of ViewPager tabs. This looks similar to traditional actionBar tabs,
+ * but allows for the view containing the tabs to be placed anywhere on screen. Text-related
+ * attributes can also be assigned in XML - these will get propogated to the child TextViews
+ * automatically.
+ */
+public class ViewPagerTabs extends HorizontalScrollView implements ViewPager.OnPageChangeListener {
+
+    ViewPager mPager;
+    private ViewPagerTabStrip mTabStrip;
+
+    /**
+     * Linearlayout that will contain the TextViews serving as tabs. This is the only child
+     * of the parent HorizontalScrollView.
+     */
+    final int mTextStyle;
+    final ColorStateList mTextColor;
+    final int mTextSize;
+    final boolean mTextAllCaps;
+    int mPrevSelected = -1;
+    int mSidePadding;
+
+    private int[] mTabIcons;
+    // For displaying the unread count next to the tab icon.
+    private int[] mUnreadCounts;
+
+    private static final ViewOutlineProvider VIEW_BOUNDS_OUTLINE_PROVIDER;
+    static {
+        if (CompatUtils.isLollipopCompatible()) {
+            VIEW_BOUNDS_OUTLINE_PROVIDER = new ViewOutlineProvider() {
+                @Override
+                public void getOutline(View view, Outline outline) {
+                    outline.setRect(0, 0, view.getWidth(), view.getHeight());
+                }
+            };
+        } else {
+            VIEW_BOUNDS_OUTLINE_PROVIDER = null;
+        }
+    }
+
+    private static final int TAB_SIDE_PADDING_IN_DPS = 10;
+
+    // TODO: This should use <declare-styleable> in the future
+    private static final int[] ATTRS = new int[] {
+        android.R.attr.textSize,
+        android.R.attr.textStyle,
+        android.R.attr.textColor,
+        android.R.attr.textAllCaps
+    };
+
+    /**
+     * Simulates actionbar tab behavior by showing a toast with the tab title when long clicked.
+     */
+    private class OnTabLongClickListener implements OnLongClickListener {
+        final int mPosition;
+
+        public OnTabLongClickListener(int position) {
+            mPosition = position;
+        }
+
+        @Override
+        public boolean onLongClick(View v) {
+            final int[] screenPos = new int[2];
+            getLocationOnScreen(screenPos);
+
+            final Context context = getContext();
+            final int width = getWidth();
+            final int height = getHeight();
+            final int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
+
+            Toast toast = Toast.makeText(context, mPager.getAdapter().getPageTitle(mPosition),
+                    Toast.LENGTH_SHORT);
+
+            // Show the toast under the tab
+            toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL,
+                    (screenPos[0] + width / 2) - screenWidth / 2, screenPos[1] + height);
+
+            toast.show();
+            return true;
+        }
+    }
+
+    public ViewPagerTabs(Context context) {
+        this(context, null);
+    }
+
+    public ViewPagerTabs(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public ViewPagerTabs(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        setFillViewport(true);
+
+        mSidePadding = (int) (getResources().getDisplayMetrics().density * TAB_SIDE_PADDING_IN_DPS);
+
+        final TypedArray a = context.obtainStyledAttributes(attrs, ATTRS);
+        mTextSize = a.getDimensionPixelSize(0, 0);
+        mTextStyle = a.getInt(1, 0);
+        mTextColor = a.getColorStateList(2);
+        mTextAllCaps = a.getBoolean(3, false);
+
+        mTabStrip = new ViewPagerTabStrip(context);
+        addView(mTabStrip,
+                new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
+        a.recycle();
+
+        if (CompatUtils.isLollipopCompatible()) {
+            // enable shadow casting from view bounds
+            setOutlineProvider(VIEW_BOUNDS_OUTLINE_PROVIDER);
+        }
+    }
+
+    public void setViewPager(ViewPager viewPager) {
+        mPager = viewPager;
+        addTabs(mPager.getAdapter());
+    }
+
+    /**
+     * Set the tab icons and initialize an array for unread counts the same length as the icon
+     * array.
+     *
+     * @param tabIcons An array representing the tab icons in order.
+     */
+    public void configureTabIcons(int[] tabIcons) {
+        mTabIcons = tabIcons;
+        mUnreadCounts = new int[tabIcons.length];
+    }
+
+    public void setUnreadCount(int count, int position) {
+        if (mUnreadCounts == null || position >= mUnreadCounts.length) {
+            return;
+        }
+        mUnreadCounts[position] = count;
+    }
+
+    private void addTabs(PagerAdapter adapter) {
+        mTabStrip.removeAllViews();
+
+        final int count = adapter.getCount();
+        for (int i = 0; i < count; i++) {
+            addTab(adapter.getPageTitle(i), i);
+        }
+    }
+
+    private void addTab(CharSequence tabTitle, final int position) {
+        View tabView;
+        if (mTabIcons != null && position < mTabIcons.length) {
+            View layout = LayoutInflater.from(getContext()).inflate(
+                    R.layout.unread_count_tab, null);
+            View iconView = layout.findViewById(R.id.icon);
+            iconView.setBackgroundResource(mTabIcons[position]);
+            iconView.setContentDescription(tabTitle);
+            TextView textView = (TextView) layout.findViewById(R.id.count);
+            if (mUnreadCounts != null && mUnreadCounts[position] > 0) {
+                textView.setText(Integer.toString(mUnreadCounts[position]));
+                textView.setVisibility(View.VISIBLE);
+                iconView.setContentDescription(getResources().getQuantityString(
+                        R.plurals.tab_title_with_unread_items,
+                        mUnreadCounts[position],
+                        tabTitle.toString(),
+                        mUnreadCounts[position]));
+            } else {
+                textView.setVisibility(View.INVISIBLE);
+                iconView.setContentDescription(tabTitle);
+            }
+            tabView = layout;
+        } else {
+            final TextView textView = new TextView(getContext());
+            textView.setText(tabTitle);
+            textView.setBackgroundResource(R.drawable.view_pager_tab_background);
+
+            // Assign various text appearance related attributes to child views.
+            if (mTextStyle > 0) {
+                textView.setTypeface(textView.getTypeface(), mTextStyle);
+            }
+            if (mTextSize > 0) {
+                textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);
+            }
+            if (mTextColor != null) {
+                textView.setTextColor(mTextColor);
+            }
+            textView.setAllCaps(mTextAllCaps);
+            textView.setGravity(Gravity.CENTER);
+
+            tabView = textView;
+        }
+
+        tabView.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mPager.setCurrentItem(getRtlPosition(position));
+            }
+        });
+
+        tabView.setOnLongClickListener(new OnTabLongClickListener(position));
+
+        tabView.setPadding(mSidePadding, 0, mSidePadding, 0);
+
+        mTabStrip.addView(tabView, position, new LinearLayout.LayoutParams(
+                LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 1));
+
+        // Default to the first child being selected
+        if (position == 0) {
+            mPrevSelected = 0;
+            tabView.setSelected(true);
+        }
+    }
+
+    /**
+     * Remove a tab at a certain index.
+     *
+     * @param index The index of the tab view we wish to remove.
+     */
+    public void removeTab(int index) {
+        View view = mTabStrip.getChildAt(index);
+        if (view != null) {
+            mTabStrip.removeView(view);
+        }
+    }
+
+    /**
+     * Refresh a tab at a certain index by removing it and reconstructing it.
+     *
+     * @param index The index of the tab view we wish to update.
+     */
+    public void updateTab(int index) {
+        removeTab(index);
+
+        if (index < mPager.getAdapter().getCount()) {
+            addTab(mPager.getAdapter().getPageTitle(index), index);
+        }
+    }
+
+    @Override
+    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+        position = getRtlPosition(position);
+        int tabStripChildCount = mTabStrip.getChildCount();
+        if ((tabStripChildCount == 0) || (position < 0) || (position >= tabStripChildCount)) {
+            return;
+        }
+
+        mTabStrip.onPageScrolled(position, positionOffset, positionOffsetPixels);
+    }
+
+    @Override
+    public void onPageSelected(int position) {
+        position = getRtlPosition(position);
+        int tabStripChildCount = mTabStrip.getChildCount();
+        if ((tabStripChildCount == 0) || (position < 0) || (position >= tabStripChildCount)) {
+            return;
+        }
+
+        if (mPrevSelected >= 0 && mPrevSelected < tabStripChildCount) {
+            mTabStrip.getChildAt(mPrevSelected).setSelected(false);
+        }
+        final View selectedChild = mTabStrip.getChildAt(position);
+        selectedChild.setSelected(true);
+
+        // Update scroll position
+        final int scrollPos = selectedChild.getLeft() - (getWidth() - selectedChild.getWidth()) / 2;
+        smoothScrollTo(scrollPos, 0);
+        mPrevSelected = position;
+    }
+
+    @Override
+    public void onPageScrollStateChanged(int state) {
+    }
+
+    private int getRtlPosition(int position) {
+        if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
+            return mTabStrip.getChildCount() - 1 - position;
+        }
+        return position;
+    }
+}
+
diff --git a/src/com/android/contacts/common/location/CountryDetector.java b/src/com/android/contacts/common/location/CountryDetector.java
new file mode 100644
index 0000000..2d29a69
--- /dev/null
+++ b/src/com/android/contacts/common/location/CountryDetector.java
@@ -0,0 +1,130 @@
+package com.android.contacts.common.location;
+
+import android.content.Context;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.testing.NeededForTesting;
+
+import java.util.Locale;
+
+/**
+ * This class is used to detect the country where the user is. It is a simplified version of the
+ * country detector service in the framework. The sources of country location are queried in the
+ * following order of reliability:
+ * <ul>
+ * <li>Mobile network</li>
+ * <li>SIM's country</li>
+ * <li>User's default locale</li>
+ * </ul>
+ *
+ * As far as possible this class tries to replicate the behavior of the system's country detector
+ * service:
+ * 1) Order in priority of sources of country location
+ * 2) Mobile network information provided by CDMA phones is ignored
+ */
+public class CountryDetector {
+    private static final String TAG = "CountryDetector";
+
+    private static CountryDetector sInstance;
+
+    private final Context mContext;
+    private final LocaleProvider mLocaleProvider;
+    private final TelephonyManager mTelephonyManager;
+
+    // Used as a default country code when all the sources of country data have failed in the
+    // exceedingly rare event that the device does not have a default locale set for some reason.
+    private final String DEFAULT_COUNTRY_ISO = "US";
+
+    /**
+     * Class that can be used to return the user's default locale. This is in its own class so that
+     * it can be mocked out.
+     */
+    public static class LocaleProvider {
+        public Locale getDefaultLocale() {
+            return Locale.getDefault();
+        }
+    }
+
+    private CountryDetector(Context context) {
+        this (context, (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE),
+                new LocaleProvider());
+    }
+
+    private CountryDetector(Context context, TelephonyManager telephonyManager,
+            LocaleProvider localeProvider) {
+        mTelephonyManager = telephonyManager;
+        mLocaleProvider = localeProvider;
+        mContext = context;
+    }
+
+    /**
+     * Factory method for {@link CountryDetector} that allows the caller to provide mock objects.
+     */
+    @NeededForTesting
+    public CountryDetector getInstanceForTest(Context context, TelephonyManager telephonyManager,
+            LocaleProvider localeProvider) {
+        return new CountryDetector(context, telephonyManager, localeProvider);
+    }
+
+    /**
+     * Returns the instance of the country detector. {@link #initialize(Context)} must have been
+     * called previously.
+     *
+     * @return the initialized country detector.
+     */
+    public synchronized static CountryDetector getInstance(Context context) {
+        if (sInstance == null) {
+            sInstance = new CountryDetector(context.getApplicationContext());
+        }
+        return sInstance;
+    }
+
+    public String getCurrentCountryIso() {
+        String result = null;
+        if (isNetworkCountryCodeAvailable()) {
+            result = getNetworkBasedCountryIso();
+        }
+        if (TextUtils.isEmpty(result)) {
+            result = getSimBasedCountryIso();
+        }
+        if (TextUtils.isEmpty(result)) {
+            result = getLocaleBasedCountryIso();
+        }
+        if (TextUtils.isEmpty(result)) {
+            result = DEFAULT_COUNTRY_ISO;
+        }
+        return result.toUpperCase(Locale.US);
+    }
+
+    /**
+     * @return the country code of the current telephony network the user is connected to.
+     */
+    private String getNetworkBasedCountryIso() {
+        return mTelephonyManager.getNetworkCountryIso();
+    }
+
+    /**
+     * @return the country code of the SIM card currently inserted in the device.
+     */
+    private String getSimBasedCountryIso() {
+        return mTelephonyManager.getSimCountryIso();
+    }
+
+    /**
+     * @return the country code of the user's currently selected locale.
+     */
+    private String getLocaleBasedCountryIso() {
+        Locale defaultLocale = mLocaleProvider.getDefaultLocale();
+        if (defaultLocale != null) {
+            return defaultLocale.getCountry();
+        }
+        return null;
+    }
+
+    private boolean isNetworkCountryCodeAvailable() {
+        // On CDMA TelephonyManager.getNetworkCountryIso() just returns the SIM's country code.
+        return mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM;
+    }
+}
diff --git a/src/com/android/contacts/common/logging/ListEvent.java b/src/com/android/contacts/common/logging/ListEvent.java
new file mode 100644
index 0000000..7d019dd
--- /dev/null
+++ b/src/com/android/contacts/common/logging/ListEvent.java
@@ -0,0 +1,94 @@
+/*
+ * 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.contacts.common.logging;
+
+import com.google.common.base.Objects;
+
+/**
+ * Describes how user view and use a list
+ */
+public final class ListEvent {
+
+    /** The type of action taken by the user. **/
+    public int actionType;
+
+    /** The type of list the user is viewing. **/
+    public int listType;
+
+    /** The number of contacts in the list. **/
+    public int count;
+
+    /** The index of contact clicked by user. **/
+    public int clickedIndex = -1;
+
+    /** The number of contact selected when user takes an action (link, delete, share, etc). **/
+    public int numSelected;
+
+    // Should match ContactsExtension.ListEvent.ActionType values in
+    // http://cs/google3/logs/proto/wireless/android/contacts/contacts_extensions.proto
+    public static final class ActionType {
+        public static final int UNKNOWN = 0;
+        public static final int LOAD = 1;
+        public static final int CLICK = 2;
+        public static final int SELECT = 3;
+        public static final int SHARE = 4;
+        public static final int DELETE = 5;
+        public static final int LINK = 6;
+        public static final int REMOVE_LABEL = 7;
+
+        private ActionType() {
+        }
+    }
+
+    // Should match ContactsExtension.ListEvent.ListType values in
+    // http://cs/google3/logs/proto/wireless/android/contacts/contacts_extensions.proto
+    public static final class ListType {
+        public static final int UNKNOWN_LIST = 0;
+        public static final int ALL_CONTACTS = 1;
+        public static final int ACCOUNT = 2;
+        public static final int GROUP = 3;
+        public static final int SEARCH_RESULT = 4;
+        public static final int DEVICE = 5;
+        public static final int CUSTOM = 6;
+        public static final int STARRED = 7;
+        public static final int PHONE_NUMBERS = 8;
+        public static final int SINGLE_CONTACT = 9;
+        public static final int PICK_CONTACT = 10;
+        public static final int PICK_CONTACT_FOR_SHORTCUT = 11;
+        public static final int PICK_PHONE = 12;
+        public static final int PICK_EMAIL = 13;
+        public static final int PICK_POSTAL = 14;
+        public static final int PICK_JOIN = 15;
+        public static final int PICK_GROUP_MEMBERS = 16;
+
+        private ListType() {
+        }
+    }
+
+    public ListEvent() {
+    }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this)
+                .add("actionType", actionType)
+                .add("listType", listType)
+                .add("count", count)
+                .add("clickedIndex", clickedIndex)
+                .add("numSelected", numSelected)
+                .toString();
+    }
+}
diff --git a/src/com/android/contacts/common/logging/Logger.java b/src/com/android/contacts/common/logging/Logger.java
new file mode 100644
index 0000000..72d1e2a
--- /dev/null
+++ b/src/com/android/contacts/common/logging/Logger.java
@@ -0,0 +1,85 @@
+/*
+ * 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.contacts.common.logging;
+
+import android.app.Activity;
+
+import com.android.contacts.common.logging.ScreenEvent.ScreenType;
+import com.android.contacts.commonbind.ObjectFactory;
+
+/**
+ * Logs analytics events.
+ */
+public abstract class Logger {
+    public static final String TAG = "Logger";
+
+    private static Logger getInstance() {
+        return ObjectFactory.getLogger();
+    }
+
+    /**
+     * Logs an event indicating that a screen was displayed.
+     *
+     * @param screenType integer identifier of the displayed screen
+     * @param activity Parent activity of the displayed screen.
+     */
+    public static void logScreenView(Activity activity, int screenType) {
+        logScreenView(activity, screenType, ScreenType.UNKNOWN);
+    }
+
+    /**
+     * @param previousScreenType integer identifier of the displayed screen the user came from.
+     */
+    public static void logScreenView(Activity activity, int screenType, int previousScreenType) {
+        final Logger logger = getInstance();
+        if (logger != null) {
+            logger.logScreenViewImpl(screenType, previousScreenType);
+        }
+    }
+
+    /**
+     * Logs the results of a user search for a particular contact.
+     */
+    public static void logSearchEvent(SearchState searchState) {
+        final Logger logger = getInstance();
+        if (logger != null) {
+            logger.logSearchEventImpl(searchState);
+        }
+    }
+
+    /**
+     * Logs how users view and use a contacts list. See {@link ListEvent} for definition of
+     * parameters.
+     */
+    public static void logListEvent(int actionType, int listType, int count, int clickedIndex,
+            int numSelected) {
+        final ListEvent event = new ListEvent();
+        event.actionType = actionType;
+        event.listType = listType;
+        event.count = count;
+        event.clickedIndex = clickedIndex;
+        event.numSelected = numSelected;
+
+        final Logger logger = getInstance();
+        if (logger != null) {
+            logger.logListEventImpl(event);
+        }
+    }
+
+    public abstract void logScreenViewImpl(int screenType, int previousScreenType);
+    public abstract void logSearchEventImpl(SearchState searchState);
+    public abstract void logListEventImpl(ListEvent event);
+}
diff --git a/src/com/android/contacts/common/logging/ScreenEvent.java b/src/com/android/contacts/common/logging/ScreenEvent.java
new file mode 100644
index 0000000..6af020b
--- /dev/null
+++ b/src/com/android/contacts/common/logging/ScreenEvent.java
@@ -0,0 +1,38 @@
+/*
+ * 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.contacts.common.logging;
+
+/**
+ * Stores constants identifying individual screens/dialogs/fragments in the application, and also
+ * provides a mapping of integer id -> screen name mappings for analytics purposes.
+ */
+public class ScreenEvent {
+
+    // Should match ContactsExtension.ScreenEvent.ScreenType values in
+    // http://cs/google3/logs/proto/wireless/android/contacts/contacts_extensions.proto
+    public static class ScreenType {
+        public static final int UNKNOWN = 0;
+        public static final int SEARCH = 1;
+        public static final int SEARCH_EXIT = 2;
+        public static final int FAVORITES = 3;
+        public static final int ALL_CONTACTS = 4;
+        public static final int QUICK_CONTACT = 5;
+        public static final int EDITOR = 6;
+        public static final int LIST_ACCOUNT = 7;
+        public static final int LIST_GROUP = 8;
+        public static final int ME_CONTACT = 9;
+    }
+}
diff --git a/src/com/android/contacts/common/logging/SearchState.java b/src/com/android/contacts/common/logging/SearchState.java
new file mode 100644
index 0000000..f4719e4
--- /dev/null
+++ b/src/com/android/contacts/common/logging/SearchState.java
@@ -0,0 +1,109 @@
+/*
+ * 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.contacts.common.logging;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.google.common.base.Objects;
+
+/**
+ * Describes the results of a user search for a particular contact.
+ */
+public final class SearchState implements Parcelable {
+
+    /** The length of the query string input by the user. */
+    public int queryLength;
+
+    /** The number of partitions (groups of results) presented to the user. */
+    public int numPartitions;
+
+    /** The total number of results (across all partitions) presented to the user. */
+    public int numResults;
+
+    /** The number of results presented to the user in the partition that was selected. */
+    public int numResultsInSelectedPartition = -1;
+
+    /** The zero-based index of the partition in which the clicked query result resides. */
+    public int selectedPartition = -1;
+
+    /** The index of the clicked query result within its partition. */
+    public int selectedIndexInPartition = -1;
+
+    /**
+     * The zero-based index of the clicked query result among all results displayed to the user
+     * (across partitions).
+     */
+    public int selectedIndex = -1;
+
+    public static final Creator<SearchState> CREATOR = new Creator<SearchState>() {
+        @Override
+        public SearchState createFromParcel(Parcel in) {
+            return new SearchState(in);
+        }
+
+        @Override
+        public SearchState[] newArray(int size) {
+            return new SearchState[size];
+        }
+    };
+
+    public SearchState() {
+    }
+
+    protected SearchState(Parcel source) {
+        readFromParcel(source);
+    }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this)
+                .add("queryLength", queryLength)
+                .add("numPartitions", numPartitions)
+                .add("numResults", numResults)
+                .add("numResultsInSelectedPartition", numResultsInSelectedPartition)
+                .add("selectedPartition", selectedPartition)
+                .add("selectedIndexInPartition", selectedIndexInPartition)
+                .add("selectedIndex", selectedIndex)
+                .toString();
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(queryLength);
+        dest.writeInt(numPartitions);
+        dest.writeInt(numResults);
+        dest.writeInt(numResultsInSelectedPartition);
+        dest.writeInt(selectedPartition);
+        dest.writeInt(selectedIndexInPartition);
+        dest.writeInt(selectedIndex);
+    }
+
+    private void readFromParcel(Parcel source) {
+        queryLength = source.readInt();
+        numPartitions = source.readInt();
+        numResults = source.readInt();
+        numResultsInSelectedPartition = source.readInt();
+        selectedPartition = source.readInt();
+        selectedIndexInPartition = source.readInt();
+        selectedIndex = source.readInt();
+    }
+}
diff --git a/src/com/android/contacts/common/model/AccountTypeManager.java b/src/com/android/contacts/common/model/AccountTypeManager.java
new file mode 100644
index 0000000..3ef3502
--- /dev/null
+++ b/src/com/android/contacts/common/model/AccountTypeManager.java
@@ -0,0 +1,846 @@
+/*
+ * 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.contacts.common.model;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.accounts.OnAccountsUpdateListener;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SyncAdapterType;
+import android.content.SyncStatusObserver;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
+import android.os.SystemClock;
+import android.provider.ContactsContract;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.TimingLogger;
+
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.list.ContactListFilterController;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.ExchangeAccountType;
+import com.android.contacts.common.model.account.ExternalAccountType;
+import com.android.contacts.common.model.account.FallbackAccountType;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.account.SamsungAccountType;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.Constants;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Objects;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Singleton holder for all parsed {@link AccountType} available on the
+ * system, typically filled through {@link PackageManager} queries.
+ */
+public abstract class AccountTypeManager {
+    static final String TAG = "AccountTypeManager";
+
+    private static final Object mInitializationLock = new Object();
+    private static AccountTypeManager mAccountTypeManager;
+
+    /**
+     * Requests the singleton instance of {@link AccountTypeManager} with data bound from
+     * the available authenticators. This method can safely be called from the UI thread.
+     */
+    public static AccountTypeManager getInstance(Context context) {
+        synchronized (mInitializationLock) {
+            if (mAccountTypeManager == null) {
+                context = context.getApplicationContext();
+                mAccountTypeManager = new AccountTypeManagerImpl(context);
+            }
+        }
+        return mAccountTypeManager;
+    }
+
+    /**
+     * Set the instance of account type manager.  This is only for and should only be used by unit
+     * tests.  While having this method is not ideal, it's simpler than the alternative of
+     * holding this as a service in the ContactsApplication context class.
+     *
+     * @param mockManager The mock AccountTypeManager.
+     */
+    @NeededForTesting
+    public static void setInstanceForTest(AccountTypeManager mockManager) {
+        synchronized (mInitializationLock) {
+            mAccountTypeManager = mockManager;
+        }
+    }
+
+    /**
+     * Returns the list of all accounts (if contactWritableOnly is false) or just the list of
+     * contact writable accounts (if contactWritableOnly is true).
+     */
+    // TODO: Consider splitting this into getContactWritableAccounts() and getAllAccounts()
+    public abstract List<AccountWithDataSet> getAccounts(boolean contactWritableOnly);
+
+    /**
+     * Sort accounts based on default account.
+     */
+    public abstract void sortAccounts(AccountWithDataSet defaultAccount);
+
+    /**
+     * Returns the list of accounts that are group writable.
+     */
+    public abstract List<AccountWithDataSet> getGroupWritableAccounts();
+
+    public abstract AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet);
+
+    public final AccountType getAccountType(String accountType, String dataSet) {
+        return getAccountType(AccountTypeWithDataSet.get(accountType, dataSet));
+    }
+
+    public final AccountType getAccountTypeForAccount(AccountWithDataSet account) {
+        if (account != null) {
+            return getAccountType(account.getAccountTypeWithDataSet());
+        }
+        return getAccountType(null, null);
+    }
+
+    /**
+     * @return Unmodifiable map from {@link AccountTypeWithDataSet}s to {@link AccountType}s
+     * which support the "invite" feature and have one or more account.
+     *
+     * This is a filtered down and more "usable" list compared to
+     * {@link #getAllInvitableAccountTypes}, where usable is defined as:
+     * (1) making sure that the app that contributed the account type is not disabled
+     * (in order to avoid presenting the user with an option that does nothing), and
+     * (2) that there is at least one raw contact with that account type in the database
+     * (assuming that the user probably doesn't use that account type).
+     *
+     * Warning: Don't use on the UI thread because this can scan the database.
+     */
+    public abstract Map<AccountTypeWithDataSet, AccountType> getUsableInvitableAccountTypes();
+
+    /**
+     * Find the best {@link DataKind} matching the requested
+     * {@link AccountType#accountType}, {@link AccountType#dataSet}, and {@link DataKind#mimeType}.
+     * If no direct match found, we try searching {@link FallbackAccountType}.
+     */
+    public DataKind getKindOrFallback(AccountType type, String mimeType) {
+        return type == null ? null : type.getKindForMimetype(mimeType);
+    }
+
+    /**
+     * Returns all registered {@link AccountType}s, including extension ones.
+     *
+     * @param contactWritableOnly if true, it only returns ones that support writing contacts.
+     */
+    public abstract List<AccountType> getAccountTypes(boolean contactWritableOnly);
+
+    /**
+     * @param contactWritableOnly if true, it only returns ones that support writing contacts.
+     * @return true when this instance contains the given account.
+     */
+    public boolean contains(AccountWithDataSet account, boolean contactWritableOnly) {
+        for (AccountWithDataSet account_2 : getAccounts(contactWritableOnly)) {
+            if (account.equals(account_2)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
+
+class AccountComparator implements Comparator<AccountWithDataSet> {
+    private AccountWithDataSet mDefaultAccount;
+
+    public AccountComparator(AccountWithDataSet defaultAccount) {
+        mDefaultAccount = defaultAccount;
+    }
+
+    @Override
+    public int compare(AccountWithDataSet a, AccountWithDataSet b) {
+        if (Objects.equal(a.name, b.name) && Objects.equal(a.type, b.type)
+                && Objects.equal(a.dataSet, b.dataSet)) {
+            return 0;
+        } else if (b.name == null || b.type == null) {
+            return -1;
+        } else if (a.name == null || a.type == null) {
+            return 1;
+        } else if (isWritableGoogleAccount(a) && a.equals(mDefaultAccount)) {
+            return -1;
+        } else if (isWritableGoogleAccount(b) && b.equals(mDefaultAccount)) {
+            return 1;
+        } else if (isWritableGoogleAccount(a) && !isWritableGoogleAccount(b)) {
+            return -1;
+        } else if (isWritableGoogleAccount(b) && !isWritableGoogleAccount(a)) {
+            return 1;
+        } else {
+            int diff = a.name.compareToIgnoreCase(b.name);
+            if (diff != 0) {
+                return diff;
+            }
+            diff = a.type.compareToIgnoreCase(b.type);
+            if (diff != 0) {
+                return diff;
+            }
+
+            // Accounts without data sets get sorted before those that have them.
+            if (a.dataSet != null) {
+                return b.dataSet == null ? 1 : a.dataSet.compareToIgnoreCase(b.dataSet);
+            } else {
+                return -1;
+            }
+        }
+    }
+
+    private static boolean isWritableGoogleAccount(AccountWithDataSet account) {
+        return GoogleAccountType.ACCOUNT_TYPE.equals(account.type) && account.dataSet == null;
+    }
+}
+
+class AccountTypeManagerImpl extends AccountTypeManager
+        implements OnAccountsUpdateListener, SyncStatusObserver {
+
+    private static final Map<AccountTypeWithDataSet, AccountType>
+            EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP =
+            Collections.unmodifiableMap(new HashMap<AccountTypeWithDataSet, AccountType>());
+
+    /**
+     * A sample contact URI used to test whether any activities will respond to an
+     * invitable intent with the given URI as the intent data. This doesn't need to be
+     * specific to a real contact because an app that intercepts the intent should probably do so
+     * for all types of contact URIs.
+     */
+    private static final Uri SAMPLE_CONTACT_URI = ContactsContract.Contacts.getLookupUri(
+            1, "xxx");
+
+    private Context mContext;
+    private AccountManager mAccountManager;
+
+    private AccountType mFallbackAccountType;
+
+    private List<AccountWithDataSet> mAccounts = Lists.newArrayList();
+    private List<AccountWithDataSet> mContactWritableAccounts = Lists.newArrayList();
+    private List<AccountWithDataSet> mGroupWritableAccounts = Lists.newArrayList();
+    private Map<AccountTypeWithDataSet, AccountType> mAccountTypesWithDataSets = Maps.newHashMap();
+    private Map<AccountTypeWithDataSet, AccountType> mInvitableAccountTypes =
+            EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP;
+
+    private final InvitableAccountTypeCache mInvitableAccountTypeCache;
+
+    /**
+     * The boolean value is equal to true if the {@link InvitableAccountTypeCache} has been
+     * initialized. False otherwise.
+     */
+    private final AtomicBoolean mInvitablesCacheIsInitialized = new AtomicBoolean(false);
+
+    /**
+     * The boolean value is equal to true if the {@link FindInvitablesTask} is still executing.
+     * False otherwise.
+     */
+    private final AtomicBoolean mInvitablesTaskIsRunning = new AtomicBoolean(false);
+
+    private static final int MESSAGE_LOAD_DATA = 0;
+    private static final int MESSAGE_PROCESS_BROADCAST_INTENT = 1;
+
+    private HandlerThread mListenerThread;
+    private Handler mListenerHandler;
+
+    private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
+    private final Runnable mCheckFilterValidityRunnable = new Runnable () {
+        @Override
+        public void run() {
+            ContactListFilterController.getInstance(mContext).checkFilterValidity(true);
+        }
+    };
+
+    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Message msg = mListenerHandler.obtainMessage(MESSAGE_PROCESS_BROADCAST_INTENT, intent);
+            mListenerHandler.sendMessage(msg);
+        }
+
+    };
+
+    /* A latch that ensures that asynchronous initialization completes before data is used */
+    private volatile CountDownLatch mInitializationLatch = new CountDownLatch(1);
+
+    /**
+     * Internal constructor that only performs initial parsing.
+     */
+    public AccountTypeManagerImpl(Context context) {
+        mContext = context;
+        mFallbackAccountType = new FallbackAccountType(context);
+
+        mAccountManager = AccountManager.get(mContext);
+
+        mListenerThread = new HandlerThread("AccountChangeListener");
+        mListenerThread.start();
+        mListenerHandler = new Handler(mListenerThread.getLooper()) {
+            @Override
+            public void handleMessage(Message msg) {
+                switch (msg.what) {
+                    case MESSAGE_LOAD_DATA:
+                        loadAccountsInBackground();
+                        break;
+                    case MESSAGE_PROCESS_BROADCAST_INTENT:
+                        processBroadcastIntent((Intent) msg.obj);
+                        break;
+                }
+            }
+        };
+
+        mInvitableAccountTypeCache = new InvitableAccountTypeCache();
+
+        // Request updates when packages or accounts change
+        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+        filter.addDataScheme("package");
+        mContext.registerReceiver(mBroadcastReceiver, filter);
+        IntentFilter sdFilter = new IntentFilter();
+        sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
+        sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
+        mContext.registerReceiver(mBroadcastReceiver, sdFilter);
+
+        // Request updates when locale is changed so that the order of each field will
+        // be able to be changed on the locale change.
+        filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
+        mContext.registerReceiver(mBroadcastReceiver, filter);
+
+        mAccountManager.addOnAccountsUpdatedListener(this, mListenerHandler, false);
+
+        ContentResolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, this);
+
+        mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA);
+    }
+
+    @Override
+    public void onStatusChanged(int which) {
+        mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA);
+    }
+
+    public void processBroadcastIntent(Intent intent) {
+        mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA);
+    }
+
+    /* This notification will arrive on the background thread */
+    public void onAccountsUpdated(Account[] accounts) {
+        // Refresh to catch any changed accounts
+        loadAccountsInBackground();
+    }
+
+    /**
+     * Returns instantly if accounts and account types have already been loaded.
+     * Otherwise waits for the background thread to complete the loading.
+     */
+    void ensureAccountsLoaded() {
+        CountDownLatch latch = mInitializationLatch;
+        if (latch == null) {
+            return;
+        }
+        while (true) {
+            try {
+                latch.await();
+                return;
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+            }
+        }
+    }
+
+    /**
+     * Loads account list and corresponding account types (potentially with data sets). Always
+     * called on a background thread.
+     */
+    protected void loadAccountsInBackground() {
+        if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
+            Log.d(Constants.PERFORMANCE_TAG, "AccountTypeManager.loadAccountsInBackground start");
+        }
+        TimingLogger timings = new TimingLogger(TAG, "loadAccountsInBackground");
+        final long startTime = SystemClock.currentThreadTimeMillis();
+        final long startTimeWall = SystemClock.elapsedRealtime();
+
+        // Account types, keyed off the account type and data set concatenation.
+        final Map<AccountTypeWithDataSet, AccountType> accountTypesByTypeAndDataSet =
+                Maps.newHashMap();
+
+        // The same AccountTypes, but keyed off {@link RawContacts#ACCOUNT_TYPE}.  Since there can
+        // be multiple account types (with different data sets) for the same type of account, each
+        // type string may have multiple AccountType entries.
+        final Map<String, List<AccountType>> accountTypesByType = Maps.newHashMap();
+
+        final List<AccountWithDataSet> allAccounts = Lists.newArrayList();
+        final List<AccountWithDataSet> contactWritableAccounts = Lists.newArrayList();
+        final List<AccountWithDataSet> groupWritableAccounts = Lists.newArrayList();
+        final Set<String> extensionPackages = Sets.newHashSet();
+
+        final AccountManager am = mAccountManager;
+
+        final SyncAdapterType[] syncs = ContentResolver.getSyncAdapterTypes();
+        final AuthenticatorDescription[] auths = am.getAuthenticatorTypes();
+
+        // First process sync adapters to find any that provide contact data.
+        for (SyncAdapterType sync : syncs) {
+            if (!ContactsContract.AUTHORITY.equals(sync.authority)) {
+                // Skip sync adapters that don't provide contact data.
+                continue;
+            }
+
+            // Look for the formatting details provided by each sync
+            // adapter, using the authenticator to find general resources.
+            final String type = sync.accountType;
+            final AuthenticatorDescription auth = findAuthenticator(auths, type);
+            if (auth == null) {
+                Log.w(TAG, "No authenticator found for type=" + type + ", ignoring it.");
+                continue;
+            }
+
+            AccountType accountType;
+            if (GoogleAccountType.ACCOUNT_TYPE.equals(type)) {
+                accountType = new GoogleAccountType(mContext, auth.packageName);
+            } else if (ExchangeAccountType.isExchangeType(type)) {
+                accountType = new ExchangeAccountType(mContext, auth.packageName, type);
+            } else if (SamsungAccountType.isSamsungAccountType(mContext, type,
+                    auth.packageName)) {
+                accountType = new SamsungAccountType(mContext, auth.packageName, type);
+            } else {
+                Log.d(TAG, "Registering external account type=" + type
+                        + ", packageName=" + auth.packageName);
+                accountType = new ExternalAccountType(mContext, auth.packageName, false);
+            }
+            if (!accountType.isInitialized()) {
+                if (accountType.isEmbedded()) {
+                    throw new IllegalStateException("Problem initializing embedded type "
+                            + accountType.getClass().getCanonicalName());
+                } else {
+                    // Skip external account types that couldn't be initialized.
+                    continue;
+                }
+            }
+
+            accountType.accountType = auth.type;
+            accountType.titleRes = auth.labelId;
+            accountType.iconRes = auth.iconId;
+
+            addAccountType(accountType, accountTypesByTypeAndDataSet, accountTypesByType);
+
+            // Check to see if the account type knows of any other non-sync-adapter packages
+            // that may provide other data sets of contact data.
+            extensionPackages.addAll(accountType.getExtensionPackageNames());
+        }
+
+        // If any extension packages were specified, process them as well.
+        if (!extensionPackages.isEmpty()) {
+            Log.d(TAG, "Registering " + extensionPackages.size() + " extension packages");
+            for (String extensionPackage : extensionPackages) {
+                ExternalAccountType accountType =
+                    new ExternalAccountType(mContext, extensionPackage, true);
+                if (!accountType.isInitialized()) {
+                    // Skip external account types that couldn't be initialized.
+                    continue;
+                }
+                if (!accountType.hasContactsMetadata()) {
+                    Log.w(TAG, "Skipping extension package " + extensionPackage + " because"
+                            + " it doesn't have the CONTACTS_STRUCTURE metadata");
+                    continue;
+                }
+                if (TextUtils.isEmpty(accountType.accountType)) {
+                    Log.w(TAG, "Skipping extension package " + extensionPackage + " because"
+                            + " the CONTACTS_STRUCTURE metadata doesn't have the accountType"
+                            + " attribute");
+                    continue;
+                }
+                Log.d(TAG, "Registering extension package account type="
+                        + accountType.accountType + ", dataSet=" + accountType.dataSet
+                        + ", packageName=" + extensionPackage);
+
+                addAccountType(accountType, accountTypesByTypeAndDataSet, accountTypesByType);
+            }
+        }
+        timings.addSplit("Loaded account types");
+
+        // Map in accounts to associate the account names with each account type entry.
+        Account[] accounts = mAccountManager.getAccounts();
+        for (Account account : accounts) {
+            boolean syncable =
+                ContentResolver.getIsSyncable(account, ContactsContract.AUTHORITY) > 0;
+
+            if (syncable) {
+                List<AccountType> accountTypes = accountTypesByType.get(account.type);
+                if (accountTypes != null) {
+                    // Add an account-with-data-set entry for each account type that is
+                    // authenticated by this account.
+                    for (AccountType accountType : accountTypes) {
+                        AccountWithDataSet accountWithDataSet = new AccountWithDataSet(
+                                account.name, account.type, accountType.dataSet);
+                        allAccounts.add(accountWithDataSet);
+                        if (accountType.areContactsWritable()) {
+                            contactWritableAccounts.add(accountWithDataSet);
+                        }
+                        if (accountType.isGroupMembershipEditable()) {
+                            groupWritableAccounts.add(accountWithDataSet);
+                        }
+                    }
+                }
+            }
+        }
+
+        final AccountComparator accountComparator = new AccountComparator(null);
+        Collections.sort(allAccounts, accountComparator);
+        Collections.sort(contactWritableAccounts, accountComparator);
+        Collections.sort(groupWritableAccounts, accountComparator);
+
+        timings.addSplit("Loaded accounts");
+
+        synchronized (this) {
+            mAccountTypesWithDataSets = accountTypesByTypeAndDataSet;
+            mAccounts = allAccounts;
+            mContactWritableAccounts = contactWritableAccounts;
+            mGroupWritableAccounts = groupWritableAccounts;
+            mInvitableAccountTypes = findAllInvitableAccountTypes(
+                    mContext, allAccounts, accountTypesByTypeAndDataSet);
+        }
+
+        timings.dumpToLog();
+        final long endTimeWall = SystemClock.elapsedRealtime();
+        final long endTime = SystemClock.currentThreadTimeMillis();
+
+        Log.i(TAG, "Loaded meta-data for " + mAccountTypesWithDataSets.size() + " account types, "
+                + mAccounts.size() + " accounts in " + (endTimeWall - startTimeWall) + "ms(wall) "
+                + (endTime - startTime) + "ms(cpu)");
+
+        if (mInitializationLatch != null) {
+            mInitializationLatch.countDown();
+            mInitializationLatch = null;
+        }
+        if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
+            Log.d(Constants.PERFORMANCE_TAG, "AccountTypeManager.loadAccountsInBackground finish");
+        }
+
+        // Check filter validity since filter may become obsolete after account update. It must be
+        // done from UI thread.
+        mMainThreadHandler.post(mCheckFilterValidityRunnable);
+    }
+
+    // Bookkeeping method for tracking the known account types in the given maps.
+    private void addAccountType(AccountType accountType,
+            Map<AccountTypeWithDataSet, AccountType> accountTypesByTypeAndDataSet,
+            Map<String, List<AccountType>> accountTypesByType) {
+        accountTypesByTypeAndDataSet.put(accountType.getAccountTypeAndDataSet(), accountType);
+        List<AccountType> accountsForType = accountTypesByType.get(accountType.accountType);
+        if (accountsForType == null) {
+            accountsForType = Lists.newArrayList();
+        }
+        accountsForType.add(accountType);
+        accountTypesByType.put(accountType.accountType, accountsForType);
+    }
+
+    /**
+     * Find a specific {@link AuthenticatorDescription} in the provided list
+     * that matches the given account type.
+     */
+    protected static AuthenticatorDescription findAuthenticator(AuthenticatorDescription[] auths,
+            String accountType) {
+        for (AuthenticatorDescription auth : auths) {
+            if (accountType.equals(auth.type)) {
+                return auth;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return list of all known, contact writable {@link AccountWithDataSet}'s.
+     */
+    @Override
+    public List<AccountWithDataSet> getAccounts(boolean contactWritableOnly) {
+        ensureAccountsLoaded();
+        return contactWritableOnly ? mContactWritableAccounts : mAccounts;
+    }
+
+    /**
+     * Sort accounts based on default account.
+     */
+    @Override
+    public void sortAccounts(AccountWithDataSet defaultAccount) {
+        Collections.sort(mAccounts, new AccountComparator(defaultAccount));
+        Collections.sort(mContactWritableAccounts, new AccountComparator(defaultAccount));
+        Collections.sort(mGroupWritableAccounts, new AccountComparator(defaultAccount));
+    }
+
+    /**
+     * Return the list of all known, group writable {@link AccountWithDataSet}'s.
+     */
+    public List<AccountWithDataSet> getGroupWritableAccounts() {
+        ensureAccountsLoaded();
+        return mGroupWritableAccounts;
+    }
+
+    /**
+     * Find the best {@link DataKind} matching the requested
+     * {@link AccountType#accountType}, {@link AccountType#dataSet}, and {@link DataKind#mimeType}.
+     * If no direct match found, we try searching {@link FallbackAccountType}.
+     */
+    @Override
+    public DataKind getKindOrFallback(AccountType type, String mimeType) {
+        ensureAccountsLoaded();
+        DataKind kind = null;
+
+        // Try finding account type and kind matching request
+        if (type != null) {
+            kind = type.getKindForMimetype(mimeType);
+        }
+
+        if (kind == null) {
+            // Nothing found, so try fallback as last resort
+            kind = mFallbackAccountType.getKindForMimetype(mimeType);
+        }
+
+        if (kind == null) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Unknown type=" + type + ", mime=" + mimeType);
+            }
+        }
+
+        return kind;
+    }
+
+    /**
+     * Return {@link AccountType} for the given account type and data set.
+     */
+    @Override
+    public AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet) {
+        ensureAccountsLoaded();
+        synchronized (this) {
+            AccountType type = mAccountTypesWithDataSets.get(accountTypeWithDataSet);
+            return type != null ? type : mFallbackAccountType;
+        }
+    }
+
+    /**
+     * @return Unmodifiable map from {@link AccountTypeWithDataSet}s to {@link AccountType}s
+     * which support the "invite" feature and have one or more account. This is an unfiltered
+     * list. See {@link #getUsableInvitableAccountTypes()}.
+     */
+    private Map<AccountTypeWithDataSet, AccountType> getAllInvitableAccountTypes() {
+        ensureAccountsLoaded();
+        return mInvitableAccountTypes;
+    }
+
+    @Override
+    public Map<AccountTypeWithDataSet, AccountType> getUsableInvitableAccountTypes() {
+        ensureAccountsLoaded();
+        // Since this method is not thread-safe, it's possible for multiple threads to encounter
+        // the situation where (1) the cache has not been initialized yet or
+        // (2) an async task to refresh the account type list in the cache has already been
+        // started. Hence we use {@link AtomicBoolean}s and return cached values immediately
+        // while we compute the actual result in the background. We use this approach instead of
+        // using "synchronized" because computing the account type list involves a DB read, and
+        // can potentially cause a deadlock situation if this method is called from code which
+        // holds the DB lock. The trade-off of potentially having an incorrect list of invitable
+        // account types for a short period of time seems more manageable than enforcing the
+        // context in which this method is called.
+
+        // Computing the list of usable invitable account types is done on the fly as requested.
+        // If this method has never been called before, then block until the list has been computed.
+        if (!mInvitablesCacheIsInitialized.get()) {
+            mInvitableAccountTypeCache.setCachedValue(findUsableInvitableAccountTypes(mContext));
+            mInvitablesCacheIsInitialized.set(true);
+        } else {
+            // Otherwise, there is a value in the cache. If the value has expired and
+            // an async task has not already been started by another thread, then kick off a new
+            // async task to compute the list.
+            if (mInvitableAccountTypeCache.isExpired() &&
+                    mInvitablesTaskIsRunning.compareAndSet(false, true)) {
+                new FindInvitablesTask().execute();
+            }
+        }
+
+        return mInvitableAccountTypeCache.getCachedValue();
+    }
+
+    /**
+     * Return all {@link AccountType}s with at least one account which supports "invite", i.e.
+     * its {@link AccountType#getInviteContactActivityClassName()} is not empty.
+     */
+    @VisibleForTesting
+    static Map<AccountTypeWithDataSet, AccountType> findAllInvitableAccountTypes(Context context,
+            Collection<AccountWithDataSet> accounts,
+            Map<AccountTypeWithDataSet, AccountType> accountTypesByTypeAndDataSet) {
+        HashMap<AccountTypeWithDataSet, AccountType> result = Maps.newHashMap();
+        for (AccountWithDataSet account : accounts) {
+            AccountTypeWithDataSet accountTypeWithDataSet = account.getAccountTypeWithDataSet();
+            AccountType type = accountTypesByTypeAndDataSet.get(accountTypeWithDataSet);
+            if (type == null) continue; // just in case
+            if (result.containsKey(accountTypeWithDataSet)) continue;
+
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Type " + accountTypeWithDataSet
+                        + " inviteClass=" + type.getInviteContactActivityClassName());
+            }
+            if (!TextUtils.isEmpty(type.getInviteContactActivityClassName())) {
+                result.put(accountTypeWithDataSet, type);
+            }
+        }
+        return Collections.unmodifiableMap(result);
+    }
+
+    /**
+     * Return all usable {@link AccountType}s that support the "invite" feature from the
+     * list of all potential invitable account types (retrieved from
+     * {@link #getAllInvitableAccountTypes}). A usable invitable account type means:
+     * (1) there is at least 1 raw contact in the database with that account type, and
+     * (2) the app contributing the account type is not disabled.
+     *
+     * Warning: Don't use on the UI thread because this can scan the database.
+     */
+    private Map<AccountTypeWithDataSet, AccountType> findUsableInvitableAccountTypes(
+            Context context) {
+        Map<AccountTypeWithDataSet, AccountType> allInvitables = getAllInvitableAccountTypes();
+        if (allInvitables.isEmpty()) {
+            return EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP;
+        }
+
+        final HashMap<AccountTypeWithDataSet, AccountType> result = Maps.newHashMap();
+        result.putAll(allInvitables);
+
+        final PackageManager packageManager = context.getPackageManager();
+        for (AccountTypeWithDataSet accountTypeWithDataSet : allInvitables.keySet()) {
+            AccountType accountType = allInvitables.get(accountTypeWithDataSet);
+
+            // Make sure that account types don't come from apps that are disabled.
+            Intent invitableIntent = MoreContactUtils.getInvitableIntent(accountType,
+                    SAMPLE_CONTACT_URI);
+            if (invitableIntent == null) {
+                result.remove(accountTypeWithDataSet);
+                continue;
+            }
+            ResolveInfo resolveInfo = packageManager.resolveActivity(invitableIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY);
+            if (resolveInfo == null) {
+                // If we can't find an activity to start for this intent, then there's no point in
+                // showing this option to the user.
+                result.remove(accountTypeWithDataSet);
+                continue;
+            }
+
+            // Make sure that there is at least 1 raw contact with this account type. This check
+            // is non-trivial and should not be done on the UI thread.
+            if (!accountTypeWithDataSet.hasData(context)) {
+                result.remove(accountTypeWithDataSet);
+            }
+        }
+
+        return Collections.unmodifiableMap(result);
+    }
+
+    @Override
+    public List<AccountType> getAccountTypes(boolean contactWritableOnly) {
+        ensureAccountsLoaded();
+        final List<AccountType> accountTypes = Lists.newArrayList();
+        synchronized (this) {
+            for (AccountType type : mAccountTypesWithDataSets.values()) {
+                if (!contactWritableOnly || type.areContactsWritable()) {
+                    accountTypes.add(type);
+                }
+            }
+        }
+        return accountTypes;
+    }
+
+    /**
+     * Background task to find all usable {@link AccountType}s that support the "invite" feature
+     * from the list of all potential invitable account types. Once the work is completed,
+     * the list of account types is stored in the {@link AccountTypeManager}'s
+     * {@link InvitableAccountTypeCache}.
+     */
+    private class FindInvitablesTask extends AsyncTask<Void, Void,
+            Map<AccountTypeWithDataSet, AccountType>> {
+
+        @Override
+        protected Map<AccountTypeWithDataSet, AccountType> doInBackground(Void... params) {
+            return findUsableInvitableAccountTypes(mContext);
+        }
+
+        @Override
+        protected void onPostExecute(Map<AccountTypeWithDataSet, AccountType> accountTypes) {
+            mInvitableAccountTypeCache.setCachedValue(accountTypes);
+            mInvitablesTaskIsRunning.set(false);
+        }
+    }
+
+    /**
+     * This cache holds a list of invitable {@link AccountTypeWithDataSet}s, in the form of a
+     * {@link Map<AccountTypeWithDataSet, AccountType>}. Note that the cached value is valid only
+     * for {@link #TIME_TO_LIVE} milliseconds.
+     */
+    private static final class InvitableAccountTypeCache {
+
+        /**
+         * The cached {@link #mInvitableAccountTypes} list expires after this number of milliseconds
+         * has elapsed.
+         */
+        private static final long TIME_TO_LIVE = 60000;
+
+        private Map<AccountTypeWithDataSet, AccountType> mInvitableAccountTypes;
+
+        private long mTimeLastSet;
+
+        /**
+         * Returns true if the data in this cache is stale and needs to be refreshed. Returns false
+         * otherwise.
+         */
+        public boolean isExpired() {
+             return SystemClock.elapsedRealtime() - mTimeLastSet > TIME_TO_LIVE;
+        }
+
+        /**
+         * Returns the cached value. Note that the caller is responsible for checking
+         * {@link #isExpired()} to ensure that the value is not stale.
+         */
+        public Map<AccountTypeWithDataSet, AccountType> getCachedValue() {
+            return mInvitableAccountTypes;
+        }
+
+        public void setCachedValue(Map<AccountTypeWithDataSet, AccountType> map) {
+            mInvitableAccountTypes = map;
+            mTimeLastSet = SystemClock.elapsedRealtime();
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/BuilderWrapper.java b/src/com/android/contacts/common/model/BuilderWrapper.java
new file mode 100644
index 0000000..325c3df
--- /dev/null
+++ b/src/com/android/contacts/common/model/BuilderWrapper.java
@@ -0,0 +1,52 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.ContentProviderOperation.Builder;
+
+/**
+ * This class is created for the purpose of compatibility and make the type of
+ * ContentProviderOperation available on pre-M SDKs. Since ContentProviderOperation is
+ * usually created by Builder and we don’t have access to the type via Builder, so we need to
+ * create a wrapper class for Builder first and include type. Then we could use the builder and
+ * the type in this class to create a wrapper of ContentProviderOperation.
+ */
+public class BuilderWrapper {
+    private Builder mBuilder;
+    private int mType;
+
+    public BuilderWrapper(Builder builder, int type) {
+        mBuilder = builder;
+        mType = type;
+    }
+
+    public int getType() {
+        return mType;
+    }
+
+    public void setType(int mType) {
+        this.mType = mType;
+    }
+
+    public Builder getBuilder() {
+        return mBuilder;
+    }
+
+    public void setBuilder(Builder mBuilder) {
+        this.mBuilder = mBuilder;
+    }
+}
diff --git a/src/com/android/contacts/common/model/CPOWrapper.java b/src/com/android/contacts/common/model/CPOWrapper.java
new file mode 100644
index 0000000..4124df8
--- /dev/null
+++ b/src/com/android/contacts/common/model/CPOWrapper.java
@@ -0,0 +1,49 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.ContentProviderOperation;
+
+/**
+ * This class is created for the purpose of compatibility and make the type of
+ * ContentProviderOperation available on pre-M SDKs.
+ */
+public class CPOWrapper {
+    private ContentProviderOperation mOperation;
+    private int mType;
+
+    public CPOWrapper(ContentProviderOperation builder, int type) {
+        mOperation = builder;
+        mType = type;
+    }
+
+    public int getType() {
+        return mType;
+    }
+
+    public void setType(int type) {
+        this.mType = type;
+    }
+
+    public ContentProviderOperation getOperation() {
+        return mOperation;
+    }
+
+    public void setOperation(ContentProviderOperation operation) {
+        this.mOperation = operation;
+    }
+}
diff --git a/src/com/android/contacts/common/model/Contact.java b/src/com/android/contacts/common/model/Contact.java
new file mode 100644
index 0000000..27bf13e
--- /dev/null
+++ b/src/com/android/contacts/common/model/Contact.java
@@ -0,0 +1,496 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.provider.ContactsContract.DisplayNameSources;
+
+import com.android.contacts.common.GroupMetaData;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.util.DataStatus;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+/**
+ * A Contact represents a single person or logical entity as perceived by the user.  The information
+ * about a contact can come from multiple data sources, which are each represented by a RawContact
+ * object.  Thus, a Contact is associated with a collection of RawContact objects.
+ *
+ * The aggregation of raw contacts into a single contact is performed automatically, and it is
+ * also possible for users to manually split and join raw contacts into various contacts.
+ *
+ * Only the {@link ContactLoader} class can create a Contact object with various flags to allow
+ * partial loading of contact data.  Thus, an instance of this class should be treated as
+ * a read-only object.
+ */
+public class Contact {
+    private enum Status {
+        /** Contact is successfully loaded */
+        LOADED,
+        /** There was an error loading the contact */
+        ERROR,
+        /** Contact is not found */
+        NOT_FOUND,
+    }
+
+    private final Uri mRequestedUri;
+    private final Uri mLookupUri;
+    private final Uri mUri;
+    private final long mDirectoryId;
+    private final String mLookupKey;
+    private final long mId;
+    private final long mNameRawContactId;
+    private final int mDisplayNameSource;
+    private final long mPhotoId;
+    private final String mPhotoUri;
+    private final String mDisplayName;
+    private final String mAltDisplayName;
+    private final String mPhoneticName;
+    private final boolean mStarred;
+    private final Integer mPresence;
+    private ImmutableList<RawContact> mRawContacts;
+    private ImmutableMap<Long,DataStatus> mStatuses;
+    private ImmutableList<AccountType> mInvitableAccountTypes;
+
+    private String mDirectoryDisplayName;
+    private String mDirectoryType;
+    private String mDirectoryAccountType;
+    private String mDirectoryAccountName;
+    private int mDirectoryExportSupport;
+
+    private ImmutableList<GroupMetaData> mGroups;
+
+    private byte[] mPhotoBinaryData;
+    /**
+     * Small version of the contact photo loaded from a blob instead of from a file. If a large
+     * contact photo is not available yet, then this has the same value as mPhotoBinaryData.
+     */
+    private byte[] mThumbnailPhotoBinaryData;
+    private final boolean mSendToVoicemail;
+    private final String mCustomRingtone;
+    private final boolean mIsUserProfile;
+
+    private final Contact.Status mStatus;
+    private final Exception mException;
+
+    /**
+     * Constructor for special results, namely "no contact found" and "error".
+     */
+    private Contact(Uri requestedUri, Contact.Status status, Exception exception) {
+        if (status == Status.ERROR && exception == null) {
+            throw new IllegalArgumentException("ERROR result must have exception");
+        }
+        mStatus = status;
+        mException = exception;
+        mRequestedUri = requestedUri;
+        mLookupUri = null;
+        mUri = null;
+        mDirectoryId = -1;
+        mLookupKey = null;
+        mId = -1;
+        mRawContacts = null;
+        mStatuses = null;
+        mNameRawContactId = -1;
+        mDisplayNameSource = DisplayNameSources.UNDEFINED;
+        mPhotoId = -1;
+        mPhotoUri = null;
+        mDisplayName = null;
+        mAltDisplayName = null;
+        mPhoneticName = null;
+        mStarred = false;
+        mPresence = null;
+        mInvitableAccountTypes = null;
+        mSendToVoicemail = false;
+        mCustomRingtone = null;
+        mIsUserProfile = false;
+    }
+
+    public static Contact forError(Uri requestedUri, Exception exception) {
+        return new Contact(requestedUri, Status.ERROR, exception);
+    }
+
+    public static Contact forNotFound(Uri requestedUri) {
+        return new Contact(requestedUri, Status.NOT_FOUND, null);
+    }
+
+    /**
+     * Constructor to call when contact was found
+     */
+    public Contact(Uri requestedUri, Uri uri, Uri lookupUri, long directoryId, String lookupKey,
+            long id, long nameRawContactId, int displayNameSource, long photoId,
+            String photoUri, String displayName, String altDisplayName, String phoneticName,
+            boolean starred, Integer presence, boolean sendToVoicemail, String customRingtone,
+            boolean isUserProfile) {
+        mStatus = Status.LOADED;
+        mException = null;
+        mRequestedUri = requestedUri;
+        mLookupUri = lookupUri;
+        mUri = uri;
+        mDirectoryId = directoryId;
+        mLookupKey = lookupKey;
+        mId = id;
+        mRawContacts = null;
+        mStatuses = null;
+        mNameRawContactId = nameRawContactId;
+        mDisplayNameSource = displayNameSource;
+        mPhotoId = photoId;
+        mPhotoUri = photoUri;
+        mDisplayName = displayName;
+        mAltDisplayName = altDisplayName;
+        mPhoneticName = phoneticName;
+        mStarred = starred;
+        mPresence = presence;
+        mInvitableAccountTypes = null;
+        mSendToVoicemail = sendToVoicemail;
+        mCustomRingtone = customRingtone;
+        mIsUserProfile = isUserProfile;
+    }
+
+    public Contact(Uri requestedUri, Contact from) {
+        mRequestedUri = requestedUri;
+
+        mStatus = from.mStatus;
+        mException = from.mException;
+        mLookupUri = from.mLookupUri;
+        mUri = from.mUri;
+        mDirectoryId = from.mDirectoryId;
+        mLookupKey = from.mLookupKey;
+        mId = from.mId;
+        mNameRawContactId = from.mNameRawContactId;
+        mDisplayNameSource = from.mDisplayNameSource;
+        mPhotoId = from.mPhotoId;
+        mPhotoUri = from.mPhotoUri;
+        mDisplayName = from.mDisplayName;
+        mAltDisplayName = from.mAltDisplayName;
+        mPhoneticName = from.mPhoneticName;
+        mStarred = from.mStarred;
+        mPresence = from.mPresence;
+        mRawContacts = from.mRawContacts;
+        mStatuses = from.mStatuses;
+        mInvitableAccountTypes = from.mInvitableAccountTypes;
+
+        mDirectoryDisplayName = from.mDirectoryDisplayName;
+        mDirectoryType = from.mDirectoryType;
+        mDirectoryAccountType = from.mDirectoryAccountType;
+        mDirectoryAccountName = from.mDirectoryAccountName;
+        mDirectoryExportSupport = from.mDirectoryExportSupport;
+
+        mGroups = from.mGroups;
+
+        mPhotoBinaryData = from.mPhotoBinaryData;
+        mSendToVoicemail = from.mSendToVoicemail;
+        mCustomRingtone = from.mCustomRingtone;
+        mIsUserProfile = from.mIsUserProfile;
+    }
+
+    /**
+     * @param exportSupport See {@link Directory#EXPORT_SUPPORT}.
+     */
+    public void setDirectoryMetaData(String displayName, String directoryType,
+            String accountType, String accountName, int exportSupport) {
+        mDirectoryDisplayName = displayName;
+        mDirectoryType = directoryType;
+        mDirectoryAccountType = accountType;
+        mDirectoryAccountName = accountName;
+        mDirectoryExportSupport = exportSupport;
+    }
+
+    /* package */ void setPhotoBinaryData(byte[] photoBinaryData) {
+        mPhotoBinaryData = photoBinaryData;
+    }
+
+    /* package */ void setThumbnailPhotoBinaryData(byte[] photoBinaryData) {
+        mThumbnailPhotoBinaryData = photoBinaryData;
+    }
+
+    /**
+     * Returns the URI for the contact that contains both the lookup key and the ID. This is
+     * the best URI to reference a contact.
+     * For directory contacts, this is the same a the URI as returned by {@link #getUri()}
+     */
+    public Uri getLookupUri() {
+        return mLookupUri;
+    }
+
+    public String getLookupKey() {
+        return mLookupKey;
+    }
+
+    /**
+     * Returns the contact Uri that was passed to the provider to make the query. This is
+     * the same as the requested Uri, unless the requested Uri doesn't specify a Contact:
+     * If it either references a Raw-Contact or a Person (a pre-Eclair style Uri), this Uri will
+     * always reference the full aggregate contact.
+     */
+    public Uri getUri() {
+        return mUri;
+    }
+
+    /**
+     * Returns the URI for which this {@link ContactLoader) was initially requested.
+     */
+    public Uri getRequestedUri() {
+        return mRequestedUri;
+    }
+
+    /**
+     * Instantiate a new RawContactDeltaList for this contact.
+     */
+    public RawContactDeltaList createRawContactDeltaList() {
+        return RawContactDeltaList.fromIterator(getRawContacts().iterator());
+    }
+
+    /**
+     * Returns the contact ID.
+     */
+    @VisibleForTesting
+    public long getId() {
+        return mId;
+    }
+
+    /**
+     * @return true when an exception happened during loading, in which case
+     *     {@link #getException} returns the actual exception object.
+     *     Note {@link #isNotFound()} and {@link #isError()} are mutually exclusive; If
+     *     {@link #isError()} is {@code true}, {@link #isNotFound()} is always {@code false},
+     *     and vice versa.
+     */
+    public boolean isError() {
+        return mStatus == Status.ERROR;
+    }
+
+    public Exception getException() {
+        return mException;
+    }
+
+    /**
+     * @return true when the specified contact is not found.
+     *     Note {@link #isNotFound()} and {@link #isError()} are mutually exclusive; If
+     *     {@link #isError()} is {@code true}, {@link #isNotFound()} is always {@code false},
+     *     and vice versa.
+     */
+    public boolean isNotFound() {
+        return mStatus == Status.NOT_FOUND;
+    }
+
+    /**
+     * @return true if the specified contact is successfully loaded.
+     *     i.e. neither {@link #isError()} nor {@link #isNotFound()}.
+     */
+    public boolean isLoaded() {
+        return mStatus == Status.LOADED;
+    }
+
+    public long getNameRawContactId() {
+        return mNameRawContactId;
+    }
+
+    public int getDisplayNameSource() {
+        return mDisplayNameSource;
+    }
+
+    /**
+     * Used by various classes to determine whether or not this contact should be displayed as
+     * a business rather than a person.
+     */
+    public boolean isDisplayNameFromOrganization() {
+        return DisplayNameSources.ORGANIZATION == mDisplayNameSource;
+    }
+
+    public long getPhotoId() {
+        return mPhotoId;
+    }
+
+    public String getPhotoUri() {
+        return mPhotoUri;
+    }
+
+    public String getDisplayName() {
+        return mDisplayName;
+    }
+
+    public String getAltDisplayName() {
+        return mAltDisplayName;
+    }
+
+    public String getPhoneticName() {
+        return mPhoneticName;
+    }
+
+    public boolean getStarred() {
+        return mStarred;
+    }
+
+    public Integer getPresence() {
+        return mPresence;
+    }
+
+    /**
+     * This can return non-null invitable account types only if the {@link ContactLoader} was
+     * configured to load invitable account types in its constructor.
+     * @return
+     */
+    public ImmutableList<AccountType> getInvitableAccountTypes() {
+        return mInvitableAccountTypes;
+    }
+
+    public ImmutableList<RawContact> getRawContacts() {
+        return mRawContacts;
+    }
+
+    public ImmutableMap<Long, DataStatus> getStatuses() {
+        return mStatuses;
+    }
+
+    public long getDirectoryId() {
+        return mDirectoryId;
+    }
+
+    public boolean isDirectoryEntry() {
+        return mDirectoryId != -1 && mDirectoryId != Directory.DEFAULT
+                && mDirectoryId != Directory.LOCAL_INVISIBLE;
+    }
+
+    /**
+     * @return true if this is a contact (not group, etc.) with at least one
+     *         writable raw-contact, and false otherwise.
+     */
+    public boolean isWritableContact(final Context context) {
+        return getFirstWritableRawContactId(context) != -1;
+    }
+
+    /**
+     * Return the ID of the first raw-contact in the contact data that belongs to a
+     * contact-writable account, or -1 if no such entity exists.
+     */
+    public long getFirstWritableRawContactId(final Context context) {
+        // Directory entries are non-writable
+        if (isDirectoryEntry()) return -1;
+
+        // Iterate through raw-contacts; if we find a writable on, return its ID.
+        for (RawContact rawContact : getRawContacts()) {
+            AccountType accountType = rawContact.getAccountType(context);
+            if (accountType != null && accountType.areContactsWritable()) {
+                return rawContact.getId();
+            }
+        }
+        // No writable raw-contact was found.
+        return -1;
+    }
+
+    public int getDirectoryExportSupport() {
+        return mDirectoryExportSupport;
+    }
+
+    public String getDirectoryDisplayName() {
+        return mDirectoryDisplayName;
+    }
+
+    public String getDirectoryType() {
+        return mDirectoryType;
+    }
+
+    public String getDirectoryAccountType() {
+        return mDirectoryAccountType;
+    }
+
+    public String getDirectoryAccountName() {
+        return mDirectoryAccountName;
+    }
+
+    public byte[] getPhotoBinaryData() {
+        return mPhotoBinaryData;
+    }
+
+    public byte[] getThumbnailPhotoBinaryData() {
+        return mThumbnailPhotoBinaryData;
+    }
+
+    public ArrayList<ContentValues> getContentValues() {
+        if (mRawContacts.size() != 1) {
+            throw new IllegalStateException(
+                    "Cannot extract content values from an aggregated contact");
+        }
+
+        RawContact rawContact = mRawContacts.get(0);
+        ArrayList<ContentValues> result = rawContact.getContentValues();
+
+        // If the photo was loaded using the URI, create an entry for the photo
+        // binary data.
+        if (mPhotoId == 0 && mPhotoBinaryData != null) {
+            ContentValues photo = new ContentValues();
+            photo.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);
+            photo.put(Photo.PHOTO, mPhotoBinaryData);
+            result.add(photo);
+        }
+
+        return result;
+    }
+
+    /**
+     * This can return non-null group meta-data only if the {@link ContactLoader} was configured to
+     * load group metadata in its constructor.
+     * @return
+     */
+    public ImmutableList<GroupMetaData> getGroupMetaData() {
+        return mGroups;
+    }
+
+    public boolean isSendToVoicemail() {
+        return mSendToVoicemail;
+    }
+
+    public String getCustomRingtone() {
+        return mCustomRingtone;
+    }
+
+    public boolean isUserProfile() {
+        return mIsUserProfile;
+    }
+
+    @Override
+    public String toString() {
+        return "{requested=" + mRequestedUri + ",lookupkey=" + mLookupKey +
+                ",uri=" + mUri + ",status=" + mStatus + "}";
+    }
+
+    /* package */ void setRawContacts(ImmutableList<RawContact> rawContacts) {
+        mRawContacts = rawContacts;
+    }
+
+    /* package */ void setStatuses(ImmutableMap<Long, DataStatus> statuses) {
+        mStatuses = statuses;
+    }
+
+    /* package */ void setInvitableAccountTypes(ImmutableList<AccountType> accountTypes) {
+        mInvitableAccountTypes = accountTypes;
+    }
+
+    /* package */ void setGroupMetaData(ImmutableList<GroupMetaData> groups) {
+        mGroups = groups;
+    }
+}
diff --git a/src/com/android/contacts/common/model/ContactLoader.java b/src/com/android/contacts/common/model/ContactLoader.java
new file mode 100644
index 0000000..f721379
--- /dev/null
+++ b/src/com/android/contacts/common/model/ContactLoader.java
@@ -0,0 +1,1046 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.AsyncTaskLoader;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.AssetFileDescriptor;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.provider.ContactsContract.Groups;
+import android.provider.ContactsContract.RawContacts;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.GroupMetaData;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.util.Constants;
+import com.android.contacts.common.util.ContactLoaderUtils;
+import com.android.contacts.common.util.DataStatus;
+import com.android.contacts.common.util.UriUtils;
+import com.android.contacts.common.model.dataitem.DataItem;
+import com.android.contacts.common.model.dataitem.PhoneDataItem;
+import com.android.contacts.common.model.dataitem.PhotoDataItem;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * Loads a single Contact and all it constituent RawContacts.
+ */
+public class ContactLoader extends AsyncTaskLoader<Contact> {
+
+    private static final String TAG = ContactLoader.class.getSimpleName();
+
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    /** A short-lived cache that can be set by {@link #cacheResult()} */
+    private static Contact sCachedResult = null;
+
+    private final Uri mRequestedUri;
+    private Uri mLookupUri;
+    private boolean mLoadGroupMetaData;
+    private boolean mLoadInvitableAccountTypes;
+    private boolean mPostViewNotification;
+    private boolean mComputeFormattedPhoneNumber;
+    private Contact mContact;
+    private ForceLoadContentObserver mObserver;
+    private final Set<Long> mNotifiedRawContactIds = Sets.newHashSet();
+
+    public ContactLoader(Context context, Uri lookupUri, boolean postViewNotification) {
+        this(context, lookupUri, false, false, postViewNotification, false);
+    }
+
+    public ContactLoader(Context context, Uri lookupUri, boolean loadGroupMetaData,
+            boolean loadInvitableAccountTypes,
+            boolean postViewNotification, boolean computeFormattedPhoneNumber) {
+        super(context);
+        mLookupUri = lookupUri;
+        mRequestedUri = lookupUri;
+        mLoadGroupMetaData = loadGroupMetaData;
+        mLoadInvitableAccountTypes = loadInvitableAccountTypes;
+        mPostViewNotification = postViewNotification;
+        mComputeFormattedPhoneNumber = computeFormattedPhoneNumber;
+    }
+
+    /**
+     * Projection used for the query that loads all data for the entire contact (except for
+     * social stream items).
+     */
+    private static class ContactQuery {
+        static final String[] COLUMNS_INTERNAL = new String[] {
+                Contacts.NAME_RAW_CONTACT_ID,
+                Contacts.DISPLAY_NAME_SOURCE,
+                Contacts.LOOKUP_KEY,
+                Contacts.DISPLAY_NAME,
+                Contacts.DISPLAY_NAME_ALTERNATIVE,
+                Contacts.PHONETIC_NAME,
+                Contacts.PHOTO_ID,
+                Contacts.STARRED,
+                Contacts.CONTACT_PRESENCE,
+                Contacts.CONTACT_STATUS,
+                Contacts.CONTACT_STATUS_TIMESTAMP,
+                Contacts.CONTACT_STATUS_RES_PACKAGE,
+                Contacts.CONTACT_STATUS_LABEL,
+                Contacts.Entity.CONTACT_ID,
+                Contacts.Entity.RAW_CONTACT_ID,
+
+                RawContacts.ACCOUNT_NAME,
+                RawContacts.ACCOUNT_TYPE,
+                RawContacts.DATA_SET,
+                RawContacts.DIRTY,
+                RawContacts.VERSION,
+                RawContacts.SOURCE_ID,
+                RawContacts.SYNC1,
+                RawContacts.SYNC2,
+                RawContacts.SYNC3,
+                RawContacts.SYNC4,
+                RawContacts.DELETED,
+
+                Contacts.Entity.DATA_ID,
+                Data.DATA1,
+                Data.DATA2,
+                Data.DATA3,
+                Data.DATA4,
+                Data.DATA5,
+                Data.DATA6,
+                Data.DATA7,
+                Data.DATA8,
+                Data.DATA9,
+                Data.DATA10,
+                Data.DATA11,
+                Data.DATA12,
+                Data.DATA13,
+                Data.DATA14,
+                Data.DATA15,
+                Data.SYNC1,
+                Data.SYNC2,
+                Data.SYNC3,
+                Data.SYNC4,
+                Data.DATA_VERSION,
+                Data.IS_PRIMARY,
+                Data.IS_SUPER_PRIMARY,
+                Data.MIMETYPE,
+
+                GroupMembership.GROUP_SOURCE_ID,
+
+                Data.PRESENCE,
+                Data.CHAT_CAPABILITY,
+                Data.STATUS,
+                Data.STATUS_RES_PACKAGE,
+                Data.STATUS_ICON,
+                Data.STATUS_LABEL,
+                Data.STATUS_TIMESTAMP,
+
+                Contacts.PHOTO_URI,
+                Contacts.SEND_TO_VOICEMAIL,
+                Contacts.CUSTOM_RINGTONE,
+                Contacts.IS_USER_PROFILE,
+
+                Data.TIMES_USED,
+                Data.LAST_TIME_USED
+        };
+
+        static final String[] COLUMNS;
+
+        static {
+            List<String> projectionList = Lists.newArrayList(COLUMNS_INTERNAL);
+            if (CompatUtils.isMarshmallowCompatible()) {
+                projectionList.add(Data.CARRIER_PRESENCE);
+            }
+            COLUMNS = projectionList.toArray(new String[projectionList.size()]);
+        }
+
+        public static final int NAME_RAW_CONTACT_ID = 0;
+        public static final int DISPLAY_NAME_SOURCE = 1;
+        public static final int LOOKUP_KEY = 2;
+        public static final int DISPLAY_NAME = 3;
+        public static final int ALT_DISPLAY_NAME = 4;
+        public static final int PHONETIC_NAME = 5;
+        public static final int PHOTO_ID = 6;
+        public static final int STARRED = 7;
+        public static final int CONTACT_PRESENCE = 8;
+        public static final int CONTACT_STATUS = 9;
+        public static final int CONTACT_STATUS_TIMESTAMP = 10;
+        public static final int CONTACT_STATUS_RES_PACKAGE = 11;
+        public static final int CONTACT_STATUS_LABEL = 12;
+        public static final int CONTACT_ID = 13;
+        public static final int RAW_CONTACT_ID = 14;
+
+        public static final int ACCOUNT_NAME = 15;
+        public static final int ACCOUNT_TYPE = 16;
+        public static final int DATA_SET = 17;
+        public static final int DIRTY = 18;
+        public static final int VERSION = 19;
+        public static final int SOURCE_ID = 20;
+        public static final int SYNC1 = 21;
+        public static final int SYNC2 = 22;
+        public static final int SYNC3 = 23;
+        public static final int SYNC4 = 24;
+        public static final int DELETED = 25;
+
+        public static final int DATA_ID = 26;
+        public static final int DATA1 = 27;
+        public static final int DATA2 = 28;
+        public static final int DATA3 = 29;
+        public static final int DATA4 = 30;
+        public static final int DATA5 = 31;
+        public static final int DATA6 = 32;
+        public static final int DATA7 = 33;
+        public static final int DATA8 = 34;
+        public static final int DATA9 = 35;
+        public static final int DATA10 = 36;
+        public static final int DATA11 = 37;
+        public static final int DATA12 = 38;
+        public static final int DATA13 = 39;
+        public static final int DATA14 = 40;
+        public static final int DATA15 = 41;
+        public static final int DATA_SYNC1 = 42;
+        public static final int DATA_SYNC2 = 43;
+        public static final int DATA_SYNC3 = 44;
+        public static final int DATA_SYNC4 = 45;
+        public static final int DATA_VERSION = 46;
+        public static final int IS_PRIMARY = 47;
+        public static final int IS_SUPERPRIMARY = 48;
+        public static final int MIMETYPE = 49;
+
+        public static final int GROUP_SOURCE_ID = 50;
+
+        public static final int PRESENCE = 51;
+        public static final int CHAT_CAPABILITY = 52;
+        public static final int STATUS = 53;
+        public static final int STATUS_RES_PACKAGE = 54;
+        public static final int STATUS_ICON = 55;
+        public static final int STATUS_LABEL = 56;
+        public static final int STATUS_TIMESTAMP = 57;
+
+        public static final int PHOTO_URI = 58;
+        public static final int SEND_TO_VOICEMAIL = 59;
+        public static final int CUSTOM_RINGTONE = 60;
+        public static final int IS_USER_PROFILE = 61;
+
+        public static final int TIMES_USED = 62;
+        public static final int LAST_TIME_USED = 63;
+        public static final int CARRIER_PRESENCE = 64;
+    }
+
+    /**
+     * Projection used for the query that loads all data for the entire contact.
+     */
+    private static class DirectoryQuery {
+        static final String[] COLUMNS = new String[] {
+            Directory.DISPLAY_NAME,
+            Directory.PACKAGE_NAME,
+            Directory.TYPE_RESOURCE_ID,
+            Directory.ACCOUNT_TYPE,
+            Directory.ACCOUNT_NAME,
+            Directory.EXPORT_SUPPORT,
+        };
+
+        public static final int DISPLAY_NAME = 0;
+        public static final int PACKAGE_NAME = 1;
+        public static final int TYPE_RESOURCE_ID = 2;
+        public static final int ACCOUNT_TYPE = 3;
+        public static final int ACCOUNT_NAME = 4;
+        public static final int EXPORT_SUPPORT = 5;
+    }
+
+    private static class GroupQuery {
+        static final String[] COLUMNS = new String[] {
+            Groups.ACCOUNT_NAME,
+            Groups.ACCOUNT_TYPE,
+            Groups.DATA_SET,
+            Groups._ID,
+            Groups.TITLE,
+            Groups.AUTO_ADD,
+            Groups.FAVORITES,
+        };
+
+        public static final int ACCOUNT_NAME = 0;
+        public static final int ACCOUNT_TYPE = 1;
+        public static final int DATA_SET = 2;
+        public static final int ID = 3;
+        public static final int TITLE = 4;
+        public static final int AUTO_ADD = 5;
+        public static final int FAVORITES = 6;
+    }
+
+    public void setLookupUri(Uri lookupUri) {
+        mLookupUri = lookupUri;
+    }
+
+    @Override
+    public Contact loadInBackground() {
+        Log.e(TAG, "loadInBackground=" + mLookupUri);
+        try {
+            final ContentResolver resolver = getContext().getContentResolver();
+            final Uri uriCurrentFormat = ContactLoaderUtils.ensureIsContactUri(
+                    resolver, mLookupUri);
+            final Contact cachedResult = sCachedResult;
+            sCachedResult = null;
+            // Is this the same Uri as what we had before already? In that case, reuse that result
+            final Contact result;
+            final boolean resultIsCached;
+            if (cachedResult != null &&
+                    UriUtils.areEqual(cachedResult.getLookupUri(), mLookupUri)) {
+                // We are using a cached result from earlier. Below, we should make sure
+                // we are not doing any more network or disc accesses
+                result = new Contact(mRequestedUri, cachedResult);
+                resultIsCached = true;
+            } else {
+                if (uriCurrentFormat.getLastPathSegment().equals(Constants.LOOKUP_URI_ENCODED)) {
+                    result = loadEncodedContactEntity(uriCurrentFormat, mLookupUri);
+                } else {
+                    result = loadContactEntity(resolver, uriCurrentFormat);
+                }
+                resultIsCached = false;
+            }
+            if (result.isLoaded()) {
+                if (result.isDirectoryEntry()) {
+                    if (!resultIsCached) {
+                        loadDirectoryMetaData(result);
+                    }
+                } else if (mLoadGroupMetaData) {
+                    if (result.getGroupMetaData() == null) {
+                        loadGroupMetaData(result);
+                    }
+                }
+                if (mComputeFormattedPhoneNumber) {
+                    computeFormattedPhoneNumbers(result);
+                }
+                if (!resultIsCached) loadPhotoBinaryData(result);
+
+                // Note ME profile should never have "Add connection"
+                if (mLoadInvitableAccountTypes && result.getInvitableAccountTypes() == null) {
+                    loadInvitableAccountTypes(result);
+                }
+            }
+            return result;
+        } catch (Exception e) {
+            Log.e(TAG, "Error loading the contact: " + mLookupUri, e);
+            return Contact.forError(mRequestedUri, e);
+        }
+    }
+
+    /**
+     * Parses a {@link Contact} stored as a JSON string in a lookup URI.
+     *
+     * @param lookupUri The contact information to parse .
+     * @return The parsed {@code Contact} information.
+     * @throws JSONException
+     */
+    public static Contact parseEncodedContactEntity(Uri lookupUri)  {
+        try {
+            return loadEncodedContactEntity(lookupUri, lookupUri);
+        } catch (JSONException je) {
+            return null;
+        }
+    }
+
+    private static Contact loadEncodedContactEntity(Uri uri, Uri lookupUri) throws JSONException {
+        final String jsonString = uri.getEncodedFragment();
+        final JSONObject json = new JSONObject(jsonString);
+
+        final long directoryId =
+                Long.valueOf(uri.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY));
+
+        final String displayName = json.optString(Contacts.DISPLAY_NAME);
+        final String altDisplayName = json.optString(
+                Contacts.DISPLAY_NAME_ALTERNATIVE, displayName);
+        final int displayNameSource = json.getInt(Contacts.DISPLAY_NAME_SOURCE);
+        final String photoUri = json.optString(Contacts.PHOTO_URI, null);
+        final Contact contact = new Contact(
+                uri, uri,
+                lookupUri,
+                directoryId,
+                null /* lookupKey */,
+                -1 /* id */,
+                -1 /* nameRawContactId */,
+                displayNameSource,
+                0 /* photoId */,
+                photoUri,
+                displayName,
+                altDisplayName,
+                null /* phoneticName */,
+                false /* starred */,
+                null /* presence */,
+                false /* sendToVoicemail */,
+                null /* customRingtone */,
+                false /* isUserProfile */);
+
+        contact.setStatuses(new ImmutableMap.Builder<Long, DataStatus>().build());
+
+        final String accountName = json.optString(RawContacts.ACCOUNT_NAME, null);
+        final String directoryName = uri.getQueryParameter(Directory.DISPLAY_NAME);
+        if (accountName != null) {
+            final String accountType = json.getString(RawContacts.ACCOUNT_TYPE);
+            contact.setDirectoryMetaData(directoryName, null, accountName, accountType,
+                    json.optInt(Directory.EXPORT_SUPPORT,
+                            Directory.EXPORT_SUPPORT_SAME_ACCOUNT_ONLY));
+        } else {
+            contact.setDirectoryMetaData(directoryName, null, null, null,
+                    json.optInt(Directory.EXPORT_SUPPORT, Directory.EXPORT_SUPPORT_ANY_ACCOUNT));
+        }
+
+        final ContentValues values = new ContentValues();
+        values.put(Data._ID, -1);
+        values.put(Data.CONTACT_ID, -1);
+        final RawContact rawContact = new RawContact(values);
+
+        final JSONObject items = json.getJSONObject(Contacts.CONTENT_ITEM_TYPE);
+        final Iterator keys = items.keys();
+        while (keys.hasNext()) {
+            final String mimetype = (String) keys.next();
+
+            // Could be single object or array.
+            final JSONObject obj = items.optJSONObject(mimetype);
+            if (obj == null) {
+                final JSONArray array = items.getJSONArray(mimetype);
+                for (int i = 0; i < array.length(); i++) {
+                    final JSONObject item = array.getJSONObject(i);
+                    processOneRecord(rawContact, item, mimetype);
+                }
+            } else {
+                processOneRecord(rawContact, obj, mimetype);
+            }
+        }
+
+        contact.setRawContacts(new ImmutableList.Builder<RawContact>()
+                .add(rawContact)
+                .build());
+        return contact;
+    }
+
+    private static void processOneRecord(RawContact rawContact, JSONObject item, String mimetype)
+            throws JSONException {
+        final ContentValues itemValues = new ContentValues();
+        itemValues.put(Data.MIMETYPE, mimetype);
+        itemValues.put(Data._ID, -1);
+
+        final Iterator iterator = item.keys();
+        while (iterator.hasNext()) {
+            String name = (String) iterator.next();
+            final Object o = item.get(name);
+            if (o instanceof String) {
+                itemValues.put(name, (String) o);
+            } else if (o instanceof Integer) {
+                itemValues.put(name, (Integer) o);
+            }
+        }
+        rawContact.addDataItemValues(itemValues);
+    }
+
+    private Contact loadContactEntity(ContentResolver resolver, Uri contactUri) {
+        Uri entityUri = Uri.withAppendedPath(contactUri, Contacts.Entity.CONTENT_DIRECTORY);
+        Cursor cursor = resolver.query(entityUri, ContactQuery.COLUMNS, null, null,
+                Contacts.Entity.RAW_CONTACT_ID);
+        if (cursor == null) {
+            Log.e(TAG, "No cursor returned in loadContactEntity");
+            return Contact.forNotFound(mRequestedUri);
+        }
+
+        try {
+            if (!cursor.moveToFirst()) {
+                cursor.close();
+                return Contact.forNotFound(mRequestedUri);
+            }
+
+            // Create the loaded contact starting with the header data.
+            Contact contact = loadContactHeaderData(cursor, contactUri);
+
+            // Fill in the raw contacts, which is wrapped in an Entity and any
+            // status data.  Initially, result has empty entities and statuses.
+            long currentRawContactId = -1;
+            RawContact rawContact = null;
+            ImmutableList.Builder<RawContact> rawContactsBuilder =
+                    new ImmutableList.Builder<RawContact>();
+            ImmutableMap.Builder<Long, DataStatus> statusesBuilder =
+                    new ImmutableMap.Builder<Long, DataStatus>();
+            do {
+                long rawContactId = cursor.getLong(ContactQuery.RAW_CONTACT_ID);
+                if (rawContactId != currentRawContactId) {
+                    // First time to see this raw contact id, so create a new entity, and
+                    // add it to the result's entities.
+                    currentRawContactId = rawContactId;
+                    rawContact = new RawContact(loadRawContactValues(cursor));
+                    rawContactsBuilder.add(rawContact);
+                }
+                if (!cursor.isNull(ContactQuery.DATA_ID)) {
+                    ContentValues data = loadDataValues(cursor);
+                    rawContact.addDataItemValues(data);
+
+                    if (!cursor.isNull(ContactQuery.PRESENCE)
+                            || !cursor.isNull(ContactQuery.STATUS)) {
+                        final DataStatus status = new DataStatus(cursor);
+                        final long dataId = cursor.getLong(ContactQuery.DATA_ID);
+                        statusesBuilder.put(dataId, status);
+                    }
+                }
+            } while (cursor.moveToNext());
+
+            contact.setRawContacts(rawContactsBuilder.build());
+            contact.setStatuses(statusesBuilder.build());
+
+            return contact;
+        } finally {
+            cursor.close();
+        }
+    }
+
+    /**
+     * Looks for the photo data item in entities. If found, a thumbnail will be stored. A larger
+     * photo will also be stored if available.
+     */
+    private void loadPhotoBinaryData(Contact contactData) {
+        loadThumbnailBinaryData(contactData);
+
+        // Try to load the large photo from a file using the photo URI.
+        String photoUri = contactData.getPhotoUri();
+        if (photoUri != null) {
+            try {
+                final InputStream inputStream;
+                final AssetFileDescriptor fd;
+                final Uri uri = Uri.parse(photoUri);
+                final String scheme = uri.getScheme();
+                if ("http".equals(scheme) || "https".equals(scheme)) {
+                    // Support HTTP urls that might come from extended directories
+                    inputStream = new URL(photoUri).openStream();
+                    fd = null;
+                } else {
+                    fd = getContext().getContentResolver().openAssetFileDescriptor(uri, "r");
+                    inputStream = fd.createInputStream();
+                }
+                byte[] buffer = new byte[16 * 1024];
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                try {
+                    int size;
+                    while ((size = inputStream.read(buffer)) != -1) {
+                        baos.write(buffer, 0, size);
+                    }
+                    contactData.setPhotoBinaryData(baos.toByteArray());
+                } finally {
+                    inputStream.close();
+                    if (fd != null) {
+                        fd.close();
+                    }
+                }
+                return;
+            } catch (IOException ioe) {
+                // Just fall back to the case below.
+            }
+        }
+
+        // If we couldn't load from a file, fall back to the data blob.
+        contactData.setPhotoBinaryData(contactData.getThumbnailPhotoBinaryData());
+    }
+
+    private void loadThumbnailBinaryData(Contact contactData) {
+        final long photoId = contactData.getPhotoId();
+        if (photoId <= 0) {
+            // No photo ID
+            return;
+        }
+
+        for (RawContact rawContact : contactData.getRawContacts()) {
+            for (DataItem dataItem : rawContact.getDataItems()) {
+                if (dataItem.getId() == photoId) {
+                    if (!(dataItem instanceof PhotoDataItem)) {
+                        break;
+                    }
+
+                    final PhotoDataItem photo = (PhotoDataItem) dataItem;
+                    contactData.setThumbnailPhotoBinaryData(photo.getPhoto());
+                    break;
+                }
+            }
+        }
+    }
+
+    /**
+     * Sets the "invitable" account types to {@link Contact#mInvitableAccountTypes}.
+     */
+    private void loadInvitableAccountTypes(Contact contactData) {
+        final ImmutableList.Builder<AccountType> resultListBuilder =
+                new ImmutableList.Builder<AccountType>();
+        if (!contactData.isUserProfile()) {
+            Map<AccountTypeWithDataSet, AccountType> invitables =
+                    AccountTypeManager.getInstance(getContext()).getUsableInvitableAccountTypes();
+            if (!invitables.isEmpty()) {
+                final Map<AccountTypeWithDataSet, AccountType> resultMap =
+                        Maps.newHashMap(invitables);
+
+                // Remove the ones that already have a raw contact in the current contact
+                for (RawContact rawContact : contactData.getRawContacts()) {
+                    final AccountTypeWithDataSet type = AccountTypeWithDataSet.get(
+                            rawContact.getAccountTypeString(),
+                            rawContact.getDataSet());
+                    resultMap.remove(type);
+                }
+
+                resultListBuilder.addAll(resultMap.values());
+            }
+        }
+
+        // Set to mInvitableAccountTypes
+        contactData.setInvitableAccountTypes(resultListBuilder.build());
+    }
+
+    /**
+     * Extracts Contact level columns from the cursor.
+     */
+    private Contact loadContactHeaderData(final Cursor cursor, Uri contactUri) {
+        final String directoryParameter =
+                contactUri.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY);
+        final long directoryId = directoryParameter == null
+                ? Directory.DEFAULT
+                : Long.parseLong(directoryParameter);
+        final long contactId = cursor.getLong(ContactQuery.CONTACT_ID);
+        final String lookupKey = cursor.getString(ContactQuery.LOOKUP_KEY);
+        final long nameRawContactId = cursor.getLong(ContactQuery.NAME_RAW_CONTACT_ID);
+        final int displayNameSource = cursor.getInt(ContactQuery.DISPLAY_NAME_SOURCE);
+        final String displayName = cursor.getString(ContactQuery.DISPLAY_NAME);
+        final String altDisplayName = cursor.getString(ContactQuery.ALT_DISPLAY_NAME);
+        final String phoneticName = cursor.getString(ContactQuery.PHONETIC_NAME);
+        final long photoId = cursor.getLong(ContactQuery.PHOTO_ID);
+        final String photoUri = cursor.getString(ContactQuery.PHOTO_URI);
+        final boolean starred = cursor.getInt(ContactQuery.STARRED) != 0;
+        final Integer presence = cursor.isNull(ContactQuery.CONTACT_PRESENCE)
+                ? null
+                : cursor.getInt(ContactQuery.CONTACT_PRESENCE);
+        final boolean sendToVoicemail = cursor.getInt(ContactQuery.SEND_TO_VOICEMAIL) == 1;
+        final String customRingtone = cursor.getString(ContactQuery.CUSTOM_RINGTONE);
+        final boolean isUserProfile = cursor.getInt(ContactQuery.IS_USER_PROFILE) == 1;
+
+        Uri lookupUri;
+        if (directoryId == Directory.DEFAULT || directoryId == Directory.LOCAL_INVISIBLE) {
+            lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), contactId);
+        } else {
+            lookupUri = contactUri;
+        }
+
+        return new Contact(mRequestedUri, contactUri, lookupUri, directoryId, lookupKey,
+                contactId, nameRawContactId, displayNameSource, photoId, photoUri, displayName,
+                altDisplayName, phoneticName, starred, presence, sendToVoicemail,
+                customRingtone, isUserProfile);
+    }
+
+    /**
+     * Extracts RawContact level columns from the cursor.
+     */
+    private ContentValues loadRawContactValues(Cursor cursor) {
+        ContentValues cv = new ContentValues();
+
+        cv.put(RawContacts._ID, cursor.getLong(ContactQuery.RAW_CONTACT_ID));
+
+        cursorColumnToContentValues(cursor, cv, ContactQuery.ACCOUNT_NAME);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.ACCOUNT_TYPE);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA_SET);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DIRTY);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.VERSION);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.SOURCE_ID);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.SYNC1);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.SYNC2);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.SYNC3);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.SYNC4);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DELETED);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.CONTACT_ID);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.STARRED);
+
+        return cv;
+    }
+
+    /**
+     * Extracts Data level columns from the cursor.
+     */
+    private ContentValues loadDataValues(Cursor cursor) {
+        ContentValues cv = new ContentValues();
+
+        cv.put(Data._ID, cursor.getLong(ContactQuery.DATA_ID));
+
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA1);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA2);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA3);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA4);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA5);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA6);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA7);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA8);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA9);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA10);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA11);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA12);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA13);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA14);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA15);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA_SYNC1);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA_SYNC2);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA_SYNC3);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA_SYNC4);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.DATA_VERSION);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.IS_PRIMARY);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.IS_SUPERPRIMARY);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.MIMETYPE);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.GROUP_SOURCE_ID);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.CHAT_CAPABILITY);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.TIMES_USED);
+        cursorColumnToContentValues(cursor, cv, ContactQuery.LAST_TIME_USED);
+        if (CompatUtils.isMarshmallowCompatible()) {
+            cursorColumnToContentValues(cursor, cv, ContactQuery.CARRIER_PRESENCE);
+        }
+
+        return cv;
+    }
+
+    private void cursorColumnToContentValues(
+            Cursor cursor, ContentValues values, int index) {
+        switch (cursor.getType(index)) {
+            case Cursor.FIELD_TYPE_NULL:
+                // don't put anything in the content values
+                break;
+            case Cursor.FIELD_TYPE_INTEGER:
+                values.put(ContactQuery.COLUMNS[index], cursor.getLong(index));
+                break;
+            case Cursor.FIELD_TYPE_STRING:
+                values.put(ContactQuery.COLUMNS[index], cursor.getString(index));
+                break;
+            case Cursor.FIELD_TYPE_BLOB:
+                values.put(ContactQuery.COLUMNS[index], cursor.getBlob(index));
+                break;
+            default:
+                throw new IllegalStateException("Invalid or unhandled data type");
+        }
+    }
+
+    private void loadDirectoryMetaData(Contact result) {
+        long directoryId = result.getDirectoryId();
+
+        Cursor cursor = getContext().getContentResolver().query(
+                ContentUris.withAppendedId(Directory.CONTENT_URI, directoryId),
+                DirectoryQuery.COLUMNS, null, null, null);
+        if (cursor == null) {
+            return;
+        }
+        try {
+            if (cursor.moveToFirst()) {
+                final String displayName = cursor.getString(DirectoryQuery.DISPLAY_NAME);
+                final String packageName = cursor.getString(DirectoryQuery.PACKAGE_NAME);
+                final int typeResourceId = cursor.getInt(DirectoryQuery.TYPE_RESOURCE_ID);
+                final String accountType = cursor.getString(DirectoryQuery.ACCOUNT_TYPE);
+                final String accountName = cursor.getString(DirectoryQuery.ACCOUNT_NAME);
+                final int exportSupport = cursor.getInt(DirectoryQuery.EXPORT_SUPPORT);
+                String directoryType = null;
+                if (!TextUtils.isEmpty(packageName)) {
+                    PackageManager pm = getContext().getPackageManager();
+                    try {
+                        Resources resources = pm.getResourcesForApplication(packageName);
+                        directoryType = resources.getString(typeResourceId);
+                    } catch (NameNotFoundException e) {
+                        Log.w(TAG, "Contact directory resource not found: "
+                                + packageName + "." + typeResourceId);
+                    }
+                }
+
+                result.setDirectoryMetaData(
+                        displayName, directoryType, accountType, accountName, exportSupport);
+            }
+        } finally {
+            cursor.close();
+        }
+    }
+
+    static private class AccountKey {
+        private final String mAccountName;
+        private final String mAccountType;
+        private final String mDataSet;
+
+        public AccountKey(String accountName, String accountType, String dataSet) {
+            mAccountName = accountName;
+            mAccountType = accountType;
+            mDataSet = dataSet;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mAccountName, mAccountType, mDataSet);
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (!(obj instanceof AccountKey)) {
+                return false;
+            }
+            final AccountKey other = (AccountKey) obj;
+            return Objects.equals(mAccountName, other.mAccountName)
+                && Objects.equals(mAccountType, other.mAccountType)
+                && Objects.equals(mDataSet, other.mDataSet);
+        }
+    }
+
+    /**
+     * Loads groups meta-data for all groups associated with all constituent raw contacts'
+     * accounts.
+     */
+    private void loadGroupMetaData(Contact result) {
+        StringBuilder selection = new StringBuilder();
+        ArrayList<String> selectionArgs = new ArrayList<String>();
+        final HashSet<AccountKey> accountsSeen = new HashSet<>();
+        for (RawContact rawContact : result.getRawContacts()) {
+            final String accountName = rawContact.getAccountName();
+            final String accountType = rawContact.getAccountTypeString();
+            final String dataSet = rawContact.getDataSet();
+            final AccountKey accountKey = new AccountKey(accountName, accountType, dataSet);
+            if (accountName != null && accountType != null &&
+                    !accountsSeen.contains(accountKey)) {
+                accountsSeen.add(accountKey);
+                if (selection.length() != 0) {
+                    selection.append(" OR ");
+                }
+                selection.append(
+                        "(" + Groups.ACCOUNT_NAME + "=? AND " + Groups.ACCOUNT_TYPE + "=?");
+                selectionArgs.add(accountName);
+                selectionArgs.add(accountType);
+
+                selection.append(" AND " + Groups.DELETED + "=0");
+
+                if (dataSet != null) {
+                    selection.append(" AND " + Groups.DATA_SET + "=?");
+                    selectionArgs.add(dataSet);
+                } else {
+                    selection.append(" AND " + Groups.DATA_SET + " IS NULL");
+                }
+                selection.append(")");
+            }
+        }
+        final ImmutableList.Builder<GroupMetaData> groupListBuilder =
+                new ImmutableList.Builder<GroupMetaData>();
+        final Cursor cursor = getContext().getContentResolver().query(Groups.CONTENT_URI,
+                GroupQuery.COLUMNS, selection.toString(), selectionArgs.toArray(new String[0]),
+                null);
+        if (cursor != null) {
+            try {
+                while (cursor.moveToNext()) {
+                    final String accountName = cursor.getString(GroupQuery.ACCOUNT_NAME);
+                    final String accountType = cursor.getString(GroupQuery.ACCOUNT_TYPE);
+                    final String dataSet = cursor.getString(GroupQuery.DATA_SET);
+                    final long groupId = cursor.getLong(GroupQuery.ID);
+                    final String title = cursor.getString(GroupQuery.TITLE);
+                    final boolean defaultGroup = cursor.isNull(GroupQuery.AUTO_ADD)
+                            ? false
+                            : cursor.getInt(GroupQuery.AUTO_ADD) != 0;
+                    final boolean favorites = cursor.isNull(GroupQuery.FAVORITES)
+                            ? false
+                            : cursor.getInt(GroupQuery.FAVORITES) != 0;
+
+                    groupListBuilder.add(new GroupMetaData(
+                                    accountName, accountType, dataSet, groupId, title, defaultGroup,
+                                    favorites));
+                }
+            } finally {
+                cursor.close();
+            }
+        }
+        result.setGroupMetaData(groupListBuilder.build());
+    }
+
+    /**
+     * Iterates over all data items that represent phone numbers are tries to calculate a formatted
+     * number. This function can safely be called several times as no unformatted data is
+     * overwritten
+     */
+    private void computeFormattedPhoneNumbers(Contact contactData) {
+        final String countryIso = GeoUtil.getCurrentCountryIso(getContext());
+        final ImmutableList<RawContact> rawContacts = contactData.getRawContacts();
+        final int rawContactCount = rawContacts.size();
+        for (int rawContactIndex = 0; rawContactIndex < rawContactCount; rawContactIndex++) {
+            final RawContact rawContact = rawContacts.get(rawContactIndex);
+            final List<DataItem> dataItems = rawContact.getDataItems();
+            final int dataCount = dataItems.size();
+            for (int dataIndex = 0; dataIndex < dataCount; dataIndex++) {
+                final DataItem dataItem = dataItems.get(dataIndex);
+                if (dataItem instanceof PhoneDataItem) {
+                    final PhoneDataItem phoneDataItem = (PhoneDataItem) dataItem;
+                    phoneDataItem.computeFormattedPhoneNumber(countryIso);
+                }
+            }
+        }
+    }
+
+    @Override
+    public void deliverResult(Contact result) {
+        unregisterObserver();
+
+        // The creator isn't interested in any further updates
+        if (isReset() || result == null) {
+            return;
+        }
+
+        mContact = result;
+
+        if (result.isLoaded()) {
+            mLookupUri = result.getLookupUri();
+
+            if (!result.isDirectoryEntry()) {
+                Log.i(TAG, "Registering content observer for " + mLookupUri);
+                if (mObserver == null) {
+                    mObserver = new ForceLoadContentObserver();
+                }
+                getContext().getContentResolver().registerContentObserver(
+                        mLookupUri, true, mObserver);
+            }
+
+            if (mPostViewNotification) {
+                // inform the source of the data that this contact is being looked at
+                postViewNotificationToSyncAdapter();
+            }
+        }
+
+        super.deliverResult(mContact);
+    }
+
+    /**
+     * Posts a message to the contributing sync adapters that have opted-in, notifying them
+     * that the contact has just been loaded
+     */
+    private void postViewNotificationToSyncAdapter() {
+        Context context = getContext();
+        for (RawContact rawContact : mContact.getRawContacts()) {
+            final long rawContactId = rawContact.getId();
+            if (mNotifiedRawContactIds.contains(rawContactId)) {
+                continue; // Already notified for this raw contact.
+            }
+            mNotifiedRawContactIds.add(rawContactId);
+            final AccountType accountType = rawContact.getAccountType(context);
+            final String serviceName = accountType.getViewContactNotifyServiceClassName();
+            final String servicePackageName = accountType.getViewContactNotifyServicePackageName();
+            if (!TextUtils.isEmpty(serviceName) && !TextUtils.isEmpty(servicePackageName)) {
+                final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
+                final Intent intent = new Intent();
+                intent.setClassName(servicePackageName, serviceName);
+                intent.setAction(Intent.ACTION_VIEW);
+                intent.setDataAndType(uri, RawContacts.CONTENT_ITEM_TYPE);
+                try {
+                    context.startService(intent);
+                } catch (Exception e) {
+                    Log.e(TAG, "Error sending message to source-app", e);
+                }
+            }
+        }
+    }
+
+    private void unregisterObserver() {
+        if (mObserver != null) {
+            getContext().getContentResolver().unregisterContentObserver(mObserver);
+            mObserver = null;
+        }
+    }
+
+    /**
+     * Fully upgrades this ContactLoader to one with all lists fully loaded. When done, the
+     * new result will be delivered
+     */
+    public void upgradeToFullContact() {
+        // Everything requested already? Nothing to do, so let's bail out
+        if (mLoadGroupMetaData && mLoadInvitableAccountTypes
+                && mPostViewNotification && mComputeFormattedPhoneNumber) return;
+
+        mLoadGroupMetaData = true;
+        mLoadInvitableAccountTypes = true;
+        mPostViewNotification = true;
+        mComputeFormattedPhoneNumber = true;
+
+        // Cache the current result, so that we only load the "missing" parts of the contact.
+        cacheResult();
+
+        // Our load parameters have changed, so let's pretend the data has changed. Its the same
+        // thing, essentially.
+        onContentChanged();
+    }
+
+    public Uri getLookupUri() {
+        return mLookupUri;
+    }
+
+    @Override
+    protected void onStartLoading() {
+        if (mContact != null) {
+            deliverResult(mContact);
+        }
+
+        if (takeContentChanged() || mContact == null) {
+            forceLoad();
+        }
+    }
+
+    @Override
+    protected void onStopLoading() {
+        cancelLoad();
+    }
+
+    @Override
+    protected void onReset() {
+        super.onReset();
+        cancelLoad();
+        unregisterObserver();
+        mContact = null;
+    }
+
+    /**
+     * Caches the result, which is useful when we switch from activity to activity, using the same
+     * contact. If the next load is for a different contact, the cached result will be dropped
+     */
+    public void cacheResult() {
+        if (mContact == null || !mContact.isLoaded()) {
+            sCachedResult = null;
+        } else {
+            sCachedResult = mContact;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/RawContact.java b/src/com/android/contacts/common/model/RawContact.java
new file mode 100644
index 0000000..3d8db85
--- /dev/null
+++ b/src/com/android/contacts/common/model/RawContact.java
@@ -0,0 +1,368 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Entity;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
+
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.dataitem.DataItem;
+import com.google.common.base.Objects;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * RawContact represents a single raw contact in the raw contacts database.
+ * It has specialized getters/setters for raw contact
+ * items, and also contains a collection of DataItem objects.  A RawContact contains the information
+ * from a single account.
+ *
+ * This allows RawContact objects to be thought of as a class with raw contact
+ * fields (like account type, name, data set, sync state, etc.) and a list of
+ * DataItem objects that represent contact information elements (like phone
+ * numbers, email, address, etc.).
+ */
+final public class RawContact implements Parcelable {
+
+    private AccountTypeManager mAccountTypeManager;
+    private final ContentValues mValues;
+    private final ArrayList<NamedDataItem> mDataItems;
+
+    final public static class NamedDataItem implements Parcelable {
+        public final Uri mUri;
+
+        // This use to be a DataItem. DataItem creation is now delayed until the point of request
+        // since there is no benefit to storing them here due to the multiple inheritance.
+        // Eventually instanceof still has to be used anyways to determine which sub-class of
+        // DataItem it is. And having parent DataItem's here makes it very difficult to serialize or
+        // parcelable.
+        //
+        // Instead of having a common DataItem super class, we should refactor this to be a generic
+        // Object where the object is a concrete class that no longer relies on ContentValues.
+        // (this will also make the classes easier to use).
+        // Since instanceof is used later anyways, having a list of Objects won't hurt and is no
+        // worse than having a DataItem.
+        public final ContentValues mContentValues;
+
+        public NamedDataItem(Uri uri, ContentValues values) {
+            this.mUri = uri;
+            this.mContentValues = values;
+        }
+
+        public NamedDataItem(Parcel parcel) {
+            this.mUri = parcel.readParcelable(Uri.class.getClassLoader());
+            this.mContentValues = parcel.readParcelable(ContentValues.class.getClassLoader());
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel parcel, int i) {
+            parcel.writeParcelable(mUri, i);
+            parcel.writeParcelable(mContentValues, i);
+        }
+
+        public static final Parcelable.Creator<NamedDataItem> CREATOR
+                = new Parcelable.Creator<NamedDataItem>() {
+
+            @Override
+            public NamedDataItem createFromParcel(Parcel parcel) {
+                return new NamedDataItem(parcel);
+            }
+
+            @Override
+            public NamedDataItem[] newArray(int i) {
+                return new NamedDataItem[i];
+            }
+        };
+
+        @Override
+        public int hashCode() {
+            return Objects.hashCode(mUri, mContentValues);
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) return false;
+            if (getClass() != obj.getClass()) return false;
+
+            final NamedDataItem other = (NamedDataItem) obj;
+            return Objects.equal(mUri, other.mUri) &&
+                    Objects.equal(mContentValues, other.mContentValues);
+        }
+    }
+
+    public static RawContact createFrom(Entity entity) {
+        final ContentValues values = entity.getEntityValues();
+        final ArrayList<Entity.NamedContentValues> subValues = entity.getSubValues();
+
+        RawContact rawContact = new RawContact(values);
+        for (Entity.NamedContentValues subValue : subValues) {
+            rawContact.addNamedDataItemValues(subValue.uri, subValue.values);
+        }
+        return rawContact;
+    }
+
+    /**
+     * A RawContact object can be created with or without a context.
+     */
+    public RawContact() {
+        this(new ContentValues());
+    }
+
+    public RawContact(ContentValues values) {
+        mValues = values;
+        mDataItems = new ArrayList<NamedDataItem>();
+    }
+
+    /**
+     * Constructor for the parcelable.
+     *
+     * @param parcel The parcel to de-serialize from.
+     */
+    private RawContact(Parcel parcel) {
+        mValues = parcel.readParcelable(ContentValues.class.getClassLoader());
+        mDataItems = Lists.newArrayList();
+        parcel.readTypedList(mDataItems, NamedDataItem.CREATOR);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel parcel, int i) {
+        parcel.writeParcelable(mValues, i);
+        parcel.writeTypedList(mDataItems);
+    }
+
+    /**
+     * Create for building the parcelable.
+     */
+    public static final Parcelable.Creator<RawContact> CREATOR
+            = new Parcelable.Creator<RawContact>() {
+
+        @Override
+        public RawContact createFromParcel(Parcel parcel) {
+            return new RawContact(parcel);
+        }
+
+        @Override
+        public RawContact[] newArray(int i) {
+            return new RawContact[i];
+        }
+    };
+
+    public AccountTypeManager getAccountTypeManager(Context context) {
+        if (mAccountTypeManager == null) {
+            mAccountTypeManager = AccountTypeManager.getInstance(context);
+        }
+        return mAccountTypeManager;
+    }
+
+    public ContentValues getValues() {
+        return mValues;
+    }
+
+    /**
+     * Returns the id of the raw contact.
+     */
+    public Long getId() {
+        return getValues().getAsLong(RawContacts._ID);
+    }
+
+    /**
+     * Returns the account name of the raw contact.
+     */
+    public String getAccountName() {
+        return getValues().getAsString(RawContacts.ACCOUNT_NAME);
+    }
+
+    /**
+     * Returns the account type of the raw contact.
+     */
+    public String getAccountTypeString() {
+        return getValues().getAsString(RawContacts.ACCOUNT_TYPE);
+    }
+
+    /**
+     * Returns the data set of the raw contact.
+     */
+    public String getDataSet() {
+        return getValues().getAsString(RawContacts.DATA_SET);
+    }
+
+    public boolean isDirty() {
+        return getValues().getAsBoolean(RawContacts.DIRTY);
+    }
+
+    public String getSourceId() {
+        return getValues().getAsString(RawContacts.SOURCE_ID);
+    }
+
+    public String getSync1() {
+        return getValues().getAsString(RawContacts.SYNC1);
+    }
+
+    public String getSync2() {
+        return getValues().getAsString(RawContacts.SYNC2);
+    }
+
+    public String getSync3() {
+        return getValues().getAsString(RawContacts.SYNC3);
+    }
+
+    public String getSync4() {
+        return getValues().getAsString(RawContacts.SYNC4);
+    }
+
+    public boolean isDeleted() {
+        return getValues().getAsBoolean(RawContacts.DELETED);
+    }
+
+    public long getContactId() {
+        return getValues().getAsLong(Contacts.Entity.CONTACT_ID);
+    }
+
+    public boolean isStarred() {
+        return getValues().getAsBoolean(Contacts.STARRED);
+    }
+
+    public AccountType getAccountType(Context context) {
+        return getAccountTypeManager(context).getAccountType(getAccountTypeString(), getDataSet());
+    }
+
+    /**
+     * Sets the account name, account type, and data set strings.
+     * Valid combinations for account-name, account-type, data-set
+     * 1) null, null, null (local account)
+     * 2) non-null, non-null, null (valid account without data-set)
+     * 3) non-null, non-null, non-null (valid account with data-set)
+     */
+    private void setAccount(String accountName, String accountType, String dataSet) {
+        final ContentValues values = getValues();
+        if (accountName == null) {
+            if (accountType == null && dataSet == null) {
+                // This is a local account
+                values.putNull(RawContacts.ACCOUNT_NAME);
+                values.putNull(RawContacts.ACCOUNT_TYPE);
+                values.putNull(RawContacts.DATA_SET);
+                return;
+            }
+        } else {
+            if (accountType != null) {
+                // This is a valid account, either with or without a dataSet.
+                values.put(RawContacts.ACCOUNT_NAME, accountName);
+                values.put(RawContacts.ACCOUNT_TYPE, accountType);
+                if (dataSet == null) {
+                    values.putNull(RawContacts.DATA_SET);
+                } else {
+                    values.put(RawContacts.DATA_SET, dataSet);
+                }
+                return;
+            }
+        }
+        throw new IllegalArgumentException(
+                "Not a valid combination of account name, type, and data set.");
+    }
+
+    public void setAccount(AccountWithDataSet accountWithDataSet) {
+        if (accountWithDataSet != null) {
+            setAccount(accountWithDataSet.name, accountWithDataSet.type,
+                    accountWithDataSet.dataSet);
+        } else {
+            setAccount(null, null, null);
+        }
+    }
+
+    public void setAccountToLocal() {
+        setAccount(null, null, null);
+    }
+
+    /**
+     * Creates and inserts a DataItem object that wraps the content values, and returns it.
+     */
+    public void addDataItemValues(ContentValues values) {
+        addNamedDataItemValues(Data.CONTENT_URI, values);
+    }
+
+    public NamedDataItem addNamedDataItemValues(Uri uri, ContentValues values) {
+        final NamedDataItem namedItem = new NamedDataItem(uri, values);
+        mDataItems.add(namedItem);
+        return namedItem;
+    }
+
+    public ArrayList<ContentValues> getContentValues() {
+        final ArrayList<ContentValues> list = Lists.newArrayListWithCapacity(mDataItems.size());
+        for (NamedDataItem dataItem : mDataItems) {
+            if (Data.CONTENT_URI.equals(dataItem.mUri)) {
+                list.add(dataItem.mContentValues);
+            }
+        }
+        return list;
+    }
+
+    public List<DataItem> getDataItems() {
+        final ArrayList<DataItem> list = Lists.newArrayListWithCapacity(mDataItems.size());
+        for (NamedDataItem dataItem : mDataItems) {
+            if (Data.CONTENT_URI.equals(dataItem.mUri)) {
+                list.add(DataItem.createFrom(dataItem.mContentValues));
+            }
+        }
+        return list;
+    }
+
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("RawContact: ").append(mValues);
+        for (RawContact.NamedDataItem namedDataItem : mDataItems) {
+            sb.append("\n  ").append(namedDataItem.mUri);
+            sb.append("\n  -> ").append(namedDataItem.mContentValues);
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(mValues, mDataItems);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (getClass() != obj.getClass()) return false;
+
+        RawContact other = (RawContact) obj;
+        return Objects.equal(mValues, other.mValues) &&
+                Objects.equal(mDataItems, other.mDataItems);
+    }
+}
diff --git a/src/com/android/contacts/common/model/RawContactDelta.java b/src/com/android/contacts/common/model/RawContactDelta.java
new file mode 100644
index 0000000..b8709c3
--- /dev/null
+++ b/src/com/android/contacts/common/model/RawContactDelta.java
@@ -0,0 +1,660 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentProviderOperation.Builder;
+import android.content.ContentValues;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.BaseColumns;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Profile;
+import android.provider.ContactsContract.RawContacts;
+import android.util.Log;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.BuilderWrapper;
+import com.android.contacts.common.model.CPOWrapper;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/**
+ * Contains a {@link RawContact} and records any modifications separately so the
+ * original {@link RawContact} can be swapped out with a newer version and the
+ * changes still cleanly applied.
+ * <p>
+ * One benefit of this approach is that we can build changes entirely on an
+ * empty {@link RawContact}, which then becomes an insert {@link RawContacts} case.
+ * <p>
+ * When applying modifications over an {@link RawContact}, we try finding the
+ * original {@link Data#_ID} rows where the modifications took place. If those
+ * rows are missing from the new {@link RawContact}, we know the original data must
+ * be deleted, but to preserve the user modifications we treat as an insert.
+ */
+public class RawContactDelta implements Parcelable {
+    // TODO: optimize by using contentvalues pool, since we allocate so many of them
+
+    private static final String TAG = "EntityDelta";
+    private static final boolean LOGV = false;
+
+    /**
+     * Direct values from {@link Entity#getEntityValues()}.
+     */
+    private ValuesDelta mValues;
+
+    /**
+     * URI used for contacts queries, by default it is set to query raw contacts.
+     * It can be set to query the profile's raw contact(s).
+     */
+    private Uri mContactsQueryUri = RawContacts.CONTENT_URI;
+
+    /**
+     * Internal map of children values from {@link Entity#getSubValues()}, which
+     * we store here sorted into {@link Data#MIMETYPE} bins.
+     */
+    private final HashMap<String, ArrayList<ValuesDelta>> mEntries = Maps.newHashMap();
+
+    public RawContactDelta() {
+    }
+
+    public RawContactDelta(ValuesDelta values) {
+        mValues = values;
+    }
+
+    /**
+     * Build an {@link RawContactDelta} using the given {@link RawContact} as a
+     * starting point; the "before" snapshot.
+     */
+    public static RawContactDelta fromBefore(RawContact before) {
+        final RawContactDelta rawContactDelta = new RawContactDelta();
+        rawContactDelta.mValues = ValuesDelta.fromBefore(before.getValues());
+        rawContactDelta.mValues.setIdColumn(RawContacts._ID);
+        for (final ContentValues values : before.getContentValues()) {
+            rawContactDelta.addEntry(ValuesDelta.fromBefore(values));
+        }
+        return rawContactDelta;
+    }
+
+    /**
+     * Merge the "after" values from the given {@link RawContactDelta} onto the
+     * "before" state represented by this {@link RawContactDelta}, discarding any
+     * existing "after" states. This is typically used when re-parenting changes
+     * onto an updated {@link Entity}.
+     */
+    public static RawContactDelta mergeAfter(RawContactDelta local, RawContactDelta remote) {
+        // Bail early if trying to merge delete with missing local
+        final ValuesDelta remoteValues = remote.mValues;
+        if (local == null && (remoteValues.isDelete() || remoteValues.isTransient())) return null;
+
+        // Create local version if none exists yet
+        if (local == null) local = new RawContactDelta();
+
+        if (LOGV) {
+            final Long localVersion = (local.mValues == null) ? null : local.mValues
+                    .getAsLong(RawContacts.VERSION);
+            final Long remoteVersion = remote.mValues.getAsLong(RawContacts.VERSION);
+            Log.d(TAG, "Re-parenting from original version " + remoteVersion + " to "
+                    + localVersion);
+        }
+
+        // Create values if needed, and merge "after" changes
+        local.mValues = ValuesDelta.mergeAfter(local.mValues, remote.mValues);
+
+        // Find matching local entry for each remote values, or create
+        for (ArrayList<ValuesDelta> mimeEntries : remote.mEntries.values()) {
+            for (ValuesDelta remoteEntry : mimeEntries) {
+                final Long childId = remoteEntry.getId();
+
+                // Find or create local match and merge
+                final ValuesDelta localEntry = local.getEntry(childId);
+                final ValuesDelta merged = ValuesDelta.mergeAfter(localEntry, remoteEntry);
+
+                if (localEntry == null && merged != null) {
+                    // No local entry before, so insert
+                    local.addEntry(merged);
+                }
+            }
+        }
+
+        return local;
+    }
+
+    public ValuesDelta getValues() {
+        return mValues;
+    }
+
+    public boolean isContactInsert() {
+        return mValues.isInsert();
+    }
+
+    /**
+     * Get the {@link ValuesDelta} child marked as {@link Data#IS_PRIMARY},
+     * which may return null when no entry exists.
+     */
+    public ValuesDelta getPrimaryEntry(String mimeType) {
+        final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType, false);
+        if (mimeEntries == null) return null;
+
+        for (ValuesDelta entry : mimeEntries) {
+            if (entry.isPrimary()) {
+                return entry;
+            }
+        }
+
+        // When no direct primary, return something
+        return mimeEntries.size() > 0 ? mimeEntries.get(0) : null;
+    }
+
+    /**
+     * calls {@link #getSuperPrimaryEntry(String, boolean)} with true
+     * @see #getSuperPrimaryEntry(String, boolean)
+     */
+    public ValuesDelta getSuperPrimaryEntry(String mimeType) {
+        return getSuperPrimaryEntry(mimeType, true);
+    }
+
+    /**
+     * Returns the super-primary entry for the given mime type
+     * @param forceSelection if true, will try to return some value even if a super-primary
+     *     doesn't exist (may be a primary, or just a random item
+     * @return
+     */
+    @NeededForTesting
+    public ValuesDelta getSuperPrimaryEntry(String mimeType, boolean forceSelection) {
+        final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType, false);
+        if (mimeEntries == null) return null;
+
+        ValuesDelta primary = null;
+        for (ValuesDelta entry : mimeEntries) {
+            if (entry.isSuperPrimary()) {
+                return entry;
+            } else if (entry.isPrimary()) {
+                primary = entry;
+            }
+        }
+
+        if (!forceSelection) {
+            return null;
+        }
+
+        // When no direct super primary, return something
+        if (primary != null) {
+            return primary;
+        }
+        return mimeEntries.size() > 0 ? mimeEntries.get(0) : null;
+    }
+
+    /**
+     * Return the AccountType that this raw-contact belongs to.
+     */
+    public AccountType getRawContactAccountType(Context context) {
+        ContentValues entityValues = getValues().getCompleteValues();
+        String type = entityValues.getAsString(RawContacts.ACCOUNT_TYPE);
+        String dataSet = entityValues.getAsString(RawContacts.DATA_SET);
+        return AccountTypeManager.getInstance(context).getAccountType(type, dataSet);
+    }
+
+    public Long getRawContactId() {
+        return getValues().getAsLong(RawContacts._ID);
+    }
+
+    public String getAccountName() {
+        return getValues().getAsString(RawContacts.ACCOUNT_NAME);
+    }
+
+    public String getAccountType() {
+        return getValues().getAsString(RawContacts.ACCOUNT_TYPE);
+    }
+
+    public String getDataSet() {
+        return getValues().getAsString(RawContacts.DATA_SET);
+    }
+
+    public AccountType getAccountType(AccountTypeManager manager) {
+        return manager.getAccountType(getAccountType(), getDataSet());
+    }
+
+    public boolean isVisible() {
+        return getValues().isVisible();
+    }
+
+    /**
+     * Return the list of child {@link ValuesDelta} from our optimized map,
+     * creating the list if requested.
+     */
+    private ArrayList<ValuesDelta> getMimeEntries(String mimeType, boolean lazyCreate) {
+        ArrayList<ValuesDelta> mimeEntries = mEntries.get(mimeType);
+        if (mimeEntries == null && lazyCreate) {
+            mimeEntries = Lists.newArrayList();
+            mEntries.put(mimeType, mimeEntries);
+        }
+        return mimeEntries;
+    }
+
+    public ArrayList<ValuesDelta> getMimeEntries(String mimeType) {
+        return getMimeEntries(mimeType, false);
+    }
+
+    public int getMimeEntriesCount(String mimeType, boolean onlyVisible) {
+        final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType);
+        if (mimeEntries == null) return 0;
+
+        int count = 0;
+        for (ValuesDelta child : mimeEntries) {
+            // Skip deleted items when requesting only visible
+            if (onlyVisible && !child.isVisible()) continue;
+            count++;
+        }
+        return count;
+    }
+
+    public boolean hasMimeEntries(String mimeType) {
+        return mEntries.containsKey(mimeType);
+    }
+
+    public ValuesDelta addEntry(ValuesDelta entry) {
+        final String mimeType = entry.getMimetype();
+        getMimeEntries(mimeType, true).add(entry);
+        return entry;
+    }
+
+    public ArrayList<ContentValues> getContentValues() {
+        ArrayList<ContentValues> values = Lists.newArrayList();
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta entry : mimeEntries) {
+                if (!entry.isDelete()) {
+                    values.add(entry.getCompleteValues());
+                }
+            }
+        }
+        return values;
+    }
+
+    /**
+     * Find entry with the given {@link BaseColumns#_ID} value.
+     */
+    public ValuesDelta getEntry(Long childId) {
+        if (childId == null) {
+            // Requesting an "insert" entry, which has no "before"
+            return null;
+        }
+
+        // Search all children for requested entry
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta entry : mimeEntries) {
+                if (childId.equals(entry.getId())) {
+                    return entry;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return the total number of {@link ValuesDelta} contained.
+     */
+    public int getEntryCount(boolean onlyVisible) {
+        int count = 0;
+        for (String mimeType : mEntries.keySet()) {
+            count += getMimeEntriesCount(mimeType, onlyVisible);
+        }
+        return count;
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        if (object instanceof RawContactDelta) {
+            final RawContactDelta other = (RawContactDelta)object;
+
+            // Equality failed if parent values different
+            if (!other.mValues.equals(mValues)) return false;
+
+            for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+                for (ValuesDelta child : mimeEntries) {
+                    // Equality failed if any children unmatched
+                    if (!other.containsEntry(child)) return false;
+                }
+            }
+
+            // Passed all tests, so equal
+            return true;
+        }
+        return false;
+    }
+
+    private boolean containsEntry(ValuesDelta entry) {
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta child : mimeEntries) {
+                // Contained if we find any child that matches
+                if (child.equals(entry)) return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Mark this entire object deleted, including any {@link ValuesDelta}.
+     */
+    public void markDeleted() {
+        this.mValues.markDeleted();
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta child : mimeEntries) {
+                child.markDeleted();
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("\n(");
+        builder.append("Uri=");
+        builder.append(mContactsQueryUri);
+        builder.append(", Values=");
+        builder.append(mValues != null ? mValues.toString() : "null");
+        builder.append(", Entries={");
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta child : mimeEntries) {
+                builder.append("\n\t");
+                child.toString(builder);
+            }
+        }
+        builder.append("\n})\n");
+        return builder.toString();
+    }
+
+    /**
+     * Consider building the given {@link ContentProviderOperation.Builder} and
+     * appending it to the given list, which only happens if builder is valid.
+     */
+    private void possibleAdd(ArrayList<ContentProviderOperation> diff,
+            ContentProviderOperation.Builder builder) {
+        if (builder != null) {
+            diff.add(builder.build());
+        }
+    }
+
+    /**
+     * For compatibility purpose, this method is copied from {@link #possibleAdd} and takes
+     * BuilderWrapper and an ArrayList of CPOWrapper as parameters.
+     */
+    private void possibleAddWrapper(ArrayList<CPOWrapper> diff, BuilderWrapper bw) {
+        if (bw != null && bw.getBuilder() != null) {
+            diff.add(new CPOWrapper(bw.getBuilder().build(), bw.getType()));
+        }
+    }
+
+    /**
+     * Build a list of {@link ContentProviderOperation} that will assert any
+     * "before" state hasn't changed. This is maintained separately so that all
+     * asserts can take place before any updates occur.
+     */
+    public void buildAssert(ArrayList<ContentProviderOperation> buildInto) {
+        final Builder builder = buildAssertHelper();
+        if (builder != null) {
+            buildInto.add(builder.build());
+        }
+    }
+
+    /**
+     * For compatibility purpose, this method is copied from {@link #buildAssert} and takes an
+     * ArrayList of CPOWrapper as parameter.
+     */
+    public void buildAssertWrapper(ArrayList<CPOWrapper> buildInto) {
+        final Builder builder = buildAssertHelper();
+        if (builder != null) {
+            buildInto.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_ASSERT));
+        }
+    }
+
+    private Builder buildAssertHelper() {
+        final boolean isContactInsert = mValues.isInsert();
+        ContentProviderOperation.Builder builder = null;
+        if (!isContactInsert) {
+            // Assert version is consistent while persisting changes
+            final Long beforeId = mValues.getId();
+            final Long beforeVersion = mValues.getAsLong(RawContacts.VERSION);
+            if (beforeId == null || beforeVersion == null) return builder;
+            builder = ContentProviderOperation.newAssertQuery(mContactsQueryUri);
+            builder.withSelection(RawContacts._ID + "=" + beforeId, null);
+            builder.withValue(RawContacts.VERSION, beforeVersion);
+        }
+        return builder;
+    }
+
+    /**
+     * Build a list of {@link ContentProviderOperation} that will transform the
+     * current "before" {@link Entity} state into the modified state which this
+     * {@link RawContactDelta} represents.
+     */
+    public void buildDiff(ArrayList<ContentProviderOperation> buildInto) {
+        final int firstIndex = buildInto.size();
+
+        final boolean isContactInsert = mValues.isInsert();
+        final boolean isContactDelete = mValues.isDelete();
+        final boolean isContactUpdate = !isContactInsert && !isContactDelete;
+
+        final Long beforeId = mValues.getId();
+
+        Builder builder;
+
+        if (isContactInsert) {
+            // TODO: for now simply disabling aggregation when a new contact is
+            // created on the phone.  In the future, will show aggregation suggestions
+            // after saving the contact.
+            mValues.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_SUSPENDED);
+        }
+
+        // Build possible operation at Contact level
+        builder = mValues.buildDiff(mContactsQueryUri);
+        possibleAdd(buildInto, builder);
+
+        // Build operations for all children
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta child : mimeEntries) {
+                // Ignore children if parent was deleted
+                if (isContactDelete) continue;
+
+                // Use the profile data URI if the contact is the profile.
+                if (mContactsQueryUri.equals(Profile.CONTENT_RAW_CONTACTS_URI)) {
+                    builder = child.buildDiff(Uri.withAppendedPath(Profile.CONTENT_URI,
+                            RawContacts.Data.CONTENT_DIRECTORY));
+                } else {
+                    builder = child.buildDiff(Data.CONTENT_URI);
+                }
+
+                if (child.isInsert()) {
+                    if (isContactInsert) {
+                        // Parent is brand new insert, so back-reference _id
+                        builder.withValueBackReference(Data.RAW_CONTACT_ID, firstIndex);
+                    } else {
+                        // Inserting under existing, so fill with known _id
+                        builder.withValue(Data.RAW_CONTACT_ID, beforeId);
+                    }
+                } else if (isContactInsert && builder != null) {
+                    // Child must be insert when Contact insert
+                    throw new IllegalArgumentException("When parent insert, child must be also");
+                }
+                possibleAdd(buildInto, builder);
+            }
+        }
+
+        final boolean addedOperations = buildInto.size() > firstIndex;
+        if (addedOperations && isContactUpdate) {
+            // Suspend aggregation while persisting updates
+            builder = buildSetAggregationMode(beforeId, RawContacts.AGGREGATION_MODE_SUSPENDED);
+            buildInto.add(firstIndex, builder.build());
+
+            // Restore aggregation mode as last operation
+            builder = buildSetAggregationMode(beforeId, RawContacts.AGGREGATION_MODE_DEFAULT);
+            buildInto.add(builder.build());
+        } else if (isContactInsert) {
+            // Restore aggregation mode as last operation
+            builder = ContentProviderOperation.newUpdate(mContactsQueryUri);
+            builder.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DEFAULT);
+            builder.withSelection(RawContacts._ID + "=?", new String[1]);
+            builder.withSelectionBackReference(0, firstIndex);
+            buildInto.add(builder.build());
+        }
+    }
+
+    /**
+     * For compatibility purpose, this method is copied from {@link #buildDiff} and takes an
+     * ArrayList of CPOWrapper as parameter.
+     */
+    public void buildDiffWrapper(ArrayList<CPOWrapper> buildInto) {
+        final int firstIndex = buildInto.size();
+
+        final boolean isContactInsert = mValues.isInsert();
+        final boolean isContactDelete = mValues.isDelete();
+        final boolean isContactUpdate = !isContactInsert && !isContactDelete;
+
+        final Long beforeId = mValues.getId();
+
+        if (isContactInsert) {
+            // TODO: for now simply disabling aggregation when a new contact is
+            // created on the phone.  In the future, will show aggregation suggestions
+            // after saving the contact.
+            mValues.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_SUSPENDED);
+        }
+
+        // Build possible operation at Contact level
+        BuilderWrapper bw = mValues.buildDiffWrapper(mContactsQueryUri);
+        possibleAddWrapper(buildInto, bw);
+
+        // Build operations for all children
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta child : mimeEntries) {
+                // Ignore children if parent was deleted
+                if (isContactDelete) continue;
+
+                // Use the profile data URI if the contact is the profile.
+                if (mContactsQueryUri.equals(Profile.CONTENT_RAW_CONTACTS_URI)) {
+                    bw = child.buildDiffWrapper(Uri.withAppendedPath(Profile.CONTENT_URI,
+                            RawContacts.Data.CONTENT_DIRECTORY));
+                } else {
+                    bw = child.buildDiffWrapper(Data.CONTENT_URI);
+                }
+
+                if (child.isInsert()) {
+                    if (isContactInsert) {
+                        // Parent is brand new insert, so back-reference _id
+                        bw.getBuilder().withValueBackReference(Data.RAW_CONTACT_ID, firstIndex);
+                    } else {
+                        // Inserting under existing, so fill with known _id
+                        bw.getBuilder().withValue(Data.RAW_CONTACT_ID, beforeId);
+                    }
+                } else if (isContactInsert && bw != null && bw.getBuilder() != null) {
+                    // Child must be insert when Contact insert
+                    throw new IllegalArgumentException("When parent insert, child must be also");
+                }
+                possibleAddWrapper(buildInto, bw);
+            }
+        }
+
+        final boolean addedOperations = buildInto.size() > firstIndex;
+        if (addedOperations && isContactUpdate) {
+            // Suspend aggregation while persisting updates
+            Builder builder =
+                    buildSetAggregationMode(beforeId, RawContacts.AGGREGATION_MODE_SUSPENDED);
+            buildInto.add(firstIndex, new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+
+            // Restore aggregation mode as last operation
+            builder = buildSetAggregationMode(beforeId, RawContacts.AGGREGATION_MODE_DEFAULT);
+            buildInto.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+        } else if (isContactInsert) {
+            // Restore aggregation mode as last operation
+            Builder builder = ContentProviderOperation.newUpdate(mContactsQueryUri);
+            builder.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DEFAULT);
+            builder.withSelection(RawContacts._ID + "=?", new String[1]);
+            builder.withSelectionBackReference(0, firstIndex);
+            buildInto.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+        }
+    }
+
+    /**
+     * Build a {@link ContentProviderOperation} that changes
+     * {@link RawContacts#AGGREGATION_MODE} to the given value.
+     */
+    protected Builder buildSetAggregationMode(Long beforeId, int mode) {
+        Builder builder = ContentProviderOperation.newUpdate(mContactsQueryUri);
+        builder.withValue(RawContacts.AGGREGATION_MODE, mode);
+        builder.withSelection(RawContacts._ID + "=" + beforeId, null);
+        return builder;
+    }
+
+    /** {@inheritDoc} */
+    public int describeContents() {
+        // Nothing special about this parcel
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    public void writeToParcel(Parcel dest, int flags) {
+        final int size = this.getEntryCount(false);
+        dest.writeInt(size);
+        dest.writeParcelable(mValues, flags);
+        dest.writeParcelable(mContactsQueryUri, flags);
+        for (ArrayList<ValuesDelta> mimeEntries : mEntries.values()) {
+            for (ValuesDelta child : mimeEntries) {
+                dest.writeParcelable(child, flags);
+            }
+        }
+    }
+
+    public void readFromParcel(Parcel source) {
+        final ClassLoader loader = getClass().getClassLoader();
+        final int size = source.readInt();
+        mValues = source.<ValuesDelta> readParcelable(loader);
+        mContactsQueryUri = source.<Uri> readParcelable(loader);
+        for (int i = 0; i < size; i++) {
+            final ValuesDelta child = source.<ValuesDelta> readParcelable(loader);
+            this.addEntry(child);
+        }
+    }
+
+    /**
+     * Used to set the query URI to the profile URI to store profiles.
+     */
+    public void setProfileQueryUri() {
+        mContactsQueryUri = Profile.CONTENT_RAW_CONTACTS_URI;
+    }
+
+    public static final Parcelable.Creator<RawContactDelta> CREATOR =
+            new Parcelable.Creator<RawContactDelta>() {
+        public RawContactDelta createFromParcel(Parcel in) {
+            final RawContactDelta state = new RawContactDelta();
+            state.readFromParcel(in);
+            return state;
+        }
+
+        public RawContactDelta[] newArray(int size) {
+            return new RawContactDelta[size];
+        }
+    };
+
+}
diff --git a/src/com/android/contacts/common/model/RawContactDeltaList.java b/src/com/android/contacts/common/model/RawContactDeltaList.java
new file mode 100644
index 0000000..6964643
--- /dev/null
+++ b/src/com/android/contacts/common/model/RawContactDeltaList.java
@@ -0,0 +1,573 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentProviderOperation.Builder;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Entity;
+import android.content.EntityIterator;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.ContactsContract.AggregationExceptions;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.RawContacts;
+import android.util.Log;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.CPOWrapper;
+import com.android.contacts.common.model.ValuesDelta;
+
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+
+/**
+ * Container for multiple {@link RawContactDelta} objects, usually when editing
+ * together as an entire aggregate. Provides convenience methods for parceling
+ * and applying another {@link RawContactDeltaList} over it.
+ */
+public class RawContactDeltaList extends ArrayList<RawContactDelta> implements Parcelable {
+    private static final String TAG = RawContactDeltaList.class.getSimpleName();
+    private static final boolean VERBOSE_LOGGING = Log.isLoggable(TAG, Log.VERBOSE);
+
+    private boolean mSplitRawContacts;
+    private long[] mJoinWithRawContactIds;
+
+    public RawContactDeltaList() {
+    }
+
+    /**
+     * Create an {@link RawContactDeltaList} based on {@link Contacts} specified by the
+     * given query parameters. This closes the {@link EntityIterator} when
+     * finished, so it doesn't subscribe to updates.
+     */
+    public static RawContactDeltaList fromQuery(Uri entityUri, ContentResolver resolver,
+            String selection, String[] selectionArgs, String sortOrder) {
+        final EntityIterator iterator = RawContacts.newEntityIterator(
+                resolver.query(entityUri, null, selection, selectionArgs, sortOrder));
+        try {
+            return fromIterator(iterator);
+        } finally {
+            iterator.close();
+        }
+    }
+
+    /**
+     * Create an {@link RawContactDeltaList} that contains the entities of the Iterator as before
+     * values.  This function can be passed an iterator of Entity objects or an iterator of
+     * RawContact objects.
+     */
+    public static RawContactDeltaList fromIterator(Iterator<?> iterator) {
+        final RawContactDeltaList state = new RawContactDeltaList();
+        state.addAll(iterator);
+        return state;
+    }
+
+    public void addAll(Iterator<?> iterator) {
+        // Perform background query to pull contact details
+        while (iterator.hasNext()) {
+            // Read all contacts into local deltas to prepare for edits
+            Object nextObject = iterator.next();
+            final RawContact before = nextObject instanceof Entity
+                    ? RawContact.createFrom((Entity) nextObject)
+                    : (RawContact) nextObject;
+            final RawContactDelta rawContactDelta = RawContactDelta.fromBefore(before);
+            add(rawContactDelta);
+        }
+    }
+
+    /**
+     * Merge the "after" values from the given {@link RawContactDeltaList}, discarding any
+     * previous "after" states. This is typically used when re-parenting user
+     * edits onto an updated {@link RawContactDeltaList}.
+     */
+    public static RawContactDeltaList mergeAfter(RawContactDeltaList local,
+            RawContactDeltaList remote) {
+        if (local == null) local = new RawContactDeltaList();
+
+        // For each entity in the remote set, try matching over existing
+        for (RawContactDelta remoteEntity : remote) {
+            final Long rawContactId = remoteEntity.getValues().getId();
+
+            // Find or create local match and merge
+            final RawContactDelta localEntity = local.getByRawContactId(rawContactId);
+            final RawContactDelta merged = RawContactDelta.mergeAfter(localEntity, remoteEntity);
+
+            if (localEntity == null && merged != null) {
+                // No local entry before, so insert
+                local.add(merged);
+            }
+        }
+
+        return local;
+    }
+
+    /**
+     * Build a list of {@link ContentProviderOperation} that will transform all
+     * the "before" {@link Entity} states into the modified state which all
+     * {@link RawContactDelta} objects represent. This method specifically creates
+     * any {@link AggregationExceptions} rules needed to groups edits together.
+     */
+    public ArrayList<ContentProviderOperation> buildDiff() {
+        if (VERBOSE_LOGGING) {
+            Log.v(TAG, "buildDiff: list=" + toString());
+        }
+        final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
+
+        final long rawContactId = this.findRawContactId();
+        int firstInsertRow = -1;
+
+        // First pass enforces versions remain consistent
+        for (RawContactDelta delta : this) {
+            delta.buildAssert(diff);
+        }
+
+        final int assertMark = diff.size();
+        int backRefs[] = new int[size()];
+
+        int rawContactIndex = 0;
+
+        // Second pass builds actual operations
+        for (RawContactDelta delta : this) {
+            final int firstBatch = diff.size();
+            final boolean isInsert = delta.isContactInsert();
+            backRefs[rawContactIndex++] = isInsert ? firstBatch : -1;
+
+            delta.buildDiff(diff);
+
+            // If the user chose to join with some other existing raw contact(s) at save time,
+            // add aggregation exceptions for all those raw contacts.
+            if (mJoinWithRawContactIds != null) {
+                for (Long joinedRawContactId : mJoinWithRawContactIds) {
+                    final Builder builder = beginKeepTogether();
+                    builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, joinedRawContactId);
+                    if (rawContactId != -1) {
+                        builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, rawContactId);
+                    } else {
+                        builder.withValueBackReference(
+                                AggregationExceptions.RAW_CONTACT_ID2, firstBatch);
+                    }
+                    diff.add(builder.build());
+                }
+            }
+
+            // Only create rules for inserts
+            if (!isInsert) continue;
+
+            // If we are going to split all contacts, there is no point in first combining them
+            if (mSplitRawContacts) continue;
+
+            if (rawContactId != -1) {
+                // Has existing contact, so bind to it strongly
+                final Builder builder = beginKeepTogether();
+                builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, rawContactId);
+                builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, firstBatch);
+                diff.add(builder.build());
+
+            } else if (firstInsertRow == -1) {
+                // First insert case, so record row
+                firstInsertRow = firstBatch;
+
+            } else {
+                // Additional insert case, so point at first insert
+                final Builder builder = beginKeepTogether();
+                builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID1,
+                        firstInsertRow);
+                builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, firstBatch);
+                diff.add(builder.build());
+            }
+        }
+
+        if (mSplitRawContacts) {
+            buildSplitContactDiff(diff, backRefs);
+        }
+
+        // No real changes if only left with asserts
+        if (diff.size() == assertMark) {
+            diff.clear();
+        }
+        if (VERBOSE_LOGGING) {
+            Log.v(TAG, "buildDiff: ops=" + diffToString(diff));
+        }
+        return diff;
+    }
+
+    /**
+     * For compatibility purpose, this method is copied from {@link #buildDiff} and returns an
+     * ArrayList of CPOWrapper.
+     */
+    public ArrayList<CPOWrapper> buildDiffWrapper() {
+        if (VERBOSE_LOGGING) {
+            Log.v(TAG, "buildDiffWrapper: list=" + toString());
+        }
+        final ArrayList<CPOWrapper> diffWrapper = Lists.newArrayList();
+
+        final long rawContactId = this.findRawContactId();
+        int firstInsertRow = -1;
+
+        // First pass enforces versions remain consistent
+        for (RawContactDelta delta : this) {
+            delta.buildAssertWrapper(diffWrapper);
+        }
+
+        final int assertMark = diffWrapper.size();
+        int backRefs[] = new int[size()];
+
+        int rawContactIndex = 0;
+
+        // Second pass builds actual operations
+        for (RawContactDelta delta : this) {
+            final int firstBatch = diffWrapper.size();
+            final boolean isInsert = delta.isContactInsert();
+            backRefs[rawContactIndex++] = isInsert ? firstBatch : -1;
+
+            delta.buildDiffWrapper(diffWrapper);
+
+            // If the user chose to join with some other existing raw contact(s) at save time,
+            // add aggregation exceptions for all those raw contacts.
+            if (mJoinWithRawContactIds != null) {
+                for (Long joinedRawContactId : mJoinWithRawContactIds) {
+                    final Builder builder = beginKeepTogether();
+                    builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, joinedRawContactId);
+                    if (rawContactId != -1) {
+                        builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, rawContactId);
+                    } else {
+                        builder.withValueBackReference(
+                                AggregationExceptions.RAW_CONTACT_ID2, firstBatch);
+                    }
+                    diffWrapper.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+                }
+            }
+
+            // Only create rules for inserts
+            if (!isInsert) continue;
+
+            // If we are going to split all contacts, there is no point in first combining them
+            if (mSplitRawContacts) continue;
+
+            if (rawContactId != -1) {
+                // Has existing contact, so bind to it strongly
+                final Builder builder = beginKeepTogether();
+                builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, rawContactId);
+                builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, firstBatch);
+                diffWrapper.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+
+            } else if (firstInsertRow == -1) {
+                // First insert case, so record row
+                firstInsertRow = firstBatch;
+
+            } else {
+                // Additional insert case, so point at first insert
+                final Builder builder = beginKeepTogether();
+                builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID1,
+                        firstInsertRow);
+                builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, firstBatch);
+                diffWrapper.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+            }
+        }
+
+        if (mSplitRawContacts) {
+            buildSplitContactDiffWrapper(diffWrapper, backRefs);
+        }
+
+        // No real changes if only left with asserts
+        if (diffWrapper.size() == assertMark) {
+            diffWrapper.clear();
+        }
+        if (VERBOSE_LOGGING) {
+            Log.v(TAG, "buildDiff: ops=" + diffToStringWrapper(diffWrapper));
+        }
+        return diffWrapper;
+    }
+
+    private static String diffToString(ArrayList<ContentProviderOperation> ops) {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("[\n");
+        for (ContentProviderOperation op : ops) {
+            sb.append(op.toString());
+            sb.append(",\n");
+        }
+        sb.append("]\n");
+        return sb.toString();
+    }
+
+    /**
+     * For compatibility purpose.
+     */
+    private static String diffToStringWrapper(ArrayList<CPOWrapper> cpoWrappers) {
+        ArrayList<ContentProviderOperation> ops = Lists.newArrayList();
+        for (CPOWrapper cpoWrapper : cpoWrappers) {
+            ops.add(cpoWrapper.getOperation());
+        }
+        return diffToString(ops);
+    }
+
+    /**
+     * Start building a {@link ContentProviderOperation} that will keep two
+     * {@link RawContacts} together.
+     */
+    protected Builder beginKeepTogether() {
+        final Builder builder = ContentProviderOperation
+                .newUpdate(AggregationExceptions.CONTENT_URI);
+        builder.withValue(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER);
+        return builder;
+    }
+
+    /**
+     * Builds {@link AggregationExceptions} to split all constituent raw contacts into
+     * separate contacts.
+     */
+    private void buildSplitContactDiff(final ArrayList<ContentProviderOperation> diff,
+            int[] backRefs) {
+        final int count = size();
+        for (int i = 0; i < count; i++) {
+            for (int j = 0; j < count; j++) {
+                if (i == j) {
+                    continue;
+                }
+                final Builder builder = buildSplitContactDiffHelper(i, j, backRefs);
+                if (builder != null) {
+                    diff.add(builder.build());
+                }
+            }
+        }
+    }
+
+    /**
+     * For compatibility purpose, this method is copied from {@link #buildSplitContactDiff} and
+     * takes an ArrayList of CPOWrapper as parameter.
+     */
+    private void buildSplitContactDiffWrapper(final ArrayList<CPOWrapper> diff, int[] backRefs) {
+        final int count = size();
+        for (int i = 0; i < count; i++) {
+            for (int j = 0; j < count; j++) {
+                if (i == j) {
+                    continue;
+                }
+                final Builder builder = buildSplitContactDiffHelper(i, j, backRefs);
+                if (builder != null) {
+                    diff.add(new CPOWrapper(builder.build(), CompatUtils.TYPE_UPDATE));
+                }
+            }
+        }
+    }
+
+    private Builder buildSplitContactDiffHelper(int index1, int index2, int[] backRefs) {
+        final Builder builder =
+                ContentProviderOperation.newUpdate(AggregationExceptions.CONTENT_URI);
+        builder.withValue(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_SEPARATE);
+
+        Long rawContactId1 = get(index1).getValues().getAsLong(RawContacts._ID);
+        int backRef1 = backRefs[index1];
+        if (rawContactId1 != null && rawContactId1 >= 0) {
+            builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, rawContactId1);
+        } else if (backRef1 >= 0) {
+            builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID1, backRef1);
+        } else {
+            return null;
+        }
+
+        Long rawContactId2 = get(index2).getValues().getAsLong(RawContacts._ID);
+        int backRef2 = backRefs[index2];
+        if (rawContactId2 != null && rawContactId2 >= 0) {
+            builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, rawContactId2);
+        } else if (backRef2 >= 0) {
+            builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, backRef2);
+        } else {
+            return null;
+        }
+        return builder;
+    }
+
+    /**
+     * Search all contained {@link RawContactDelta} for the first one with an
+     * existing {@link RawContacts#_ID} value. Usually used when creating
+     * {@link AggregationExceptions} during an update.
+     */
+    public long findRawContactId() {
+        for (RawContactDelta delta : this) {
+            final Long rawContactId = delta.getValues().getAsLong(RawContacts._ID);
+            if (rawContactId != null && rawContactId >= 0) {
+                return rawContactId;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Find {@link RawContacts#_ID} of the requested {@link RawContactDelta}.
+     */
+    public Long getRawContactId(int index) {
+        if (index >= 0 && index < this.size()) {
+            final RawContactDelta delta = this.get(index);
+            final ValuesDelta values = delta.getValues();
+            if (values.isVisible()) {
+                return values.getAsLong(RawContacts._ID);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Find the raw-contact (an {@link RawContactDelta}) with the specified ID.
+     */
+    public RawContactDelta getByRawContactId(Long rawContactId) {
+        final int index = this.indexOfRawContactId(rawContactId);
+        return (index == -1) ? null : this.get(index);
+    }
+
+    /**
+     * Find index of given {@link RawContacts#_ID} when present.
+     */
+    public int indexOfRawContactId(Long rawContactId) {
+        if (rawContactId == null) return -1;
+        final int size = this.size();
+        for (int i = 0; i < size; i++) {
+            final Long currentId = getRawContactId(i);
+            if (rawContactId.equals(currentId)) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Return the index of the first RawContactDelta corresponding to a writable raw-contact, or -1.
+     * */
+    public int indexOfFirstWritableRawContact(Context context) {
+        // Find the first writable entity.
+        int entityIndex = 0;
+        for (RawContactDelta delta : this) {
+            if (delta.getRawContactAccountType(context).areContactsWritable()) return entityIndex;
+            entityIndex++;
+        }
+        return -1;
+    }
+
+    /**  Return the first RawContactDelta corresponding to a writable raw-contact, or null. */
+    public RawContactDelta getFirstWritableRawContact(Context context) {
+        final int index = indexOfFirstWritableRawContact(context);
+        return (index == -1) ? null : get(index);
+    }
+
+    public ValuesDelta getSuperPrimaryEntry(final String mimeType) {
+        ValuesDelta primary = null;
+        ValuesDelta randomEntry = null;
+        for (RawContactDelta delta : this) {
+            final ArrayList<ValuesDelta> mimeEntries = delta.getMimeEntries(mimeType);
+            if (mimeEntries == null) return null;
+
+            for (ValuesDelta entry : mimeEntries) {
+                if (entry.isSuperPrimary()) {
+                    return entry;
+                } else if (primary == null && entry.isPrimary()) {
+                    primary = entry;
+                } else if (randomEntry == null) {
+                    randomEntry = entry;
+                }
+            }
+        }
+        // When no direct super primary, return something
+        if (primary != null) {
+            return primary;
+        }
+        return randomEntry;
+    }
+
+    /**
+     * Sets a flag that will split ("explode") the raw_contacts into seperate contacts
+     */
+    public void markRawContactsForSplitting() {
+        mSplitRawContacts = true;
+    }
+
+    public boolean isMarkedForSplitting() {
+        return mSplitRawContacts;
+    }
+
+    public void setJoinWithRawContacts(long[] rawContactIds) {
+        mJoinWithRawContactIds = rawContactIds;
+    }
+
+    public boolean isMarkedForJoining() {
+        return mJoinWithRawContactIds != null && mJoinWithRawContactIds.length > 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public int describeContents() {
+        // Nothing special about this parcel
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        final int size = this.size();
+        dest.writeInt(size);
+        for (RawContactDelta delta : this) {
+            dest.writeParcelable(delta, flags);
+        }
+        dest.writeLongArray(mJoinWithRawContactIds);
+        dest.writeInt(mSplitRawContacts ? 1 : 0);
+    }
+
+    @SuppressWarnings("unchecked")
+    public void readFromParcel(Parcel source) {
+        final ClassLoader loader = getClass().getClassLoader();
+        final int size = source.readInt();
+        for (int i = 0; i < size; i++) {
+            this.add(source.<RawContactDelta> readParcelable(loader));
+        }
+        mJoinWithRawContactIds = source.createLongArray();
+        mSplitRawContacts = source.readInt() != 0;
+    }
+
+    public static final Parcelable.Creator<RawContactDeltaList> CREATOR =
+            new Parcelable.Creator<RawContactDeltaList>() {
+        @Override
+        public RawContactDeltaList createFromParcel(Parcel in) {
+            final RawContactDeltaList state = new RawContactDeltaList();
+            state.readFromParcel(in);
+            return state;
+        }
+
+        @Override
+        public RawContactDeltaList[] newArray(int size) {
+            return new RawContactDeltaList[size];
+        }
+    };
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append("Split=");
+        sb.append(mSplitRawContacts);
+        sb.append(", Join=[");
+        sb.append(Arrays.toString(mJoinWithRawContactIds));
+        sb.append("], Values=");
+        sb.append(super.toString());
+        sb.append(")");
+        return sb.toString();
+    }
+}
diff --git a/src/com/android/contacts/common/model/RawContactModifier.java b/src/com/android/contacts/common/model/RawContactModifier.java
new file mode 100644
index 0000000..fd028e3
--- /dev/null
+++ b/src/com/android/contacts/common/model/RawContactModifier.java
@@ -0,0 +1,1424 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Intents;
+import android.provider.ContactsContract.Intents.Insert;
+import android.provider.ContactsContract.RawContacts;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.SparseArray;
+import android.util.SparseIntArray;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.util.CommonDateUtils;
+import com.android.contacts.common.util.DateUtils;
+import com.android.contacts.common.util.NameConverter;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditField;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.AccountType.EventEditType;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.model.dataitem.PhoneDataItem;
+import com.android.contacts.common.model.dataitem.StructuredNameDataItem;
+
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+/**
+ * Helper methods for modifying an {@link RawContactDelta}, such as inserting
+ * new rows, or enforcing {@link AccountType}.
+ */
+public class RawContactModifier {
+    private static final String TAG = RawContactModifier.class.getSimpleName();
+
+    /** Set to true in order to view logs on entity operations */
+    private static final boolean DEBUG = false;
+
+    /**
+     * For the given {@link RawContactDelta}, determine if the given
+     * {@link DataKind} could be inserted under specific
+     * {@link AccountType}.
+     */
+    public static boolean canInsert(RawContactDelta state, DataKind kind) {
+        // Insert possible when have valid types and under overall maximum
+        final int visibleCount = state.getMimeEntriesCount(kind.mimeType, true);
+        final boolean validTypes = hasValidTypes(state, kind);
+        final boolean validOverall = (kind.typeOverallMax == -1)
+                || (visibleCount < kind.typeOverallMax);
+        return (validTypes && validOverall);
+    }
+
+    public static boolean hasValidTypes(RawContactDelta state, DataKind kind) {
+        if (RawContactModifier.hasEditTypes(kind)) {
+            return (getValidTypes(state, kind, null, true, null, true).size() > 0);
+        } else {
+            return true;
+        }
+    }
+
+    /**
+     * Ensure that at least one of the given {@link DataKind} exists in the
+     * given {@link RawContactDelta} state, and try creating one if none exist.
+     * @return The child (either newly created or the first existing one), or null if the
+     *     account doesn't support this {@link DataKind}.
+     */
+    public static ValuesDelta ensureKindExists(
+            RawContactDelta state, AccountType accountType, String mimeType) {
+        final DataKind kind = accountType.getKindForMimetype(mimeType);
+        final boolean hasChild = state.getMimeEntriesCount(mimeType, true) > 0;
+
+        if (kind != null) {
+            if (hasChild) {
+                // Return the first entry.
+                return state.getMimeEntries(mimeType).get(0);
+            } else {
+                // Create child when none exists and valid kind
+                final ValuesDelta child = insertChild(state, kind);
+                if (kind.mimeType.equals(Photo.CONTENT_ITEM_TYPE)) {
+                    child.setFromTemplate(true);
+                }
+                return child;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * For the given {@link RawContactDelta} and {@link DataKind}, return the
+     * list possible {@link EditType} options available based on
+     * {@link AccountType}.
+     *
+     * @param forceInclude Always include this {@link EditType} in the returned
+     *            list, even when an otherwise-invalid choice. This is useful
+     *            when showing a dialog that includes the current type.
+     * @param includeSecondary If true, include any valid types marked as
+     *            {@link EditType#secondary}.
+     * @param typeCount When provided, will be used for the frequency count of
+     *            each {@link EditType}, otherwise built using
+     *            {@link #getTypeFrequencies(RawContactDelta, DataKind)}.
+     * @param checkOverall If true, check if the overall number of types is under limit.
+     */
+    public static ArrayList<EditType> getValidTypes(RawContactDelta state, DataKind kind,
+            EditType forceInclude, boolean includeSecondary, SparseIntArray typeCount,
+            boolean checkOverall) {
+        final ArrayList<EditType> validTypes = new ArrayList<EditType>();
+
+        // Bail early if no types provided
+        if (!hasEditTypes(kind)) return validTypes;
+
+        if (typeCount == null) {
+            // Build frequency counts if not provided
+            typeCount = getTypeFrequencies(state, kind);
+        }
+
+        // Build list of valid types
+        boolean validOverall = true;
+        if (checkOverall) {
+            final int overallCount = typeCount.get(FREQUENCY_TOTAL);
+            validOverall = (kind.typeOverallMax == -1 ? true
+                    : overallCount < kind.typeOverallMax);
+        }
+
+        for (EditType type : kind.typeList) {
+            final boolean validSpecific = (type.specificMax == -1 ? true : typeCount
+                    .get(type.rawValue) < type.specificMax);
+            final boolean validSecondary = (includeSecondary ? true : !type.secondary);
+            final boolean forcedInclude = type.equals(forceInclude);
+            if (forcedInclude || (validOverall && validSpecific && validSecondary)) {
+                // Type is valid when no limit, under limit, or forced include
+                validTypes.add(type);
+            }
+        }
+
+        return validTypes;
+    }
+
+    private static final int FREQUENCY_TOTAL = Integer.MIN_VALUE;
+
+    /**
+     * Count up the frequency that each {@link EditType} appears in the given
+     * {@link RawContactDelta}. The returned {@link SparseIntArray} maps from
+     * {@link EditType#rawValue} to counts, with the total overall count stored
+     * as {@link #FREQUENCY_TOTAL}.
+     */
+    private static SparseIntArray getTypeFrequencies(RawContactDelta state, DataKind kind) {
+        final SparseIntArray typeCount = new SparseIntArray();
+
+        // Find all entries for this kind, bailing early if none found
+        final List<ValuesDelta> mimeEntries = state.getMimeEntries(kind.mimeType);
+        if (mimeEntries == null) return typeCount;
+
+        int totalCount = 0;
+        for (ValuesDelta entry : mimeEntries) {
+            // Only count visible entries
+            if (!entry.isVisible()) continue;
+            totalCount++;
+
+            final EditType type = getCurrentType(entry, kind);
+            if (type != null) {
+                final int count = typeCount.get(type.rawValue);
+                typeCount.put(type.rawValue, count + 1);
+            }
+        }
+        typeCount.put(FREQUENCY_TOTAL, totalCount);
+        return typeCount;
+    }
+
+    /**
+     * Check if the given {@link DataKind} has multiple types that should be
+     * displayed for users to pick.
+     */
+    public static boolean hasEditTypes(DataKind kind) {
+        return kind.typeList != null && kind.typeList.size() > 0;
+    }
+
+    /**
+     * Find the {@link EditType} that describes the given
+     * {@link ValuesDelta} row, assuming the given {@link DataKind} dictates
+     * the possible types.
+     */
+    public static EditType getCurrentType(ValuesDelta entry, DataKind kind) {
+        final Long rawValue = entry.getAsLong(kind.typeColumn);
+        if (rawValue == null) return null;
+        return getType(kind, rawValue.intValue());
+    }
+
+    /**
+     * Find the {@link EditType} that describes the given {@link ContentValues} row,
+     * assuming the given {@link DataKind} dictates the possible types.
+     */
+    public static EditType getCurrentType(ContentValues entry, DataKind kind) {
+        if (kind.typeColumn == null) return null;
+        final Integer rawValue = entry.getAsInteger(kind.typeColumn);
+        if (rawValue == null) return null;
+        return getType(kind, rawValue);
+    }
+
+    /**
+     * Find the {@link EditType} that describes the given {@link Cursor} row,
+     * assuming the given {@link DataKind} dictates the possible types.
+     */
+    public static EditType getCurrentType(Cursor cursor, DataKind kind) {
+        if (kind.typeColumn == null) return null;
+        final int index = cursor.getColumnIndex(kind.typeColumn);
+        if (index == -1) return null;
+        final int rawValue = cursor.getInt(index);
+        return getType(kind, rawValue);
+    }
+
+    /**
+     * Find the {@link EditType} with the given {@link EditType#rawValue}.
+     */
+    public static EditType getType(DataKind kind, int rawValue) {
+        for (EditType type : kind.typeList) {
+            if (type.rawValue == rawValue) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return the precedence for the the given {@link EditType#rawValue}, where
+     * lower numbers are higher precedence.
+     */
+    public static int getTypePrecedence(DataKind kind, int rawValue) {
+        for (int i = 0; i < kind.typeList.size(); i++) {
+            final EditType type = kind.typeList.get(i);
+            if (type.rawValue == rawValue) {
+                return i;
+            }
+        }
+        return Integer.MAX_VALUE;
+    }
+
+    /**
+     * Find the best {@link EditType} for a potential insert. The "best" is the
+     * first primary type that doesn't already exist. When all valid types
+     * exist, we pick the last valid option.
+     */
+    public static EditType getBestValidType(RawContactDelta state, DataKind kind,
+            boolean includeSecondary, int exactValue) {
+        // Shortcut when no types
+        if (kind == null || kind.typeColumn == null) return null;
+
+        // Find type counts and valid primary types, bail if none
+        final SparseIntArray typeCount = getTypeFrequencies(state, kind);
+        final ArrayList<EditType> validTypes = getValidTypes(state, kind, null, includeSecondary,
+                typeCount, /*checkOverall=*/ true);
+        if (validTypes.size() == 0) return null;
+
+        // Keep track of the last valid type
+        final EditType lastType = validTypes.get(validTypes.size() - 1);
+
+        // Remove any types that already exist
+        Iterator<EditType> iterator = validTypes.iterator();
+        while (iterator.hasNext()) {
+            final EditType type = iterator.next();
+            final int count = typeCount.get(type.rawValue);
+
+            if (exactValue == type.rawValue) {
+                // Found exact value match
+                return type;
+            }
+
+            if (count > 0) {
+                // Type already appears, so don't consider
+                iterator.remove();
+            }
+        }
+
+        // Use the best remaining, otherwise the last valid
+        if (validTypes.size() > 0) {
+            return validTypes.get(0);
+        } else {
+            return lastType;
+        }
+    }
+
+    /**
+     * Insert a new child of kind {@link DataKind} into the given
+     * {@link RawContactDelta}. Tries using the best {@link EditType} found using
+     * {@link #getBestValidType(RawContactDelta, DataKind, boolean, int)}.
+     */
+    public static ValuesDelta insertChild(RawContactDelta state, DataKind kind) {
+        // Bail early if invalid kind
+        if (kind == null) return null;
+        // First try finding a valid primary
+        EditType bestType = getBestValidType(state, kind, false, Integer.MIN_VALUE);
+        if (bestType == null) {
+            // No valid primary found, so expand search to secondary
+            bestType = getBestValidType(state, kind, true, Integer.MIN_VALUE);
+        }
+        return insertChild(state, kind, bestType);
+    }
+
+    /**
+     * Insert a new child of kind {@link DataKind} into the given
+     * {@link RawContactDelta}, marked with the given {@link EditType}.
+     */
+    public static ValuesDelta insertChild(RawContactDelta state, DataKind kind, EditType type) {
+        // Bail early if invalid kind
+        if (kind == null) return null;
+        final ContentValues after = new ContentValues();
+
+        // Our parent CONTACT_ID is provided later
+        after.put(Data.MIMETYPE, kind.mimeType);
+
+        // Fill-in with any requested default values
+        if (kind.defaultValues != null) {
+            after.putAll(kind.defaultValues);
+        }
+
+        if (kind.typeColumn != null && type != null) {
+            // Set type, if provided
+            after.put(kind.typeColumn, type.rawValue);
+        }
+
+        final ValuesDelta child = ValuesDelta.fromAfter(after);
+        state.addEntry(child);
+        return child;
+    }
+
+    /**
+     * Processing to trim any empty {@link ValuesDelta} and {@link RawContactDelta}
+     * from the given {@link RawContactDeltaList}, assuming the given {@link AccountTypeManager}
+     * dictates the structure for various fields. This method ignores rows not
+     * described by the {@link AccountType}.
+     */
+    public static void trimEmpty(RawContactDeltaList set, AccountTypeManager accountTypes) {
+        for (RawContactDelta state : set) {
+            ValuesDelta values = state.getValues();
+            final String accountType = values.getAsString(RawContacts.ACCOUNT_TYPE);
+            final String dataSet = values.getAsString(RawContacts.DATA_SET);
+            final AccountType type = accountTypes.getAccountType(accountType, dataSet);
+            trimEmpty(state, type);
+        }
+    }
+
+    public static boolean hasChanges(RawContactDeltaList set, AccountTypeManager accountTypes) {
+        return hasChanges(set, accountTypes, /* excludedMimeTypes =*/ null);
+    }
+
+    public static boolean hasChanges(RawContactDeltaList set, AccountTypeManager accountTypes,
+            Set<String> excludedMimeTypes) {
+        if (set.isMarkedForSplitting() || set.isMarkedForJoining()) {
+            return true;
+        }
+
+        for (RawContactDelta state : set) {
+            ValuesDelta values = state.getValues();
+            final String accountType = values.getAsString(RawContacts.ACCOUNT_TYPE);
+            final String dataSet = values.getAsString(RawContacts.DATA_SET);
+            final AccountType type = accountTypes.getAccountType(accountType, dataSet);
+            if (hasChanges(state, type, excludedMimeTypes)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Processing to trim any empty {@link ValuesDelta} rows from the given
+     * {@link RawContactDelta}, assuming the given {@link AccountType} dictates
+     * the structure for various fields. This method ignores rows not described
+     * by the {@link AccountType}.
+     */
+    public static void trimEmpty(RawContactDelta state, AccountType accountType) {
+        boolean hasValues = false;
+
+        // Walk through entries for each well-known kind
+        for (DataKind kind : accountType.getSortedDataKinds()) {
+            final String mimeType = kind.mimeType;
+            final ArrayList<ValuesDelta> entries = state.getMimeEntries(mimeType);
+            if (entries == null) continue;
+
+            for (ValuesDelta entry : entries) {
+                // Skip any values that haven't been touched
+                final boolean touched = entry.isInsert() || entry.isUpdate();
+                if (!touched) {
+                    hasValues = true;
+                    continue;
+                }
+
+                // Test and remove this row if empty and it isn't a photo from google
+                final boolean isGoogleAccount = TextUtils.equals(GoogleAccountType.ACCOUNT_TYPE,
+                        state.getValues().getAsString(RawContacts.ACCOUNT_TYPE));
+                final boolean isPhoto = TextUtils.equals(Photo.CONTENT_ITEM_TYPE, kind.mimeType);
+                final boolean isGooglePhoto = isPhoto && isGoogleAccount;
+
+                if (RawContactModifier.isEmpty(entry, kind) && !isGooglePhoto) {
+                    if (DEBUG) {
+                        Log.v(TAG, "Trimming: " + entry.toString());
+                    }
+                    entry.markDeleted();
+                } else if (!entry.isFromTemplate()) {
+                    hasValues = true;
+                }
+            }
+        }
+        if (!hasValues) {
+            // Trim overall entity if no children exist
+            state.markDeleted();
+        }
+    }
+
+    private static boolean hasChanges(RawContactDelta state, AccountType accountType,
+            Set<String> excludedMimeTypes) {
+        for (DataKind kind : accountType.getSortedDataKinds()) {
+            final String mimeType = kind.mimeType;
+            if (excludedMimeTypes != null && excludedMimeTypes.contains(mimeType)) continue;
+            final ArrayList<ValuesDelta> entries = state.getMimeEntries(mimeType);
+            if (entries == null) continue;
+
+            for (ValuesDelta entry : entries) {
+                // An empty Insert must be ignored, because it won't save anything (an example
+                // is an empty name that stays empty)
+                final boolean isRealInsert = entry.isInsert() && !isEmpty(entry, kind);
+                if (isRealInsert || entry.isUpdate() || entry.isDelete()) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Test if the given {@link ValuesDelta} would be considered "empty" in
+     * terms of {@link DataKind#fieldList}.
+     */
+    public static boolean isEmpty(ValuesDelta values, DataKind kind) {
+        if (Photo.CONTENT_ITEM_TYPE.equals(kind.mimeType)) {
+            return values.isInsert() && values.getAsByteArray(Photo.PHOTO) == null;
+        }
+
+        // No defined fields mean this row is always empty
+        if (kind.fieldList == null) return true;
+
+        for (EditField field : kind.fieldList) {
+            // If any field has values, we're not empty
+            final String value = values.getAsString(field.column);
+            if (ContactsUtils.isGraphic(value)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Compares corresponding fields in values1 and values2. Only the fields
+     * declared by the DataKind are taken into consideration.
+     */
+    protected static boolean areEqual(ValuesDelta values1, ContentValues values2, DataKind kind) {
+        if (kind.fieldList == null) return false;
+
+        for (EditField field : kind.fieldList) {
+            final String value1 = values1.getAsString(field.column);
+            final String value2 = values2.getAsString(field.column);
+            if (!TextUtils.equals(value1, value2)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Parse the given {@link Bundle} into the given {@link RawContactDelta} state,
+     * assuming the extras defined through {@link Intents}.
+     */
+    public static void parseExtras(Context context, AccountType accountType, RawContactDelta state,
+            Bundle extras) {
+        if (extras == null || extras.size() == 0) {
+            // Bail early if no useful data
+            return;
+        }
+
+        parseStructuredNameExtra(context, accountType, state, extras);
+        parseStructuredPostalExtra(accountType, state, extras);
+
+        {
+            // Phone
+            final DataKind kind = accountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+            parseExtras(state, kind, extras, Insert.PHONE_TYPE, Insert.PHONE, Phone.NUMBER);
+            parseExtras(state, kind, extras, Insert.SECONDARY_PHONE_TYPE, Insert.SECONDARY_PHONE,
+                    Phone.NUMBER);
+            parseExtras(state, kind, extras, Insert.TERTIARY_PHONE_TYPE, Insert.TERTIARY_PHONE,
+                    Phone.NUMBER);
+        }
+
+        {
+            // Email
+            final DataKind kind = accountType.getKindForMimetype(Email.CONTENT_ITEM_TYPE);
+            parseExtras(state, kind, extras, Insert.EMAIL_TYPE, Insert.EMAIL, Email.DATA);
+            parseExtras(state, kind, extras, Insert.SECONDARY_EMAIL_TYPE, Insert.SECONDARY_EMAIL,
+                    Email.DATA);
+            parseExtras(state, kind, extras, Insert.TERTIARY_EMAIL_TYPE, Insert.TERTIARY_EMAIL,
+                    Email.DATA);
+        }
+
+        {
+            // Im
+            final DataKind kind = accountType.getKindForMimetype(Im.CONTENT_ITEM_TYPE);
+            fixupLegacyImType(extras);
+            parseExtras(state, kind, extras, Insert.IM_PROTOCOL, Insert.IM_HANDLE, Im.DATA);
+        }
+
+        // Organization
+        final boolean hasOrg = extras.containsKey(Insert.COMPANY)
+                || extras.containsKey(Insert.JOB_TITLE);
+        final DataKind kindOrg = accountType.getKindForMimetype(Organization.CONTENT_ITEM_TYPE);
+        if (hasOrg && RawContactModifier.canInsert(state, kindOrg)) {
+            final ValuesDelta child = RawContactModifier.insertChild(state, kindOrg);
+
+            final String company = extras.getString(Insert.COMPANY);
+            if (ContactsUtils.isGraphic(company)) {
+                child.put(Organization.COMPANY, company);
+            }
+
+            final String title = extras.getString(Insert.JOB_TITLE);
+            if (ContactsUtils.isGraphic(title)) {
+                child.put(Organization.TITLE, title);
+            }
+        }
+
+        // Notes
+        final boolean hasNotes = extras.containsKey(Insert.NOTES);
+        final DataKind kindNotes = accountType.getKindForMimetype(Note.CONTENT_ITEM_TYPE);
+        if (hasNotes && RawContactModifier.canInsert(state, kindNotes)) {
+            final ValuesDelta child = RawContactModifier.insertChild(state, kindNotes);
+
+            final String notes = extras.getString(Insert.NOTES);
+            if (ContactsUtils.isGraphic(notes)) {
+                child.put(Note.NOTE, notes);
+            }
+        }
+
+        // Arbitrary additional data
+        ArrayList<ContentValues> values = extras.getParcelableArrayList(Insert.DATA);
+        if (values != null) {
+            parseValues(state, accountType, values);
+        }
+    }
+
+    private static void parseStructuredNameExtra(
+            Context context, AccountType accountType, RawContactDelta state, Bundle extras) {
+        // StructuredName
+        RawContactModifier.ensureKindExists(state, accountType, StructuredName.CONTENT_ITEM_TYPE);
+        final ValuesDelta child = state.getPrimaryEntry(StructuredName.CONTENT_ITEM_TYPE);
+
+        final String name = extras.getString(Insert.NAME);
+        if (ContactsUtils.isGraphic(name)) {
+            final DataKind kind = accountType.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE);
+            boolean supportsDisplayName = false;
+            if (kind.fieldList != null) {
+                for (EditField field : kind.fieldList) {
+                    if (StructuredName.DISPLAY_NAME.equals(field.column)) {
+                        supportsDisplayName = true;
+                        break;
+                    }
+                }
+            }
+
+            if (supportsDisplayName) {
+                child.put(StructuredName.DISPLAY_NAME, name);
+            } else {
+                Uri uri = ContactsContract.AUTHORITY_URI.buildUpon()
+                        .appendPath("complete_name")
+                        .appendQueryParameter(StructuredName.DISPLAY_NAME, name)
+                        .build();
+                Cursor cursor = context.getContentResolver().query(uri,
+                        new String[]{
+                                StructuredName.PREFIX,
+                                StructuredName.GIVEN_NAME,
+                                StructuredName.MIDDLE_NAME,
+                                StructuredName.FAMILY_NAME,
+                                StructuredName.SUFFIX,
+                        }, null, null, null);
+
+                if (cursor != null) {
+                    try {
+                        if (cursor.moveToFirst()) {
+                            child.put(StructuredName.PREFIX, cursor.getString(0));
+                            child.put(StructuredName.GIVEN_NAME, cursor.getString(1));
+                            child.put(StructuredName.MIDDLE_NAME, cursor.getString(2));
+                            child.put(StructuredName.FAMILY_NAME, cursor.getString(3));
+                            child.put(StructuredName.SUFFIX, cursor.getString(4));
+                        }
+                    } finally {
+                        cursor.close();
+                    }
+                }
+            }
+        }
+
+        final String phoneticName = extras.getString(Insert.PHONETIC_NAME);
+        if (ContactsUtils.isGraphic(phoneticName)) {
+            StructuredNameDataItem dataItem = NameConverter.parsePhoneticName(phoneticName, null);
+            child.put(StructuredName.PHONETIC_FAMILY_NAME, dataItem.getPhoneticFamilyName());
+            child.put(StructuredName.PHONETIC_MIDDLE_NAME, dataItem.getPhoneticMiddleName());
+            child.put(StructuredName.PHONETIC_GIVEN_NAME, dataItem.getPhoneticGivenName());
+        }
+    }
+
+    private static void parseStructuredPostalExtra(
+            AccountType accountType, RawContactDelta state, Bundle extras) {
+        // StructuredPostal
+        final DataKind kind = accountType.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE);
+        final ValuesDelta child = parseExtras(state, kind, extras, Insert.POSTAL_TYPE,
+                Insert.POSTAL, StructuredPostal.FORMATTED_ADDRESS);
+        String address = child == null ? null
+                : child.getAsString(StructuredPostal.FORMATTED_ADDRESS);
+        if (!TextUtils.isEmpty(address)) {
+            boolean supportsFormatted = false;
+            if (kind.fieldList != null) {
+                for (EditField field : kind.fieldList) {
+                    if (StructuredPostal.FORMATTED_ADDRESS.equals(field.column)) {
+                        supportsFormatted = true;
+                        break;
+                    }
+                }
+            }
+
+            if (!supportsFormatted) {
+                child.put(StructuredPostal.STREET, address);
+                child.putNull(StructuredPostal.FORMATTED_ADDRESS);
+            }
+        }
+    }
+
+    private static void parseValues(
+            RawContactDelta state, AccountType accountType,
+            ArrayList<ContentValues> dataValueList) {
+        for (ContentValues values : dataValueList) {
+            String mimeType = values.getAsString(Data.MIMETYPE);
+            if (TextUtils.isEmpty(mimeType)) {
+                Log.e(TAG, "Mimetype is required. Ignoring: " + values);
+                continue;
+            }
+
+            // Won't override the contact name
+            if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                continue;
+            } else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                values.remove(PhoneDataItem.KEY_FORMATTED_PHONE_NUMBER);
+                final Integer type = values.getAsInteger(Phone.TYPE);
+                // If the provided phone number provides a custom phone type but not a label,
+                // replace it with mobile (by default) to avoid the "Enter custom label" from
+                // popping up immediately upon entering the ContactEditorFragment
+                if (type != null && type == Phone.TYPE_CUSTOM &&
+                        TextUtils.isEmpty(values.getAsString(Phone.LABEL))) {
+                    values.put(Phone.TYPE, Phone.TYPE_MOBILE);
+                }
+            }
+
+            DataKind kind = accountType.getKindForMimetype(mimeType);
+            if (kind == null) {
+                Log.e(TAG, "Mimetype not supported for account type "
+                        + accountType.getAccountTypeAndDataSet() + ". Ignoring: " + values);
+                continue;
+            }
+
+            ValuesDelta entry = ValuesDelta.fromAfter(values);
+            if (isEmpty(entry, kind)) {
+                continue;
+            }
+
+            ArrayList<ValuesDelta> entries = state.getMimeEntries(mimeType);
+
+            if ((kind.typeOverallMax != 1) || GroupMembership.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                // Check for duplicates
+                boolean addEntry = true;
+                int count = 0;
+                if (entries != null && entries.size() > 0) {
+                    for (ValuesDelta delta : entries) {
+                        if (!delta.isDelete()) {
+                            if (areEqual(delta, values, kind)) {
+                                addEntry = false;
+                                break;
+                            }
+                            count++;
+                        }
+                    }
+                }
+
+                if (kind.typeOverallMax != -1 && count >= kind.typeOverallMax) {
+                    Log.e(TAG, "Mimetype allows at most " + kind.typeOverallMax
+                            + " entries. Ignoring: " + values);
+                    addEntry = false;
+                }
+
+                if (addEntry) {
+                    addEntry = adjustType(entry, entries, kind);
+                }
+
+                if (addEntry) {
+                    state.addEntry(entry);
+                }
+            } else {
+                // Non-list entries should not be overridden
+                boolean addEntry = true;
+                if (entries != null && entries.size() > 0) {
+                    for (ValuesDelta delta : entries) {
+                        if (!delta.isDelete() && !isEmpty(delta, kind)) {
+                            addEntry = false;
+                            break;
+                        }
+                    }
+                    if (addEntry) {
+                        for (ValuesDelta delta : entries) {
+                            delta.markDeleted();
+                        }
+                    }
+                }
+
+                if (addEntry) {
+                    addEntry = adjustType(entry, entries, kind);
+                }
+
+                if (addEntry) {
+                    state.addEntry(entry);
+                } else if (Note.CONTENT_ITEM_TYPE.equals(mimeType)){
+                    // Note is most likely to contain large amounts of text
+                    // that we don't want to drop on the ground.
+                    for (ValuesDelta delta : entries) {
+                        if (!isEmpty(delta, kind)) {
+                            delta.put(Note.NOTE, delta.getAsString(Note.NOTE) + "\n"
+                                    + values.getAsString(Note.NOTE));
+                            break;
+                        }
+                    }
+                } else {
+                    Log.e(TAG, "Will not override mimetype " + mimeType + ". Ignoring: "
+                            + values);
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks if the data kind allows addition of another entry (e.g. Exchange only
+     * supports two "work" phone numbers).  If not, tries to switch to one of the
+     * unused types.  If successful, returns true.
+     */
+    private static boolean adjustType(
+            ValuesDelta entry, ArrayList<ValuesDelta> entries, DataKind kind) {
+        if (kind.typeColumn == null || kind.typeList == null || kind.typeList.size() == 0) {
+            return true;
+        }
+
+        Integer typeInteger = entry.getAsInteger(kind.typeColumn);
+        int type = typeInteger != null ? typeInteger : kind.typeList.get(0).rawValue;
+
+        if (isTypeAllowed(type, entries, kind)) {
+            entry.put(kind.typeColumn, type);
+            return true;
+        }
+
+        // Specified type is not allowed - choose the first available type that is allowed
+        int size = kind.typeList.size();
+        for (int i = 0; i < size; i++) {
+            EditType editType = kind.typeList.get(i);
+            if (isTypeAllowed(editType.rawValue, entries, kind)) {
+                entry.put(kind.typeColumn, editType.rawValue);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Checks if a new entry of the specified type can be added to the raw
+     * contact. For example, Exchange only supports two "work" phone numbers, so
+     * addition of a third would not be allowed.
+     */
+    private static boolean isTypeAllowed(int type, ArrayList<ValuesDelta> entries, DataKind kind) {
+        int max = 0;
+        int size = kind.typeList.size();
+        for (int i = 0; i < size; i++) {
+            EditType editType = kind.typeList.get(i);
+            if (editType.rawValue == type) {
+                max = editType.specificMax;
+                break;
+            }
+        }
+
+        if (max == 0) {
+            // This type is not allowed at all
+            return false;
+        }
+
+        if (max == -1) {
+            // Unlimited instances of this type are allowed
+            return true;
+        }
+
+        return getEntryCountByType(entries, kind.typeColumn, type) < max;
+    }
+
+    /**
+     * Counts occurrences of the specified type in the supplied entry list.
+     *
+     * @return The count of occurrences of the type in the entry list. 0 if entries is
+     * {@literal null}
+     */
+    private static int getEntryCountByType(ArrayList<ValuesDelta> entries, String typeColumn,
+            int type) {
+        int count = 0;
+        if (entries != null) {
+            for (ValuesDelta entry : entries) {
+                Integer typeInteger = entry.getAsInteger(typeColumn);
+                if (typeInteger != null && typeInteger == type) {
+                    count++;
+                }
+            }
+        }
+        return count;
+    }
+
+    /**
+     * Attempt to parse legacy {@link Insert#IM_PROTOCOL} values, replacing them
+     * with updated values.
+     */
+    @SuppressWarnings("deprecation")
+    private static void fixupLegacyImType(Bundle bundle) {
+        final String encodedString = bundle.getString(Insert.IM_PROTOCOL);
+        if (encodedString == null) return;
+
+        try {
+            final Object protocol = android.provider.Contacts.ContactMethods
+                    .decodeImProtocol(encodedString);
+            if (protocol instanceof Integer) {
+                bundle.putInt(Insert.IM_PROTOCOL, (Integer)protocol);
+            } else {
+                bundle.putString(Insert.IM_PROTOCOL, (String)protocol);
+            }
+        } catch (IllegalArgumentException e) {
+            // Ignore exception when legacy parser fails
+        }
+    }
+
+    /**
+     * Parse a specific entry from the given {@link Bundle} and insert into the
+     * given {@link RawContactDelta}. Silently skips the insert when missing value
+     * or no valid {@link EditType} found.
+     *
+     * @param typeExtra {@link Bundle} key that holds the incoming
+     *            {@link EditType#rawValue} value.
+     * @param valueExtra {@link Bundle} key that holds the incoming value.
+     * @param valueColumn Column to write value into {@link ValuesDelta}.
+     */
+    public static ValuesDelta parseExtras(RawContactDelta state, DataKind kind, Bundle extras,
+            String typeExtra, String valueExtra, String valueColumn) {
+        final CharSequence value = extras.getCharSequence(valueExtra);
+
+        // Bail early if account type doesn't handle this MIME type
+        if (kind == null) return null;
+
+        // Bail when can't insert type, or value missing
+        final boolean canInsert = RawContactModifier.canInsert(state, kind);
+        final boolean validValue = (value != null && TextUtils.isGraphic(value));
+        if (!validValue || !canInsert) return null;
+
+        // Find exact type when requested, otherwise best available type
+        final boolean hasType = extras.containsKey(typeExtra);
+        final int typeValue = extras.getInt(typeExtra, hasType ? BaseTypes.TYPE_CUSTOM
+                : Integer.MIN_VALUE);
+        final EditType editType = RawContactModifier.getBestValidType(state, kind, true, typeValue);
+
+        // Create data row and fill with value
+        final ValuesDelta child = RawContactModifier.insertChild(state, kind, editType);
+        child.put(valueColumn, value.toString());
+
+        if (editType != null && editType.customColumn != null) {
+            // Write down label when custom type picked
+            final String customType = extras.getString(typeExtra);
+            child.put(editType.customColumn, customType);
+        }
+
+        return child;
+    }
+
+    /**
+     * Generic mime types with type support (e.g. TYPE_HOME).
+     * Here, "type support" means if the data kind has CommonColumns#TYPE or not. Data kinds which
+     * have their own migrate methods aren't listed here.
+     */
+    private static final Set<String> sGenericMimeTypesWithTypeSupport = new HashSet<String>(
+            Arrays.asList(Phone.CONTENT_ITEM_TYPE,
+                    Email.CONTENT_ITEM_TYPE,
+                    Im.CONTENT_ITEM_TYPE,
+                    Nickname.CONTENT_ITEM_TYPE,
+                    Website.CONTENT_ITEM_TYPE,
+                    Relation.CONTENT_ITEM_TYPE,
+                    SipAddress.CONTENT_ITEM_TYPE));
+    private static final Set<String> sGenericMimeTypesWithoutTypeSupport = new HashSet<String>(
+            Arrays.asList(Organization.CONTENT_ITEM_TYPE,
+                    Note.CONTENT_ITEM_TYPE,
+                    Photo.CONTENT_ITEM_TYPE,
+                    GroupMembership.CONTENT_ITEM_TYPE));
+    // CommonColumns.TYPE cannot be accessed as it is protected interface, so use
+    // Phone.TYPE instead.
+    private static final String COLUMN_FOR_TYPE  = Phone.TYPE;
+    private static final String COLUMN_FOR_LABEL  = Phone.LABEL;
+    private static final int TYPE_CUSTOM = Phone.TYPE_CUSTOM;
+
+    /**
+     * Migrates old RawContactDelta to newly created one with a new restriction supplied from
+     * newAccountType.
+     *
+     * This is only for account switch during account creation (which must be insert operation).
+     */
+    public static void migrateStateForNewContact(Context context,
+            RawContactDelta oldState, RawContactDelta newState,
+            AccountType oldAccountType, AccountType newAccountType) {
+        if (newAccountType == oldAccountType) {
+            // Just copying all data in oldState isn't enough, but we can still rely on a lot of
+            // shortcuts.
+            for (DataKind kind : newAccountType.getSortedDataKinds()) {
+                final String mimeType = kind.mimeType;
+                // The fields with short/long form capability must be treated properly.
+                if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                    migrateStructuredName(context, oldState, newState, kind);
+                } else {
+                    List<ValuesDelta> entryList = oldState.getMimeEntries(mimeType);
+                    if (entryList != null && !entryList.isEmpty()) {
+                        for (ValuesDelta entry : entryList) {
+                            ContentValues values = entry.getAfter();
+                            if (values != null) {
+                                newState.addEntry(ValuesDelta.fromAfter(values));
+                            }
+                        }
+                    }
+                }
+            }
+        } else {
+            // Migrate data supported by the new account type.
+            // All the other data inside oldState are silently dropped.
+            for (DataKind kind : newAccountType.getSortedDataKinds()) {
+                if (!kind.editable) continue;
+                final String mimeType = kind.mimeType;
+                if (DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME.equals(mimeType)
+                        || DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME.equals(mimeType)) {
+                    // Ignore pseudo data.
+                    continue;
+                } else if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                    migrateStructuredName(context, oldState, newState, kind);
+                } else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                    migratePostal(oldState, newState, kind);
+                } else if (Event.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                    migrateEvent(oldState, newState, kind, null /* default Year */);
+                } else if (sGenericMimeTypesWithoutTypeSupport.contains(mimeType)) {
+                    migrateGenericWithoutTypeColumn(oldState, newState, kind);
+                } else if (sGenericMimeTypesWithTypeSupport.contains(mimeType)) {
+                    migrateGenericWithTypeColumn(oldState, newState, kind);
+                } else {
+                    throw new IllegalStateException("Unexpected editable mime-type: " + mimeType);
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks {@link DataKind#isList} and {@link DataKind#typeOverallMax}, and restricts
+     * the number of entries (ValuesDelta) inside newState.
+     */
+    private static ArrayList<ValuesDelta> ensureEntryMaxSize(RawContactDelta newState,
+            DataKind kind, ArrayList<ValuesDelta> mimeEntries) {
+        if (mimeEntries == null) {
+            return null;
+        }
+
+        final int typeOverallMax = kind.typeOverallMax;
+        if (typeOverallMax >= 0 && (mimeEntries.size() > typeOverallMax)) {
+            ArrayList<ValuesDelta> newMimeEntries = new ArrayList<ValuesDelta>(typeOverallMax);
+            for (int i = 0; i < typeOverallMax; i++) {
+                newMimeEntries.add(mimeEntries.get(i));
+            }
+            mimeEntries = newMimeEntries;
+        }
+        return mimeEntries;
+    }
+
+    /** @hide Public only for testing. */
+    public static void migrateStructuredName(
+            Context context, RawContactDelta oldState, RawContactDelta newState,
+            DataKind newDataKind) {
+        final ContentValues values =
+                oldState.getPrimaryEntry(StructuredName.CONTENT_ITEM_TYPE).getAfter();
+        if (values == null) {
+            return;
+        }
+
+        boolean supportDisplayName = false;
+        boolean supportPhoneticFullName = false;
+        boolean supportPhoneticFamilyName = false;
+        boolean supportPhoneticMiddleName = false;
+        boolean supportPhoneticGivenName = false;
+        for (EditField editField : newDataKind.fieldList) {
+            if (StructuredName.DISPLAY_NAME.equals(editField.column)) {
+                supportDisplayName = true;
+            }
+            if (DataKind.PSEUDO_COLUMN_PHONETIC_NAME.equals(editField.column)) {
+                supportPhoneticFullName = true;
+            }
+            if (StructuredName.PHONETIC_FAMILY_NAME.equals(editField.column)) {
+                supportPhoneticFamilyName = true;
+            }
+            if (StructuredName.PHONETIC_MIDDLE_NAME.equals(editField.column)) {
+                supportPhoneticMiddleName = true;
+            }
+            if (StructuredName.PHONETIC_GIVEN_NAME.equals(editField.column)) {
+                supportPhoneticGivenName = true;
+            }
+        }
+
+        // DISPLAY_NAME <-> PREFIX, GIVEN_NAME, MIDDLE_NAME, FAMILY_NAME, SUFFIX
+        final String displayName = values.getAsString(StructuredName.DISPLAY_NAME);
+        if (!TextUtils.isEmpty(displayName)) {
+            if (!supportDisplayName) {
+                // Old data has a display name, while the new account doesn't allow it.
+                NameConverter.displayNameToStructuredName(context, displayName, values);
+
+                // We don't want to migrate unseen data which may confuse users after the creation.
+                values.remove(StructuredName.DISPLAY_NAME);
+            }
+        } else {
+            if (supportDisplayName) {
+                // Old data does not have display name, while the new account requires it.
+                values.put(StructuredName.DISPLAY_NAME,
+                        NameConverter.structuredNameToDisplayName(context, values));
+                for (String field : NameConverter.STRUCTURED_NAME_FIELDS) {
+                    values.remove(field);
+                }
+            }
+        }
+
+        // Phonetic (full) name <-> PHONETIC_FAMILY_NAME, PHONETIC_MIDDLE_NAME, PHONETIC_GIVEN_NAME
+        final String phoneticFullName = values.getAsString(DataKind.PSEUDO_COLUMN_PHONETIC_NAME);
+        if (!TextUtils.isEmpty(phoneticFullName)) {
+            if (!supportPhoneticFullName) {
+                // Old data has a phonetic (full) name, while the new account doesn't allow it.
+                final StructuredNameDataItem tmpItem =
+                        NameConverter.parsePhoneticName(phoneticFullName, null);
+                values.remove(DataKind.PSEUDO_COLUMN_PHONETIC_NAME);
+                if (supportPhoneticFamilyName) {
+                    values.put(StructuredName.PHONETIC_FAMILY_NAME,
+                            tmpItem.getPhoneticFamilyName());
+                } else {
+                    values.remove(StructuredName.PHONETIC_FAMILY_NAME);
+                }
+                if (supportPhoneticMiddleName) {
+                    values.put(StructuredName.PHONETIC_MIDDLE_NAME,
+                            tmpItem.getPhoneticMiddleName());
+                } else {
+                    values.remove(StructuredName.PHONETIC_MIDDLE_NAME);
+                }
+                if (supportPhoneticGivenName) {
+                    values.put(StructuredName.PHONETIC_GIVEN_NAME,
+                            tmpItem.getPhoneticGivenName());
+                } else {
+                    values.remove(StructuredName.PHONETIC_GIVEN_NAME);
+                }
+            }
+        } else {
+            if (supportPhoneticFullName) {
+                // Old data does not have a phonetic (full) name, while the new account requires it.
+                values.put(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
+                        NameConverter.buildPhoneticName(
+                                values.getAsString(StructuredName.PHONETIC_FAMILY_NAME),
+                                values.getAsString(StructuredName.PHONETIC_MIDDLE_NAME),
+                                values.getAsString(StructuredName.PHONETIC_GIVEN_NAME)));
+            }
+            if (!supportPhoneticFamilyName) {
+                values.remove(StructuredName.PHONETIC_FAMILY_NAME);
+            }
+            if (!supportPhoneticMiddleName) {
+                values.remove(StructuredName.PHONETIC_MIDDLE_NAME);
+            }
+            if (!supportPhoneticGivenName) {
+                values.remove(StructuredName.PHONETIC_GIVEN_NAME);
+            }
+        }
+
+        newState.addEntry(ValuesDelta.fromAfter(values));
+    }
+
+    /** @hide Public only for testing. */
+    public static void migratePostal(RawContactDelta oldState, RawContactDelta newState,
+            DataKind newDataKind) {
+        final ArrayList<ValuesDelta> mimeEntries = ensureEntryMaxSize(newState, newDataKind,
+                oldState.getMimeEntries(StructuredPostal.CONTENT_ITEM_TYPE));
+        if (mimeEntries == null || mimeEntries.isEmpty()) {
+            return;
+        }
+
+        boolean supportFormattedAddress = false;
+        boolean supportStreet = false;
+        final String firstColumn = newDataKind.fieldList.get(0).column;
+        for (EditField editField : newDataKind.fieldList) {
+            if (StructuredPostal.FORMATTED_ADDRESS.equals(editField.column)) {
+                supportFormattedAddress = true;
+            }
+            if (StructuredPostal.STREET.equals(editField.column)) {
+                supportStreet = true;
+            }
+        }
+
+        final Set<Integer> supportedTypes = new HashSet<Integer>();
+        if (newDataKind.typeList != null && !newDataKind.typeList.isEmpty()) {
+            for (EditType editType : newDataKind.typeList) {
+                supportedTypes.add(editType.rawValue);
+            }
+        }
+
+        for (ValuesDelta entry : mimeEntries) {
+            final ContentValues values = entry.getAfter();
+            if (values == null) {
+                continue;
+            }
+            final Integer oldType = values.getAsInteger(StructuredPostal.TYPE);
+            if (!supportedTypes.contains(oldType)) {
+                int defaultType;
+                if (newDataKind.defaultValues != null) {
+                    defaultType = newDataKind.defaultValues.getAsInteger(StructuredPostal.TYPE);
+                } else {
+                    defaultType = newDataKind.typeList.get(0).rawValue;
+                }
+                values.put(StructuredPostal.TYPE, defaultType);
+                if (oldType != null && oldType == StructuredPostal.TYPE_CUSTOM) {
+                    values.remove(StructuredPostal.LABEL);
+                }
+            }
+
+            final String formattedAddress = values.getAsString(StructuredPostal.FORMATTED_ADDRESS);
+            if (!TextUtils.isEmpty(formattedAddress)) {
+                if (!supportFormattedAddress) {
+                    // Old data has a formatted address, while the new account doesn't allow it.
+                    values.remove(StructuredPostal.FORMATTED_ADDRESS);
+
+                    // Unlike StructuredName we don't have logic to split it, so first
+                    // try to use street field and. If the new account doesn't have one,
+                    // then select first one anyway.
+                    if (supportStreet) {
+                        values.put(StructuredPostal.STREET, formattedAddress);
+                    } else {
+                        values.put(firstColumn, formattedAddress);
+                    }
+                }
+            } else {
+                if (supportFormattedAddress) {
+                    // Old data does not have formatted address, while the new account requires it.
+                    // Unlike StructuredName we don't have logic to join multiple address values.
+                    // Use poor join heuristics for now.
+                    String[] structuredData;
+                    final boolean useJapaneseOrder =
+                            Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
+                    if (useJapaneseOrder) {
+                        structuredData = new String[] {
+                                values.getAsString(StructuredPostal.COUNTRY),
+                                values.getAsString(StructuredPostal.POSTCODE),
+                                values.getAsString(StructuredPostal.REGION),
+                                values.getAsString(StructuredPostal.CITY),
+                                values.getAsString(StructuredPostal.NEIGHBORHOOD),
+                                values.getAsString(StructuredPostal.STREET),
+                                values.getAsString(StructuredPostal.POBOX) };
+                    } else {
+                        structuredData = new String[] {
+                                values.getAsString(StructuredPostal.POBOX),
+                                values.getAsString(StructuredPostal.STREET),
+                                values.getAsString(StructuredPostal.NEIGHBORHOOD),
+                                values.getAsString(StructuredPostal.CITY),
+                                values.getAsString(StructuredPostal.REGION),
+                                values.getAsString(StructuredPostal.POSTCODE),
+                                values.getAsString(StructuredPostal.COUNTRY) };
+                    }
+                    final StringBuilder builder = new StringBuilder();
+                    for (String elem : structuredData) {
+                        if (!TextUtils.isEmpty(elem)) {
+                            builder.append(elem + "\n");
+                        }
+                    }
+                    values.put(StructuredPostal.FORMATTED_ADDRESS, builder.toString());
+
+                    values.remove(StructuredPostal.POBOX);
+                    values.remove(StructuredPostal.STREET);
+                    values.remove(StructuredPostal.NEIGHBORHOOD);
+                    values.remove(StructuredPostal.CITY);
+                    values.remove(StructuredPostal.REGION);
+                    values.remove(StructuredPostal.POSTCODE);
+                    values.remove(StructuredPostal.COUNTRY);
+                }
+            }
+
+            newState.addEntry(ValuesDelta.fromAfter(values));
+        }
+    }
+
+    /** @hide Public only for testing. */
+    public static void migrateEvent(RawContactDelta oldState, RawContactDelta newState,
+            DataKind newDataKind, Integer defaultYear) {
+        final ArrayList<ValuesDelta> mimeEntries = ensureEntryMaxSize(newState, newDataKind,
+                oldState.getMimeEntries(Event.CONTENT_ITEM_TYPE));
+        if (mimeEntries == null || mimeEntries.isEmpty()) {
+            return;
+        }
+
+        final SparseArray<EventEditType> allowedTypes = new SparseArray<EventEditType>();
+        for (EditType editType : newDataKind.typeList) {
+            allowedTypes.put(editType.rawValue, (EventEditType) editType);
+        }
+        for (ValuesDelta entry : mimeEntries) {
+            final ContentValues values = entry.getAfter();
+            if (values == null) {
+                continue;
+            }
+            final String dateString = values.getAsString(Event.START_DATE);
+            final Integer type = values.getAsInteger(Event.TYPE);
+            if (type != null && (allowedTypes.indexOfKey(type) >= 0)
+                    && !TextUtils.isEmpty(dateString)) {
+                EventEditType suitableType = allowedTypes.get(type);
+
+                final ParsePosition position = new ParsePosition(0);
+                boolean yearOptional = false;
+                Date date = CommonDateUtils.DATE_AND_TIME_FORMAT.parse(dateString, position);
+                if (date == null) {
+                    yearOptional = true;
+                    date = CommonDateUtils.NO_YEAR_DATE_FORMAT.parse(dateString, position);
+                }
+                if (date != null) {
+                    if (yearOptional && !suitableType.isYearOptional()) {
+                        // The new EditType doesn't allow optional year. Supply default.
+                        final Calendar calendar = Calendar.getInstance(DateUtils.UTC_TIMEZONE,
+                                Locale.US);
+                        if (defaultYear == null) {
+                            defaultYear = calendar.get(Calendar.YEAR);
+                        }
+                        calendar.setTime(date);
+                        final int month = calendar.get(Calendar.MONTH);
+                        final int day = calendar.get(Calendar.DAY_OF_MONTH);
+                        // Exchange requires 8:00 for birthdays
+                        calendar.set(defaultYear, month, day,
+                                CommonDateUtils.DEFAULT_HOUR, 0, 0);
+                        values.put(Event.START_DATE,
+                                CommonDateUtils.FULL_DATE_FORMAT.format(calendar.getTime()));
+                    }
+                }
+                newState.addEntry(ValuesDelta.fromAfter(values));
+            } else {
+                // Just drop it.
+            }
+        }
+    }
+
+    /** @hide Public only for testing. */
+    public static void migrateGenericWithoutTypeColumn(
+            RawContactDelta oldState, RawContactDelta newState, DataKind newDataKind) {
+        final ArrayList<ValuesDelta> mimeEntries = ensureEntryMaxSize(newState, newDataKind,
+                oldState.getMimeEntries(newDataKind.mimeType));
+        if (mimeEntries == null || mimeEntries.isEmpty()) {
+            return;
+        }
+
+        for (ValuesDelta entry : mimeEntries) {
+            ContentValues values = entry.getAfter();
+            if (values != null) {
+                newState.addEntry(ValuesDelta.fromAfter(values));
+            }
+        }
+    }
+
+    /** @hide Public only for testing. */
+    public static void migrateGenericWithTypeColumn(
+            RawContactDelta oldState, RawContactDelta newState, DataKind newDataKind) {
+        final ArrayList<ValuesDelta> mimeEntries = oldState.getMimeEntries(newDataKind.mimeType);
+        if (mimeEntries == null || mimeEntries.isEmpty()) {
+            return;
+        }
+
+        // Note that type specified with the old account may be invalid with the new account, while
+        // we want to preserve its data as much as possible. e.g. if a user typed a phone number
+        // with a type which is valid with an old account but not with a new account, the user
+        // probably wants to have the number with default type, rather than seeing complete data
+        // loss.
+        //
+        // Specifically, this method works as follows:
+        // 1. detect defaultType
+        // 2. prepare constants & variables for iteration
+        // 3. iterate over mimeEntries:
+        // 3.1 stop iteration if total number of mimeEntries reached typeOverallMax specified in
+        //     DataKind
+        // 3.2 replace unallowed types with defaultType
+        // 3.3 check if the number of entries is below specificMax specified in AccountType
+
+        // Here, defaultType can be supplied in two ways
+        // - via kind.defaultValues
+        // - via kind.typeList.get(0).rawValue
+        Integer defaultType = null;
+        if (newDataKind.defaultValues != null) {
+            defaultType = newDataKind.defaultValues.getAsInteger(COLUMN_FOR_TYPE);
+        }
+        final Set<Integer> allowedTypes = new HashSet<Integer>();
+        // key: type, value: the number of entries allowed for the type (specificMax)
+        final SparseIntArray typeSpecificMaxMap = new SparseIntArray();
+        if (defaultType != null) {
+            allowedTypes.add(defaultType);
+            typeSpecificMaxMap.put(defaultType, -1);
+        }
+        // Note: typeList may be used in different purposes when defaultValues are specified.
+        // Especially in IM, typeList contains available protocols (e.g. PROTOCOL_GOOGLE_TALK)
+        // instead of "types" which we want to treate here (e.g. TYPE_HOME). So we don't add
+        // anything other than defaultType into allowedTypes and typeSpecificMapMax.
+        if (!Im.CONTENT_ITEM_TYPE.equals(newDataKind.mimeType) &&
+                newDataKind.typeList != null && !newDataKind.typeList.isEmpty()) {
+            for (EditType editType : newDataKind.typeList) {
+                allowedTypes.add(editType.rawValue);
+                typeSpecificMaxMap.put(editType.rawValue, editType.specificMax);
+            }
+            if (defaultType == null) {
+                defaultType = newDataKind.typeList.get(0).rawValue;
+            }
+        }
+
+        if (defaultType == null) {
+            Log.w(TAG, "Default type isn't available for mimetype " + newDataKind.mimeType);
+        }
+
+        final int typeOverallMax = newDataKind.typeOverallMax;
+
+        // key: type, value: the number of current entries.
+        final SparseIntArray currentEntryCount = new SparseIntArray();
+        int totalCount = 0;
+
+        for (ValuesDelta entry : mimeEntries) {
+            if (typeOverallMax != -1 && totalCount >= typeOverallMax) {
+                break;
+            }
+
+            final ContentValues values = entry.getAfter();
+            if (values == null) {
+                continue;
+            }
+
+            final Integer oldType = entry.getAsInteger(COLUMN_FOR_TYPE);
+            final Integer typeForNewAccount;
+            if (!allowedTypes.contains(oldType)) {
+                // The new account doesn't support the type.
+                if (defaultType != null) {
+                    typeForNewAccount = defaultType.intValue();
+                    values.put(COLUMN_FOR_TYPE, defaultType.intValue());
+                    if (oldType != null && oldType == TYPE_CUSTOM) {
+                        values.remove(COLUMN_FOR_LABEL);
+                    }
+                } else {
+                    typeForNewAccount = null;
+                    values.remove(COLUMN_FOR_TYPE);
+                }
+            } else {
+                typeForNewAccount = oldType;
+            }
+            if (typeForNewAccount != null) {
+                final int specificMax = typeSpecificMaxMap.get(typeForNewAccount, 0);
+                if (specificMax >= 0) {
+                    final int currentCount = currentEntryCount.get(typeForNewAccount, 0);
+                    if (currentCount >= specificMax) {
+                        continue;
+                    }
+                    currentEntryCount.put(typeForNewAccount, currentCount + 1);
+                }
+            }
+            newState.addEntry(ValuesDelta.fromAfter(values));
+            totalCount++;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/ValuesDelta.java b/src/com/android/contacts/common/model/ValuesDelta.java
new file mode 100644
index 0000000..9023709
--- /dev/null
+++ b/src/com/android/contacts/common/model/ValuesDelta.java
@@ -0,0 +1,597 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentValues;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.BaseColumns;
+import android.provider.ContactsContract;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.BuilderWrapper;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.google.common.collect.Sets;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Type of {@link android.content.ContentValues} that maintains both an original state and a
+ * modified version of that state. This allows us to build insert, update,
+ * or delete operations based on a "before" {@link Entity} snapshot.
+ */
+public class ValuesDelta implements Parcelable {
+    protected ContentValues mBefore;
+    protected ContentValues mAfter;
+    protected String mIdColumn = BaseColumns._ID;
+    private boolean mFromTemplate;
+
+    /**
+     * Next value to assign to {@link #mIdColumn} when building an insert
+     * operation through {@link #fromAfter(android.content.ContentValues)}. This is used so
+     * we can concretely reference this {@link ValuesDelta} before it has
+     * been persisted.
+     */
+    protected static int sNextInsertId = -1;
+
+    protected ValuesDelta() {
+    }
+
+    /**
+     * Create {@link ValuesDelta}, using the given object as the
+     * "before" state, usually from an {@link Entity}.
+     */
+    public static ValuesDelta fromBefore(ContentValues before) {
+        final ValuesDelta entry = new ValuesDelta();
+        entry.mBefore = before;
+        entry.mAfter = new ContentValues();
+        return entry;
+    }
+
+    /**
+     * Create {@link ValuesDelta}, using the given object as the "after"
+     * state, usually when we are inserting a row instead of updating.
+     */
+    public static ValuesDelta fromAfter(ContentValues after) {
+        final ValuesDelta entry = new ValuesDelta();
+        entry.mBefore = null;
+        entry.mAfter = after;
+
+        // Assign temporary id which is dropped before insert.
+        entry.mAfter.put(entry.mIdColumn, sNextInsertId--);
+        return entry;
+    }
+
+    @NeededForTesting
+    public ContentValues getAfter() {
+        return mAfter;
+    }
+
+    public boolean containsKey(String key) {
+        return ((mAfter != null && mAfter.containsKey(key)) ||
+                (mBefore != null && mBefore.containsKey(key)));
+    }
+
+    public String getAsString(String key) {
+        if (mAfter != null && mAfter.containsKey(key)) {
+            return mAfter.getAsString(key);
+        } else if (mBefore != null && mBefore.containsKey(key)) {
+            return mBefore.getAsString(key);
+        } else {
+            return null;
+        }
+    }
+
+    public byte[] getAsByteArray(String key) {
+        if (mAfter != null && mAfter.containsKey(key)) {
+            return mAfter.getAsByteArray(key);
+        } else if (mBefore != null && mBefore.containsKey(key)) {
+            return mBefore.getAsByteArray(key);
+        } else {
+            return null;
+        }
+    }
+
+    public Long getAsLong(String key) {
+        if (mAfter != null && mAfter.containsKey(key)) {
+            return mAfter.getAsLong(key);
+        } else if (mBefore != null && mBefore.containsKey(key)) {
+            return mBefore.getAsLong(key);
+        } else {
+            return null;
+        }
+    }
+
+    public Integer getAsInteger(String key) {
+        return getAsInteger(key, null);
+    }
+
+    public Integer getAsInteger(String key, Integer defaultValue) {
+        if (mAfter != null && mAfter.containsKey(key)) {
+            return mAfter.getAsInteger(key);
+        } else if (mBefore != null && mBefore.containsKey(key)) {
+            return mBefore.getAsInteger(key);
+        } else {
+            return defaultValue;
+        }
+    }
+
+    public boolean isChanged(String key) {
+        if (mAfter == null || !mAfter.containsKey(key)) {
+            return false;
+        }
+
+        Object newValue = mAfter.get(key);
+        Object oldValue = mBefore.get(key);
+
+        if (oldValue == null) {
+            return newValue != null;
+        }
+
+        return !oldValue.equals(newValue);
+    }
+
+    public String getMimetype() {
+        return getAsString(ContactsContract.Data.MIMETYPE);
+    }
+
+    public Long getId() {
+        return getAsLong(mIdColumn);
+    }
+
+    public void setIdColumn(String idColumn) {
+        mIdColumn = idColumn;
+    }
+
+    public boolean isPrimary() {
+        final Long isPrimary = getAsLong(ContactsContract.Data.IS_PRIMARY);
+        return isPrimary == null ? false : isPrimary != 0;
+    }
+
+    public void setFromTemplate(boolean isFromTemplate) {
+        mFromTemplate = isFromTemplate;
+    }
+
+    public boolean isFromTemplate() {
+        return mFromTemplate;
+    }
+
+    public boolean isSuperPrimary() {
+        final Long isSuperPrimary = getAsLong(ContactsContract.Data.IS_SUPER_PRIMARY);
+        return isSuperPrimary == null ? false : isSuperPrimary != 0;
+    }
+
+    public boolean beforeExists() {
+        return (mBefore != null && mBefore.containsKey(mIdColumn));
+    }
+
+    /**
+     * When "after" is present, then visible
+     */
+    public boolean isVisible() {
+        return (mAfter != null);
+    }
+
+    /**
+     * When "after" is wiped, action is "delete"
+     */
+    public boolean isDelete() {
+        return beforeExists() && (mAfter == null);
+    }
+
+    /**
+     * When no "before" or "after", is transient
+     */
+    public boolean isTransient() {
+        return (mBefore == null) && (mAfter == null);
+    }
+
+    /**
+     * When "after" has some changes, action is "update"
+     */
+    public boolean isUpdate() {
+        if (!beforeExists() || mAfter == null || mAfter.size() == 0) {
+            return false;
+        }
+        for (String key : mAfter.keySet()) {
+            Object newValue = mAfter.get(key);
+            Object oldValue = mBefore.get(key);
+            if (oldValue == null) {
+                if (newValue != null) {
+                    return true;
+                }
+            } else if (!oldValue.equals(newValue)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * When "after" has no changes, action is no-op
+     */
+    public boolean isNoop() {
+        return beforeExists() && (mAfter != null && mAfter.size() == 0);
+    }
+
+    /**
+     * When no "before" id, and has "after", action is "insert"
+     */
+    public boolean isInsert() {
+        return !beforeExists() && (mAfter != null);
+    }
+
+    public void markDeleted() {
+        mAfter = null;
+    }
+
+    /**
+     * Ensure that our internal structure is ready for storing updates.
+     */
+    private void ensureUpdate() {
+        if (mAfter == null) {
+            mAfter = new ContentValues();
+        }
+    }
+
+    public void put(String key, String value) {
+        ensureUpdate();
+        mAfter.put(key, value);
+    }
+
+    public void put(String key, byte[] value) {
+        ensureUpdate();
+        mAfter.put(key, value);
+    }
+
+    public void put(String key, int value) {
+        ensureUpdate();
+        mAfter.put(key, value);
+    }
+
+    public void put(String key, long value) {
+        ensureUpdate();
+        mAfter.put(key, value);
+    }
+
+    public void putNull(String key) {
+        ensureUpdate();
+        mAfter.putNull(key);
+    }
+
+    public void copyStringFrom(ValuesDelta from, String key) {
+        ensureUpdate();
+        if (containsKey(key) || from.containsKey(key)) {
+            put(key, from.getAsString(key));
+        }
+    }
+
+    /**
+     * Return set of all keys defined through this object.
+     */
+    public Set<String> keySet() {
+        final HashSet<String> keys = Sets.newHashSet();
+
+        if (mBefore != null) {
+            for (Map.Entry<String, Object> entry : mBefore.valueSet()) {
+                keys.add(entry.getKey());
+            }
+        }
+
+        if (mAfter != null) {
+            for (Map.Entry<String, Object> entry : mAfter.valueSet()) {
+                keys.add(entry.getKey());
+            }
+        }
+
+        return keys;
+    }
+
+    /**
+     * Return complete set of "before" and "after" values mixed together,
+     * giving full state regardless of edits.
+     */
+    public ContentValues getCompleteValues() {
+        final ContentValues values = new ContentValues();
+        if (mBefore != null) {
+            values.putAll(mBefore);
+        }
+        if (mAfter != null) {
+            values.putAll(mAfter);
+        }
+        if (values.containsKey(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID)) {
+            // Clear to avoid double-definitions, and prefer rows
+            values.remove(ContactsContract.CommonDataKinds.GroupMembership.GROUP_SOURCE_ID);
+        }
+
+        return values;
+    }
+
+    /**
+     * Merge the "after" values from the given {@link ValuesDelta},
+     * discarding any existing "after" state. This is typically used when
+     * re-parenting changes onto an updated {@link Entity}.
+     */
+    public static ValuesDelta mergeAfter(ValuesDelta local, ValuesDelta remote) {
+        // Bail early if trying to merge delete with missing local
+        if (local == null && (remote.isDelete() || remote.isTransient())) return null;
+
+        // Create local version if none exists yet
+        if (local == null) local = new ValuesDelta();
+
+        if (!local.beforeExists()) {
+            // Any "before" record is missing, so take all values as "insert"
+            local.mAfter = remote.getCompleteValues();
+        } else {
+            // Existing "update" with only "after" values
+            local.mAfter = remote.mAfter;
+        }
+
+        return local;
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        if (object instanceof ValuesDelta) {
+            // Only exactly equal with both are identical subsets
+            final ValuesDelta other = (ValuesDelta)object;
+            return this.subsetEquals(other) && other.subsetEquals(this);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        toString(builder);
+        return builder.toString();
+    }
+
+    /**
+     * Helper for building string representation, leveraging the given
+     * {@link StringBuilder} to minimize allocations.
+     */
+    public void toString(StringBuilder builder) {
+        builder.append("{ ");
+        builder.append("IdColumn=");
+        builder.append(mIdColumn);
+        builder.append(", FromTemplate=");
+        builder.append(mFromTemplate);
+        builder.append(", ");
+        for (String key : this.keySet()) {
+            builder.append(key);
+            builder.append("=");
+            builder.append(this.getAsString(key));
+            builder.append(", ");
+        }
+        builder.append("}");
+    }
+
+    /**
+     * Check if the given {@link ValuesDelta} is both a subset of this
+     * object, and any defined keys have equal values.
+     */
+    public boolean subsetEquals(ValuesDelta other) {
+        for (String key : this.keySet()) {
+            final String ourValue = this.getAsString(key);
+            final String theirValue = other.getAsString(key);
+            if (ourValue == null) {
+                // If they have value when we're null, no match
+                if (theirValue != null) return false;
+            } else {
+                // If both values defined and aren't equal, no match
+                if (!ourValue.equals(theirValue)) return false;
+            }
+        }
+        // All values compared and matched
+        return true;
+    }
+
+    /**
+     * Build a {@link android.content.ContentProviderOperation} that will transform our
+     * "before" state into our "after" state, using insert, update, or
+     * delete as needed.
+     */
+    public ContentProviderOperation.Builder buildDiff(Uri targetUri) {
+        return buildDiffHelper(targetUri);
+    }
+
+    /**
+     * For compatibility purpose.
+     */
+    public BuilderWrapper buildDiffWrapper(Uri targetUri) {
+        final ContentProviderOperation.Builder builder = buildDiffHelper(targetUri);
+        BuilderWrapper bw = null;
+        if (isInsert()) {
+            bw = new BuilderWrapper(builder, CompatUtils.TYPE_INSERT);
+        } else if (isDelete()) {
+            bw = new BuilderWrapper(builder, CompatUtils.TYPE_DELETE);
+        } else if (isUpdate()) {
+            bw = new BuilderWrapper(builder, CompatUtils.TYPE_UPDATE);
+        }
+        return bw;
+    }
+
+    private ContentProviderOperation.Builder buildDiffHelper(Uri targetUri) {
+        ContentProviderOperation.Builder builder = null;
+        if (isInsert()) {
+            // Changed values are "insert" back-referenced to Contact
+            mAfter.remove(mIdColumn);
+            builder = ContentProviderOperation.newInsert(targetUri);
+            builder.withValues(mAfter);
+        } else if (isDelete()) {
+            // When marked for deletion and "before" exists, then "delete"
+            builder = ContentProviderOperation.newDelete(targetUri);
+            builder.withSelection(mIdColumn + "=" + getId(), null);
+        } else if (isUpdate()) {
+            // When has changes and "before" exists, then "update"
+            builder = ContentProviderOperation.newUpdate(targetUri);
+            builder.withSelection(mIdColumn + "=" + getId(), null);
+            builder.withValues(mAfter);
+        }
+        return builder;
+    }
+
+    /** {@inheritDoc} */
+    public int describeContents() {
+        // Nothing special about this parcel
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeParcelable(mBefore, flags);
+        dest.writeParcelable(mAfter, flags);
+        dest.writeString(mIdColumn);
+    }
+
+    public void readFromParcel(Parcel source) {
+        final ClassLoader loader = getClass().getClassLoader();
+        mBefore = source.<ContentValues> readParcelable(loader);
+        mAfter = source.<ContentValues> readParcelable(loader);
+        mIdColumn = source.readString();
+    }
+
+    public static final Creator<ValuesDelta> CREATOR = new Creator<ValuesDelta>() {
+        public ValuesDelta createFromParcel(Parcel in) {
+            final ValuesDelta values = new ValuesDelta();
+            values.readFromParcel(in);
+            return values;
+        }
+
+        public ValuesDelta[] newArray(int size) {
+            return new ValuesDelta[size];
+        }
+    };
+
+    public void setGroupRowId(long groupId) {
+        put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupId);
+    }
+
+    public Long getGroupRowId() {
+        return getAsLong(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID);
+    }
+
+    public void setPhoto(byte[] value) {
+        put(ContactsContract.CommonDataKinds.Photo.PHOTO, value);
+    }
+
+    public byte[] getPhoto() {
+        return getAsByteArray(ContactsContract.CommonDataKinds.Photo.PHOTO);
+    }
+
+    public void setSuperPrimary(boolean val) {
+        if (val) {
+            put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
+        } else {
+            put(ContactsContract.Data.IS_SUPER_PRIMARY, 0);
+        }
+    }
+
+    public void setPhoneticFamilyName(String value) {
+        put(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_FAMILY_NAME, value);
+    }
+
+    public void setPhoneticMiddleName(String value) {
+        put(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_MIDDLE_NAME, value);
+    }
+
+    public void setPhoneticGivenName(String value) {
+        put(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_GIVEN_NAME, value);
+    }
+
+    public String getPhoneticFamilyName() {
+        return getAsString(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_FAMILY_NAME);
+    }
+
+    public String getPhoneticMiddleName() {
+        return getAsString(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_MIDDLE_NAME);
+    }
+
+    public String getPhoneticGivenName() {
+        return getAsString(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_GIVEN_NAME);
+    }
+
+    public String getDisplayName() {
+        return getAsString(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME);
+    }
+
+    public void setDisplayName(String name) {
+        if (name == null) {
+            putNull(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME);
+        } else {
+            put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+        }
+    }
+
+    public void copyStructuredNameFieldsFrom(ValuesDelta name) {
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME);
+
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME);
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.PREFIX);
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME);
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.SUFFIX);
+
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.PHONETIC_GIVEN_NAME);
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.PHONETIC_MIDDLE_NAME);
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.PHONETIC_FAMILY_NAME);
+
+        copyStringFrom(name, ContactsContract.CommonDataKinds.StructuredName.FULL_NAME_STYLE);
+        copyStringFrom(name, ContactsContract.Data.DATA11);
+    }
+
+    public String getPhoneNumber() {
+        return getAsString(ContactsContract.CommonDataKinds.Phone.NUMBER);
+    }
+
+    public String getPhoneNormalizedNumber() {
+        return getAsString(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER);
+    }
+
+    public boolean hasPhoneType() {
+        return getPhoneType() != null;
+    }
+
+    public Integer getPhoneType() {
+        return getAsInteger(ContactsContract.CommonDataKinds.Phone.TYPE);
+    }
+
+    public String getPhoneLabel() {
+        return getAsString(ContactsContract.CommonDataKinds.Phone.LABEL);
+    }
+
+    public String getEmailData() {
+        return getAsString(ContactsContract.CommonDataKinds.Email.DATA);
+    }
+
+    public boolean hasEmailType() {
+        return getEmailType() != null;
+    }
+
+    public Integer getEmailType() {
+        return getAsInteger(ContactsContract.CommonDataKinds.Email.TYPE);
+    }
+
+    public String getEmailLabel() {
+        return getAsString(ContactsContract.CommonDataKinds.Email.LABEL);
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/AccountType.java b/src/com/android/contacts/common/model/account/AccountType.java
new file mode 100644
index 0000000..8b50d79
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/AccountType.java
@@ -0,0 +1,526 @@
+/*
+ * 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.contacts.common.model.account;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.RawContacts;
+import android.view.inputmethod.EditorInfo;
+import android.widget.EditText;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Internal structure that represents constraints and styles for a specific data
+ * source, such as the various data types they support, including details on how
+ * those types should be rendered and edited.
+ * <p>
+ * In the future this may be inflated from XML defined by a data source.
+ */
+public abstract class AccountType {
+    private static final String TAG = "AccountType";
+
+    /**
+     * The {@link RawContacts#ACCOUNT_TYPE} these constraints apply to.
+     */
+    public String accountType = null;
+
+    /**
+     * The {@link RawContacts#DATA_SET} these constraints apply to.
+     */
+    public String dataSet = null;
+
+    /**
+     * Package that resources should be loaded from.  Will be null for embedded types, in which
+     * case resources are stored in this package itself.
+     *
+     * TODO Clean up {@link #resourcePackageName}, {@link #syncAdapterPackageName} and
+     * {@link #getViewContactNotifyServicePackageName()}.
+     *
+     * There's the following invariants:
+     * - {@link #syncAdapterPackageName} is always set to the actual sync adapter package name.
+     * - {@link #resourcePackageName} too is set to the same value, unless {@link #isEmbedded()},
+     *   in which case it'll be null.
+     * There's an unfortunate exception of {@link FallbackAccountType}.  Even though it
+     * {@link #isEmbedded()}, but we set non-null to {@link #resourcePackageName} for unit tests.
+     */
+    public String resourcePackageName;
+    /**
+     * The package name for the authenticator (for the embedded types, i.e. Google and Exchange)
+     * or the sync adapter (for external type, including extensions).
+     */
+    public String syncAdapterPackageName;
+
+    public int titleRes;
+    public int iconRes;
+
+    /**
+     * Set of {@link DataKind} supported by this source.
+     */
+    private ArrayList<DataKind> mKinds = Lists.newArrayList();
+
+    /**
+     * Lookup map of {@link #mKinds} on {@link DataKind#mimeType}.
+     */
+    private HashMap<String, DataKind> mMimeKinds = Maps.newHashMap();
+
+    protected boolean mIsInitialized;
+
+    protected static class DefinitionException extends Exception {
+        public DefinitionException(String message) {
+            super(message);
+        }
+
+        public DefinitionException(String message, Exception inner) {
+            super(message, inner);
+        }
+    }
+
+    /**
+     * Whether this account type was able to be fully initialized.  This may be false if
+     * (for example) the package name associated with the account type could not be found.
+     */
+    public final boolean isInitialized() {
+        return mIsInitialized;
+    }
+
+    /**
+     * @return Whether this type is an "embedded" type.  i.e. any of {@link FallbackAccountType},
+     * {@link GoogleAccountType} or {@link ExternalAccountType}.
+     *
+     * If an embedded type cannot be initialized (i.e. if {@link #isInitialized()} returns
+     * {@code false}) it's considered critical, and the application will crash.  On the other
+     * hand if it's not an embedded type, we just skip loading the type.
+     */
+    public boolean isEmbedded() {
+        return true;
+    }
+
+    public boolean isExtension() {
+        return false;
+    }
+
+    /**
+     * @return True if contacts can be created and edited using this app. If false,
+     * there could still be an external editor as provided by
+     * {@link #getEditContactActivityClassName()} or {@link #getCreateContactActivityClassName()}
+     */
+    public abstract boolean areContactsWritable();
+
+    /**
+     * Returns an optional custom edit activity.
+     *
+     * Only makes sense for non-embedded account types.
+     * The activity class should reside in the sync adapter package as determined by
+     * {@link #syncAdapterPackageName}.
+     */
+    public String getEditContactActivityClassName() {
+        return null;
+    }
+
+    /**
+     * Returns an optional custom new contact activity.
+     *
+     * Only makes sense for non-embedded account types.
+     * The activity class should reside in the sync adapter package as determined by
+     * {@link #syncAdapterPackageName}.
+     */
+    public String getCreateContactActivityClassName() {
+        return null;
+    }
+
+    /**
+     * Returns an optional custom invite contact activity.
+     *
+     * Only makes sense for non-embedded account types.
+     * The activity class should reside in the sync adapter package as determined by
+     * {@link #syncAdapterPackageName}.
+     */
+    public String getInviteContactActivityClassName() {
+        return null;
+    }
+
+    /**
+     * Returns an optional service that can be launched whenever a contact is being looked at.
+     * This allows the sync adapter to provide more up-to-date information.
+     *
+     * The service class should reside in the sync adapter package as determined by
+     * {@link #getViewContactNotifyServicePackageName()}.
+     */
+    public String getViewContactNotifyServiceClassName() {
+        return null;
+    }
+
+    /**
+     * TODO This is way too hacky should be removed.
+     *
+     * This is introduced for {@link GoogleAccountType} where {@link #syncAdapterPackageName}
+     * is the authenticator package name but the notification service is in the sync adapter
+     * package.  See {@link #resourcePackageName} -- we should clean up those.
+     */
+    public String getViewContactNotifyServicePackageName() {
+        return syncAdapterPackageName;
+    }
+
+    /** Returns an optional Activity string that can be used to view the group. */
+    public String getViewGroupActivity() {
+        return null;
+    }
+
+    public CharSequence getDisplayLabel(Context context) {
+        // Note this resource is defined in the sync adapter package, not resourcePackageName.
+        return getResourceText(context, syncAdapterPackageName, titleRes, accountType);
+    }
+
+    /**
+     * @return resource ID for the "invite contact" action label, or -1 if not defined.
+     */
+    protected int getInviteContactActionResId() {
+        return -1;
+    }
+
+    /**
+     * @return resource ID for the "view group" label, or -1 if not defined.
+     */
+    protected int getViewGroupLabelResId() {
+        return -1;
+    }
+
+    /**
+     * Returns {@link AccountTypeWithDataSet} for this type.
+     */
+    public AccountTypeWithDataSet getAccountTypeAndDataSet() {
+        return AccountTypeWithDataSet.get(accountType, dataSet);
+    }
+
+    /**
+     * Returns a list of additional package names that should be inspected as additional
+     * external account types.  This allows for a primary account type to indicate other packages
+     * that may not be sync adapters but which still provide contact data, perhaps under a
+     * separate data set within the account.
+     */
+    public List<String> getExtensionPackageNames() {
+        return new ArrayList<String>();
+    }
+
+    /**
+     * Returns an optional custom label for the "invite contact" action, which will be shown on
+     * the contact card.  (If not defined, returns null.)
+     */
+    public CharSequence getInviteContactActionLabel(Context context) {
+        // Note this resource is defined in the sync adapter package, not resourcePackageName.
+        return getResourceText(context, syncAdapterPackageName, getInviteContactActionResId(), "");
+    }
+
+    /**
+     * Returns a label for the "view group" action. If not defined, this falls back to our
+     * own "View Updates" string
+     */
+    public CharSequence getViewGroupLabel(Context context) {
+        // Note this resource is defined in the sync adapter package, not resourcePackageName.
+        final CharSequence customTitle =
+                getResourceText(context, syncAdapterPackageName, getViewGroupLabelResId(), null);
+
+        return customTitle == null
+                ? context.getText(R.string.view_updates_from_group)
+                : customTitle;
+    }
+
+    /**
+     * Return a string resource loaded from the given package (or the current package
+     * if {@code packageName} is null), unless {@code resId} is -1, in which case it returns
+     * {@code defaultValue}.
+     *
+     * (The behavior is undefined if the resource or package doesn't exist.)
+     */
+    @VisibleForTesting
+    static CharSequence getResourceText(Context context, String packageName, int resId,
+            String defaultValue) {
+        if (resId != -1 && packageName != null) {
+            final PackageManager pm = context.getPackageManager();
+            return pm.getText(packageName, resId, null);
+        } else if (resId != -1) {
+            return context.getText(resId);
+        } else {
+            return defaultValue;
+        }
+    }
+
+    public Drawable getDisplayIcon(Context context) {
+        return getDisplayIcon(context, titleRes, iconRes, syncAdapterPackageName);
+    }
+
+    public static Drawable getDisplayIcon(Context context, int titleRes, int iconRes,
+            String syncAdapterPackageName) {
+        if (titleRes != -1 && syncAdapterPackageName != null) {
+            final PackageManager pm = context.getPackageManager();
+            return pm.getDrawable(syncAdapterPackageName, iconRes, null);
+        } else if (titleRes != -1) {
+            return context.getResources().getDrawable(iconRes);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Whether or not groups created under this account type have editable membership lists.
+     */
+    abstract public boolean isGroupMembershipEditable();
+
+    /**
+     * {@link Comparator} to sort by {@link DataKind#weight}.
+     */
+    private static Comparator<DataKind> sWeightComparator = new Comparator<DataKind>() {
+        @Override
+        public int compare(DataKind object1, DataKind object2) {
+            return object1.weight - object2.weight;
+        }
+    };
+
+    /**
+     * Return list of {@link DataKind} supported, sorted by
+     * {@link DataKind#weight}.
+     */
+    public ArrayList<DataKind> getSortedDataKinds() {
+        // TODO: optimize by marking if already sorted
+        Collections.sort(mKinds, sWeightComparator);
+        return mKinds;
+    }
+
+    /**
+     * Find the {@link DataKind} for a specific MIME-type, if it's handled by
+     * this data source.
+     */
+    public DataKind getKindForMimetype(String mimeType) {
+        return this.mMimeKinds.get(mimeType);
+    }
+
+    /**
+     * Add given {@link DataKind} to list of those provided by this source.
+     */
+    public DataKind addKind(DataKind kind) throws DefinitionException {
+        if (kind.mimeType == null) {
+            throw new DefinitionException("null is not a valid mime type");
+        }
+        if (mMimeKinds.get(kind.mimeType) != null) {
+            throw new DefinitionException(
+                    "mime type '" + kind.mimeType + "' is already registered");
+        }
+
+        kind.resourcePackageName = this.resourcePackageName;
+        this.mKinds.add(kind);
+        this.mMimeKinds.put(kind.mimeType, kind);
+        return kind;
+    }
+
+    /**
+     * Description of a specific "type" or "label" of a {@link DataKind} row,
+     * such as {@link Phone#TYPE_WORK}. Includes constraints on total number of
+     * rows a {@link Contacts} may have of this type, and details on how
+     * user-defined labels are stored.
+     */
+    public static class EditType {
+        public int rawValue;
+        public int labelRes;
+        public boolean secondary;
+        /**
+         * The number of entries allowed for the type. -1 if not specified.
+         * @see DataKind#typeOverallMax
+         */
+        public int specificMax;
+        public String customColumn;
+
+        public EditType(int rawValue, int labelRes) {
+            this.rawValue = rawValue;
+            this.labelRes = labelRes;
+            this.specificMax = -1;
+        }
+
+        public EditType setSecondary(boolean secondary) {
+            this.secondary = secondary;
+            return this;
+        }
+
+        public EditType setSpecificMax(int specificMax) {
+            this.specificMax = specificMax;
+            return this;
+        }
+
+        public EditType setCustomColumn(String customColumn) {
+            this.customColumn = customColumn;
+            return this;
+        }
+
+        @Override
+        public boolean equals(Object object) {
+            if (object instanceof EditType) {
+                final EditType other = (EditType)object;
+                return other.rawValue == rawValue;
+            }
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return rawValue;
+        }
+
+        @Override
+        public String toString() {
+            return this.getClass().getSimpleName()
+                    + " rawValue=" + rawValue
+                    + " labelRes=" + labelRes
+                    + " secondary=" + secondary
+                    + " specificMax=" + specificMax
+                    + " customColumn=" + customColumn;
+        }
+    }
+
+    public static class EventEditType extends EditType {
+        private boolean mYearOptional;
+
+        public EventEditType(int rawValue, int labelRes) {
+            super(rawValue, labelRes);
+        }
+
+        public boolean isYearOptional() {
+            return mYearOptional;
+        }
+
+        public EventEditType setYearOptional(boolean yearOptional) {
+            mYearOptional = yearOptional;
+            return this;
+        }
+
+        @Override
+        public String toString() {
+            return super.toString() + " mYearOptional=" + mYearOptional;
+        }
+    }
+
+    /**
+     * Description of a user-editable field on a {@link DataKind} row, such as
+     * {@link Phone#NUMBER}. Includes flags to apply to an {@link EditText}, and
+     * the column where this field is stored.
+     */
+    public static final class EditField {
+        public String column;
+        public int titleRes;
+        public int inputType;
+        public int minLines;
+        public boolean optional;
+        public boolean shortForm;
+        public boolean longForm;
+
+        public EditField(String column, int titleRes) {
+            this.column = column;
+            this.titleRes = titleRes;
+        }
+
+        public EditField(String column, int titleRes, int inputType) {
+            this(column, titleRes);
+            this.inputType = inputType;
+        }
+
+        public EditField setOptional(boolean optional) {
+            this.optional = optional;
+            return this;
+        }
+
+        public EditField setShortForm(boolean shortForm) {
+            this.shortForm = shortForm;
+            return this;
+        }
+
+        public EditField setLongForm(boolean longForm) {
+            this.longForm = longForm;
+            return this;
+        }
+
+        public EditField setMinLines(int minLines) {
+            this.minLines = minLines;
+            return this;
+        }
+
+        public boolean isMultiLine() {
+            return (inputType & EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE) != 0;
+        }
+
+
+        @Override
+        public String toString() {
+            return this.getClass().getSimpleName() + ":"
+                    + " column=" + column
+                    + " titleRes=" + titleRes
+                    + " inputType=" + inputType
+                    + " minLines=" + minLines
+                    + " optional=" + optional
+                    + " shortForm=" + shortForm
+                    + " longForm=" + longForm;
+        }
+    }
+
+    /**
+     * Generic method of inflating a given {@link ContentValues} into a user-readable
+     * {@link CharSequence}. For example, an inflater could combine the multiple
+     * columns of {@link StructuredPostal} together using a string resource
+     * before presenting to the user.
+     */
+    public interface StringInflater {
+        public CharSequence inflateUsing(Context context, ContentValues values);
+    }
+
+    /**
+     * Compare two {@link AccountType} by their {@link AccountType#getDisplayLabel} with the
+     * current locale.
+     */
+    public static class DisplayLabelComparator implements Comparator<AccountType> {
+        private final Context mContext;
+        /** {@link Comparator} for the current locale. */
+        private final Collator mCollator = Collator.getInstance();
+
+        public DisplayLabelComparator(Context context) {
+            mContext = context;
+        }
+
+        private String getDisplayLabel(AccountType type) {
+            CharSequence label = type.getDisplayLabel(mContext);
+            return (label == null) ? "" : label.toString();
+        }
+
+        @Override
+        public int compare(AccountType lhs, AccountType rhs) {
+            return mCollator.compare(getDisplayLabel(lhs), getDisplayLabel(rhs));
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/AccountTypeWithDataSet.java b/src/com/android/contacts/common/model/account/AccountTypeWithDataSet.java
new file mode 100644
index 0000000..f6bcf24
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/AccountTypeWithDataSet.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model.account;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.BaseColumns;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.RawContacts;
+import android.text.TextUtils;
+
+import com.google.common.base.Objects;
+
+
+/**
+ * Encapsulates an "account type" string and a "data set" string.
+ */
+public class AccountTypeWithDataSet {
+
+    private static final String[] ID_PROJECTION = new String[] {BaseColumns._ID};
+    private static final Uri RAW_CONTACTS_URI_LIMIT_1 = RawContacts.CONTENT_URI.buildUpon()
+            .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, "1").build();
+
+    /** account type.  Can be null for fallback type. */
+    public final String accountType;
+
+    /** dataSet may be null, but never be "". */
+    public final String dataSet;
+
+    private AccountTypeWithDataSet(String accountType, String dataSet) {
+        this.accountType = TextUtils.isEmpty(accountType) ? null : accountType;
+        this.dataSet = TextUtils.isEmpty(dataSet) ? null : dataSet;
+    }
+
+    public static AccountTypeWithDataSet get(String accountType, String dataSet) {
+        return new AccountTypeWithDataSet(accountType, dataSet);
+    }
+
+    /**
+     * Return true if there are any contacts in the database with this account type and data set.
+     * Touches DB. Don't use in the UI thread.
+     */
+    public boolean hasData(Context context) {
+        final String BASE_SELECTION = RawContacts.ACCOUNT_TYPE + " = ?";
+        final String selection;
+        final String[] args;
+        if (TextUtils.isEmpty(dataSet)) {
+            selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " IS NULL";
+            args = new String[] {accountType};
+        } else {
+            selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " = ?";
+            args = new String[] {accountType, dataSet};
+        }
+
+        final Cursor c = context.getContentResolver().query(RAW_CONTACTS_URI_LIMIT_1,
+                ID_PROJECTION, selection, args, null);
+        if (c == null) return false;
+        try {
+            return c.moveToFirst();
+        } finally {
+            c.close();
+        }
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (!(o instanceof AccountTypeWithDataSet)) return false;
+
+        AccountTypeWithDataSet other = (AccountTypeWithDataSet) o;
+        return Objects.equal(accountType, other.accountType)
+                && Objects.equal(dataSet, other.dataSet);
+    }
+
+    @Override
+    public int hashCode() {
+        return (accountType == null ? 0 : accountType.hashCode())
+                ^ (dataSet == null ? 0 : dataSet.hashCode());
+    }
+
+    @Override
+    public String toString() {
+        return "[" + accountType + "/" + dataSet + "]";
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/AccountWithDataSet.java b/src/com/android/contacts/common/model/account/AccountWithDataSet.java
new file mode 100644
index 0000000..5947647
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/AccountWithDataSet.java
@@ -0,0 +1,239 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model.account;
+
+import android.accounts.Account;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Parcelable;
+import android.os.Parcel;
+import android.provider.BaseColumns;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.RawContacts;
+import android.text.TextUtils;
+
+import com.google.common.base.Objects;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * Wrapper for an account that includes a data set (which may be null).
+ */
+public class AccountWithDataSet implements Parcelable {
+    private static final String STRINGIFY_SEPARATOR = "\u0001";
+    private static final String ARRAY_STRINGIFY_SEPARATOR = "\u0002";
+
+    private static final Pattern STRINGIFY_SEPARATOR_PAT =
+            Pattern.compile(Pattern.quote(STRINGIFY_SEPARATOR));
+    private static final Pattern ARRAY_STRINGIFY_SEPARATOR_PAT =
+            Pattern.compile(Pattern.quote(ARRAY_STRINGIFY_SEPARATOR));
+
+    public final String name;
+    public final String type;
+    public final String dataSet;
+    private final AccountTypeWithDataSet mAccountTypeWithDataSet;
+
+    private static final String[] ID_PROJECTION = new String[] {BaseColumns._ID};
+    private static final Uri RAW_CONTACTS_URI_LIMIT_1 = RawContacts.CONTENT_URI.buildUpon()
+            .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, "1").build();
+
+    public static final String LOCAL_ACCOUNT_SELECTION = RawContacts.ACCOUNT_TYPE + " IS NULL AND "
+            + RawContacts.ACCOUNT_NAME + " IS NULL AND "
+            + RawContacts.DATA_SET + " IS NULL";
+
+    public AccountWithDataSet(String name, String type, String dataSet) {
+        this.name = emptyToNull(name);
+        this.type = emptyToNull(type);
+        this.dataSet = emptyToNull(dataSet);
+        mAccountTypeWithDataSet = AccountTypeWithDataSet.get(type, dataSet);
+    }
+
+    private static final String emptyToNull(String text) {
+        return TextUtils.isEmpty(text) ? null : text;
+    }
+
+    public AccountWithDataSet(Parcel in) {
+        this.name = in.readString();
+        this.type = in.readString();
+        this.dataSet = in.readString();
+        mAccountTypeWithDataSet = AccountTypeWithDataSet.get(type, dataSet);
+    }
+
+    public boolean isLocalAccount() {
+        return name == null && type == null && dataSet == null;
+    }
+
+    public static AccountWithDataSet getLocalAccount() {
+        return new AccountWithDataSet(null, null, null);
+    }
+
+    public Account getAccountOrNull() {
+        if (name != null && type != null) {
+            return new Account(name, type);
+        }
+        return null;
+    }
+
+    public int describeContents() {
+        return 0;
+    }
+
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeString(name);
+        dest.writeString(type);
+        dest.writeString(dataSet);
+    }
+
+    // For Parcelable
+    public static final Creator<AccountWithDataSet> CREATOR = new Creator<AccountWithDataSet>() {
+        public AccountWithDataSet createFromParcel(Parcel source) {
+            return new AccountWithDataSet(source);
+        }
+
+        public AccountWithDataSet[] newArray(int size) {
+            return new AccountWithDataSet[size];
+        }
+    };
+
+    public AccountTypeWithDataSet getAccountTypeWithDataSet() {
+        return mAccountTypeWithDataSet;
+    }
+
+    /**
+     * Return {@code true} if this account has any contacts in the database.
+     * Touches DB.  Don't use in the UI thread.
+     */
+    public boolean hasData(Context context) {
+        String selection;
+        String[] args = null;
+        if (isLocalAccount()) {
+            selection = LOCAL_ACCOUNT_SELECTION;
+        } else {
+            final String BASE_SELECTION =
+                    RawContacts.ACCOUNT_TYPE + " = ?" + " AND " + RawContacts.ACCOUNT_NAME + " = ?";
+            if (TextUtils.isEmpty(dataSet)) {
+                selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " IS NULL";
+                args = new String[] {type, name};
+            } else {
+                selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " = ?";
+                args = new String[] {type, name, dataSet};
+            }
+        }
+
+        final Cursor c = context.getContentResolver().query(RAW_CONTACTS_URI_LIMIT_1,
+                ID_PROJECTION, selection, args, null);
+        if (c == null) return false;
+        try {
+            return c.moveToFirst();
+        } finally {
+            c.close();
+        }
+    }
+
+    public boolean equals(Object obj) {
+        if (obj instanceof AccountWithDataSet) {
+            AccountWithDataSet other = (AccountWithDataSet) obj;
+            return Objects.equal(name, other.name)
+                    && Objects.equal(type, other.type)
+                    && Objects.equal(dataSet, other.dataSet);
+        }
+        return false;
+    }
+
+    public int hashCode() {
+        int result = 17;
+        result = 31 * result + (name != null ? name.hashCode() : 0);
+        result = 31 * result + (type != null ? type.hashCode() : 0);
+        result = 31 * result + (dataSet != null ? dataSet.hashCode() : 0);
+        return result;
+    }
+
+    public String toString() {
+        return "AccountWithDataSet {name=" + name + ", type=" + type + ", dataSet=" + dataSet + "}";
+    }
+
+    private static StringBuilder addStringified(StringBuilder sb, AccountWithDataSet account) {
+        if (!TextUtils.isEmpty(account.name)) sb.append(account.name);
+        sb.append(STRINGIFY_SEPARATOR);
+        if (!TextUtils.isEmpty(account.type)) sb.append(account.type);
+        sb.append(STRINGIFY_SEPARATOR);
+        if (!TextUtils.isEmpty(account.dataSet)) sb.append(account.dataSet);
+
+        return sb;
+    }
+
+    /**
+     * Pack the instance into a string.
+     */
+    public String stringify() {
+        return addStringified(new StringBuilder(), this).toString();
+    }
+
+    /**
+     * Unpack a string created by {@link #stringify}.
+     *
+     * @throws IllegalArgumentException if it's an invalid string.
+     */
+    public static AccountWithDataSet unstringify(String s) {
+        final String[] array = STRINGIFY_SEPARATOR_PAT.split(s, 3);
+        if (array.length < 3) {
+            throw new IllegalArgumentException("Invalid string " + s);
+        }
+        return new AccountWithDataSet(array[0], array[1],
+                TextUtils.isEmpty(array[2]) ? null : array[2]);
+    }
+
+    /**
+     * Pack a list of {@link AccountWithDataSet} into a string.
+     */
+    public static String stringifyList(List<AccountWithDataSet> accounts) {
+        final StringBuilder sb = new StringBuilder();
+
+        for (AccountWithDataSet account : accounts) {
+            if (sb.length() > 0) {
+                sb.append(ARRAY_STRINGIFY_SEPARATOR);
+            }
+            addStringified(sb, account);
+        }
+
+        return sb.toString();
+    }
+
+    /**
+     * Unpack a list of {@link AccountWithDataSet} into a string.
+     *
+     * @throws IllegalArgumentException if it's an invalid string.
+     */
+    public static List<AccountWithDataSet> unstringifyList(String s) {
+        final ArrayList<AccountWithDataSet> ret = Lists.newArrayList();
+        if (TextUtils.isEmpty(s)) {
+            return ret;
+        }
+
+        final String[] array = ARRAY_STRINGIFY_SEPARATOR_PAT.split(s);
+
+        for (int i = 0; i < array.length; i++) {
+            ret.add(unstringify(array[i]));
+        }
+
+        return ret;
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/BaseAccountType.java b/src/com/android/contacts/common/model/account/BaseAccountType.java
new file mode 100644
index 0000000..6481c06
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/BaseAccountType.java
@@ -0,0 +1,1488 @@
+/*
+ * 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.contacts.common.model.account;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.inputmethod.EditorInfo;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.CommonDateUtils;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+public abstract class BaseAccountType extends AccountType {
+    private static final String TAG = "BaseAccountType";
+
+    protected static final int FLAGS_PHONE = EditorInfo.TYPE_CLASS_PHONE;
+    protected static final int FLAGS_EMAIL = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
+    protected static final int FLAGS_PERSON_NAME = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME;
+    protected static final int FLAGS_PHONETIC = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_VARIATION_PHONETIC;
+    protected static final int FLAGS_GENERIC_NAME = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS;
+    protected static final int FLAGS_NOTE = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
+    protected static final int FLAGS_EVENT = EditorInfo.TYPE_CLASS_TEXT;
+    protected static final int FLAGS_WEBSITE = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_VARIATION_URI;
+    protected static final int FLAGS_POSTAL = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_VARIATION_POSTAL_ADDRESS | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS
+            | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
+    protected static final int FLAGS_SIP_ADDRESS = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;  // since SIP addresses have the same
+                                                             // basic format as email addresses
+    protected static final int FLAGS_RELATION = EditorInfo.TYPE_CLASS_TEXT
+            | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME;
+
+    // Specify the maximum number of lines that can be used to display various field types.  If no
+    // value is specified for a particular type, we use the default value from {@link DataKind}.
+    protected static final int MAX_LINES_FOR_POSTAL_ADDRESS = 10;
+    protected static final int MAX_LINES_FOR_GROUP = 10;
+    protected static final int MAX_LINES_FOR_NOTE = 100;
+
+    private interface Tag {
+        static final String DATA_KIND = "DataKind";
+        static final String TYPE = "Type";
+    }
+
+    private interface Attr {
+        static final String MAX_OCCURRENCE = "maxOccurs";
+        static final String DATE_WITH_TIME = "dateWithTime";
+        static final String YEAR_OPTIONAL = "yearOptional";
+        static final String KIND = "kind";
+        static final String TYPE = "type";
+    }
+
+    protected interface Weight {
+        static final int NONE = -1;
+        static final int PHONE = 10;
+        static final int EMAIL = 15;
+        static final int STRUCTURED_POSTAL = 25;
+        static final int NICKNAME = 111;
+        static final int EVENT = 120;
+        static final int ORGANIZATION = 125;
+        static final int NOTE = 130;
+        static final int IM = 140;
+        static final int SIP_ADDRESS = 145;
+        static final int GROUP_MEMBERSHIP = 150;
+        static final int WEBSITE = 160;
+        static final int RELATIONSHIP = 999;
+    }
+
+    public BaseAccountType() {
+        this.accountType = null;
+        this.dataSet = null;
+        this.titleRes = R.string.account_phone;
+        this.iconRes = R.mipmap.ic_contacts_launcher;
+    }
+
+    protected static EditType buildPhoneType(int type) {
+        return new EditType(type, Phone.getTypeLabelResource(type));
+    }
+
+    protected static EditType buildEmailType(int type) {
+        return new EditType(type, Email.getTypeLabelResource(type));
+    }
+
+    protected static EditType buildPostalType(int type) {
+        return new EditType(type, StructuredPostal.getTypeLabelResource(type));
+    }
+
+    protected static EditType buildImType(int type) {
+        return new EditType(type, Im.getProtocolLabelResource(type));
+    }
+
+    protected static EditType buildEventType(int type, boolean yearOptional) {
+        return new EventEditType(type, Event.getTypeResource(type)).setYearOptional(yearOptional);
+    }
+
+    protected static EditType buildRelationType(int type) {
+        return new EditType(type, Relation.getTypeLabelResource(type));
+    }
+
+    protected DataKind addDataKindStructuredName(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
+                R.string.nameLabelsGroup, Weight.NONE, true));
+        kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
+        kind.actionBody = new SimpleInflater(Nickname.NAME);
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(StructuredName.DISPLAY_NAME,
+                R.string.full_name, FLAGS_PERSON_NAME));
+        kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                FLAGS_PERSON_NAME).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
+                FLAGS_PERSON_NAME).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
+                FLAGS_PERSON_NAME).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
+                FLAGS_PERSON_NAME).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
+                FLAGS_PERSON_NAME).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
+                R.string.name_phonetic_family, FLAGS_PHONETIC));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
+                R.string.name_phonetic_middle, FLAGS_PHONETIC));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
+                R.string.name_phonetic_given, FLAGS_PHONETIC));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindDisplayName(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME,
+                R.string.nameLabelsGroup, Weight.NONE, true));
+        kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
+        kind.actionBody = new SimpleInflater(Nickname.NAME);
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(StructuredName.DISPLAY_NAME,
+                R.string.full_name, FLAGS_PERSON_NAME).setShortForm(true));
+
+        boolean displayOrderPrimary =
+                context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
+
+        if (!displayOrderPrimary) {
+            kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+        } else {
+            kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+        }
+
+        return kind;
+    }
+
+    protected DataKind addDataKindPhoneticName(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
+                R.string.name_phonetic, Weight.NONE, true));
+        kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
+        kind.actionBody = new SimpleInflater(Nickname.NAME);
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
+                R.string.name_phonetic, FLAGS_PHONETIC).setShortForm(true));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
+                R.string.name_phonetic_family, FLAGS_PHONETIC).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
+                R.string.name_phonetic_middle, FLAGS_PHONETIC).setLongForm(true));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
+                R.string.name_phonetic_given, FLAGS_PHONETIC).setLongForm(true));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindNickname(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Nickname.CONTENT_ITEM_TYPE,
+                    R.string.nicknameLabelsGroup, Weight.NICKNAME, true));
+        kind.typeOverallMax = 1;
+        kind.actionHeader = new SimpleInflater(R.string.nicknameLabelsGroup);
+        kind.actionBody = new SimpleInflater(Nickname.NAME);
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Nickname.TYPE, Nickname.TYPE_DEFAULT);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
+                FLAGS_PERSON_NAME));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindPhone(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Phone.CONTENT_ITEM_TYPE, R.string.phoneLabelsGroup,
+                Weight.PHONE, true));
+        kind.iconAltRes = R.drawable.ic_message_24dp_mirrored;
+        kind.iconAltDescriptionRes = R.string.sms;
+        kind.actionHeader = new PhoneActionInflater();
+        kind.actionAltHeader = new PhoneActionAltInflater();
+        kind.actionBody = new SimpleInflater(Phone.NUMBER);
+        kind.typeColumn = Phone.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
+        kind.typeList.add(
+                buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Phone.LABEL));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_CALLBACK).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_ISDN).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER_FAX).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_TELEX).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_TTY_TDD).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_MOBILE).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_PAGER).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindEmail(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Email.CONTENT_ITEM_TYPE, R.string.emailLabelsGroup,
+                Weight.EMAIL, true));
+        kind.actionHeader = new EmailActionInflater();
+        kind.actionBody = new SimpleInflater(Email.DATA);
+        kind.typeColumn = Email.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildEmailType(Email.TYPE_HOME));
+        kind.typeList.add(buildEmailType(Email.TYPE_WORK));
+        kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
+        kind.typeList.add(buildEmailType(Email.TYPE_MOBILE));
+        kind.typeList.add(
+                buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Email.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(StructuredPostal.CONTENT_ITEM_TYPE,
+                R.string.postalLabelsGroup, Weight.STRUCTURED_POSTAL, true));
+        kind.actionHeader = new PostalActionInflater();
+        kind.actionBody = new SimpleInflater(StructuredPostal.FORMATTED_ADDRESS);
+        kind.typeColumn = StructuredPostal.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(StructuredPostal.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(
+                new EditField(StructuredPostal.FORMATTED_ADDRESS, R.string.postal_address,
+                        FLAGS_POSTAL));
+
+        kind.maxLinesForDisplay = MAX_LINES_FOR_POSTAL_ADDRESS;
+
+        return kind;
+    }
+
+    protected DataKind addDataKindIm(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Im.CONTENT_ITEM_TYPE, R.string.imLabelsGroup,
+                Weight.IM, true));
+        kind.actionHeader = new ImActionInflater();
+        kind.actionBody = new SimpleInflater(Im.DATA);
+
+        // NOTE: even though a traditional "type" exists, for editing
+        // purposes we're using the protocol to pick labels
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
+
+        kind.typeColumn = Im.PROTOCOL;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildImType(Im.PROTOCOL_AIM));
+        kind.typeList.add(buildImType(Im.PROTOCOL_MSN));
+        kind.typeList.add(buildImType(Im.PROTOCOL_YAHOO));
+        kind.typeList.add(buildImType(Im.PROTOCOL_SKYPE));
+        kind.typeList.add(buildImType(Im.PROTOCOL_QQ));
+        kind.typeList.add(buildImType(Im.PROTOCOL_GOOGLE_TALK));
+        kind.typeList.add(buildImType(Im.PROTOCOL_ICQ));
+        kind.typeList.add(buildImType(Im.PROTOCOL_JABBER));
+        kind.typeList.add(buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true).setCustomColumn(
+                Im.CUSTOM_PROTOCOL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindOrganization(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Organization.CONTENT_ITEM_TYPE,
+                    R.string.organizationLabelsGroup, Weight.ORGANIZATION, true));
+        kind.actionHeader = new SimpleInflater(R.string.organizationLabelsGroup);
+        kind.actionBody = ORGANIZATION_BODY_INFLATER;
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
+                FLAGS_GENERIC_NAME));
+        kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
+                FLAGS_GENERIC_NAME));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindPhoto(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Photo.CONTENT_ITEM_TYPE, -1, Weight.NONE, true));
+        kind.typeOverallMax = 1;
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
+        return kind;
+    }
+
+    protected DataKind addDataKindNote(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Note.CONTENT_ITEM_TYPE, R.string.label_notes,
+                Weight.NOTE, true));
+        kind.typeOverallMax = 1;
+        kind.actionHeader = new SimpleInflater(R.string.label_notes);
+        kind.actionBody = new SimpleInflater(Note.NOTE);
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
+
+        kind.maxLinesForDisplay = MAX_LINES_FOR_NOTE;
+
+        return kind;
+    }
+
+    protected DataKind addDataKindWebsite(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Website.CONTENT_ITEM_TYPE,
+                R.string.websiteLabelsGroup, Weight.WEBSITE, true));
+        kind.actionHeader = new SimpleInflater(R.string.websiteLabelsGroup);
+        kind.actionBody = new SimpleInflater(Website.URL);
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Website.TYPE, Website.TYPE_OTHER);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindSipAddress(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(SipAddress.CONTENT_ITEM_TYPE,
+                    R.string.label_sip_address, Weight.SIP_ADDRESS, true));
+
+        kind.actionHeader = new SimpleInflater(R.string.label_sip_address);
+        kind.actionBody = new SimpleInflater(SipAddress.SIP_ADDRESS);
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(SipAddress.SIP_ADDRESS,
+                                         R.string.label_sip_address, FLAGS_SIP_ADDRESS));
+        kind.typeOverallMax = 1;
+
+        return kind;
+    }
+
+    protected DataKind addDataKindGroupMembership(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(GroupMembership.CONTENT_ITEM_TYPE,
+                R.string.groupsLabel, Weight.GROUP_MEMBERSHIP, true));
+
+        kind.typeOverallMax = 1;
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1));
+
+        kind.maxLinesForDisplay = MAX_LINES_FOR_GROUP;
+
+        return kind;
+    }
+
+    /**
+     * Simple inflater that assumes a string resource has a "%s" that will be
+     * filled from the given column.
+     */
+    public static class SimpleInflater implements StringInflater {
+        private final int mStringRes;
+        private final String mColumnName;
+
+        public SimpleInflater(int stringRes) {
+            this(stringRes, null);
+        }
+
+        public SimpleInflater(String columnName) {
+            this(-1, columnName);
+        }
+
+        public SimpleInflater(int stringRes, String columnName) {
+            mStringRes = stringRes;
+            mColumnName = columnName;
+        }
+
+        @Override
+        public CharSequence inflateUsing(Context context, ContentValues values) {
+            final boolean validColumn = values.containsKey(mColumnName);
+            final boolean validString = mStringRes > 0;
+
+            final CharSequence stringValue = validString ? context.getText(mStringRes) : null;
+            final CharSequence columnValue = validColumn ? values.getAsString(mColumnName) : null;
+
+            if (validString && validColumn) {
+                return String.format(stringValue.toString(), columnValue);
+            } else if (validString) {
+                return stringValue;
+            } else if (validColumn) {
+                return columnValue;
+            } else {
+                return null;
+            }
+        }
+
+        @Override
+        public String toString() {
+            return this.getClass().getSimpleName()
+                    + " mStringRes=" + mStringRes
+                    + " mColumnName" + mColumnName;
+        }
+
+        @NeededForTesting
+        public String getColumnNameForTest() {
+            return mColumnName;
+        }
+    }
+
+    public static abstract class CommonInflater implements StringInflater {
+        protected abstract int getTypeLabelResource(Integer type);
+
+        protected boolean isCustom(Integer type) {
+            return type == BaseTypes.TYPE_CUSTOM;
+        }
+
+        protected String getTypeColumn() {
+            return Phone.TYPE;
+        }
+
+        protected String getLabelColumn() {
+            return Phone.LABEL;
+        }
+
+        protected CharSequence getTypeLabel(Resources res, Integer type, CharSequence label) {
+            final int labelRes = getTypeLabelResource(type);
+            if (type == null) {
+                return res.getText(labelRes);
+            } else if (isCustom(type)) {
+                return res.getString(labelRes, label == null ? "" : label);
+            } else {
+                return res.getText(labelRes);
+            }
+        }
+
+        @Override
+        public CharSequence inflateUsing(Context context, ContentValues values) {
+            final Integer type = values.getAsInteger(getTypeColumn());
+            final String label = values.getAsString(getLabelColumn());
+            return getTypeLabel(context.getResources(), type, label);
+        }
+
+        @Override
+        public String toString() {
+            return this.getClass().getSimpleName();
+        }
+    }
+
+    public static class PhoneActionInflater extends CommonInflater {
+        @Override
+        protected boolean isCustom(Integer type) {
+            return ContactDisplayUtils.isCustomPhoneType(type);
+        }
+
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            return ContactDisplayUtils.getPhoneLabelResourceId(type);
+        }
+    }
+
+    public static class PhoneActionAltInflater extends CommonInflater {
+        @Override
+        protected boolean isCustom(Integer type) {
+            return ContactDisplayUtils.isCustomPhoneType(type);
+        }
+
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            return ContactDisplayUtils.getSmsLabelResourceId(type);
+        }
+    }
+
+    public static class EmailActionInflater extends CommonInflater {
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            if (type == null) return R.string.email;
+            switch (type) {
+                case Email.TYPE_HOME: return R.string.email_home;
+                case Email.TYPE_WORK: return R.string.email_work;
+                case Email.TYPE_OTHER: return R.string.email_other;
+                case Email.TYPE_MOBILE: return R.string.email_mobile;
+                default: return R.string.email_custom;
+            }
+        }
+    }
+
+    public static class EventActionInflater extends CommonInflater {
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            return Event.getTypeResource(type);
+        }
+    }
+
+    public static class RelationActionInflater extends CommonInflater {
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            return Relation.getTypeLabelResource(type == null ? Relation.TYPE_CUSTOM : type);
+        }
+    }
+
+    public static class PostalActionInflater extends CommonInflater {
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            if (type == null) return R.string.map_other;
+            switch (type) {
+                case StructuredPostal.TYPE_HOME: return R.string.map_home;
+                case StructuredPostal.TYPE_WORK: return R.string.map_work;
+                case StructuredPostal.TYPE_OTHER: return R.string.map_other;
+                default: return R.string.map_custom;
+            }
+        }
+    }
+
+    public static class ImActionInflater extends CommonInflater {
+        @Override
+        protected String getTypeColumn() {
+            return Im.PROTOCOL;
+        }
+
+        @Override
+        protected String getLabelColumn() {
+            return Im.CUSTOM_PROTOCOL;
+        }
+
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            if (type == null) return R.string.chat;
+            switch (type) {
+                case Im.PROTOCOL_AIM: return R.string.chat_aim;
+                case Im.PROTOCOL_MSN: return R.string.chat_msn;
+                case Im.PROTOCOL_YAHOO: return R.string.chat_yahoo;
+                case Im.PROTOCOL_SKYPE: return R.string.chat_skype;
+                case Im.PROTOCOL_QQ: return R.string.chat_qq;
+                case Im.PROTOCOL_GOOGLE_TALK: return R.string.chat_gtalk;
+                case Im.PROTOCOL_ICQ: return R.string.chat_icq;
+                case Im.PROTOCOL_JABBER: return R.string.chat_jabber;
+                case Im.PROTOCOL_NETMEETING: return R.string.chat;
+                default: return R.string.chat;
+            }
+        }
+    }
+
+    public static final StringInflater ORGANIZATION_BODY_INFLATER = new StringInflater() {
+        @Override
+        public CharSequence inflateUsing(Context context, ContentValues values) {
+            final CharSequence companyValue = values.containsKey(Organization.COMPANY) ?
+                    values.getAsString(Organization.COMPANY) : null;
+            final CharSequence titleValue = values.containsKey(Organization.TITLE) ?
+                    values.getAsString(Organization.TITLE) : null;
+
+            if (companyValue != null && titleValue != null) {
+                return companyValue +  ": " + titleValue;
+            } else if (companyValue == null) {
+                return titleValue;
+            } else {
+                return companyValue;
+            }
+        }
+    };
+
+    @Override
+    public boolean isGroupMembershipEditable() {
+        return false;
+    }
+
+    /**
+     * Parses the content of the EditSchema tag in contacts.xml.
+     */
+    protected final void parseEditSchema(Context context, XmlPullParser parser, AttributeSet attrs)
+            throws XmlPullParserException, IOException, DefinitionException {
+
+        final int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            final int depth = parser.getDepth();
+            if (type != XmlPullParser.START_TAG || depth != outerDepth + 1) {
+                continue; // Not direct child tag
+            }
+
+            final String tag = parser.getName();
+
+            if (Tag.DATA_KIND.equals(tag)) {
+                for (DataKind kind : KindParser.INSTANCE.parseDataKindTag(context, parser, attrs)) {
+                    addKind(kind);
+                }
+            } else {
+                Log.w(TAG, "Skipping unknown tag " + tag);
+            }
+        }
+    }
+
+    // Utility methods to keep code shorter.
+    private static boolean getAttr(AttributeSet attrs, String attribute, boolean defaultValue) {
+        return attrs.getAttributeBooleanValue(null, attribute, defaultValue);
+    }
+
+    private static int getAttr(AttributeSet attrs, String attribute, int defaultValue) {
+        return attrs.getAttributeIntValue(null, attribute, defaultValue);
+    }
+
+    private static String getAttr(AttributeSet attrs, String attribute) {
+        return attrs.getAttributeValue(null, attribute);
+    }
+
+    // TODO Extract it to its own class, and move all KindBuilders to it as well.
+    private static class KindParser {
+        public static final KindParser INSTANCE = new KindParser();
+
+        private final Map<String, KindBuilder> mBuilders = Maps.newHashMap();
+
+        private KindParser() {
+            addBuilder(new NameKindBuilder());
+            addBuilder(new NicknameKindBuilder());
+            addBuilder(new PhoneKindBuilder());
+            addBuilder(new EmailKindBuilder());
+            addBuilder(new StructuredPostalKindBuilder());
+            addBuilder(new ImKindBuilder());
+            addBuilder(new OrganizationKindBuilder());
+            addBuilder(new PhotoKindBuilder());
+            addBuilder(new NoteKindBuilder());
+            addBuilder(new WebsiteKindBuilder());
+            addBuilder(new SipAddressKindBuilder());
+            addBuilder(new GroupMembershipKindBuilder());
+            addBuilder(new EventKindBuilder());
+            addBuilder(new RelationshipKindBuilder());
+        }
+
+        private void addBuilder(KindBuilder builder) {
+            mBuilders.put(builder.getTagName(), builder);
+        }
+
+        /**
+         * Takes a {@link XmlPullParser} at the start of a DataKind tag, parses it and returns
+         * {@link DataKind}s.  (Usually just one, but there are three for the "name" kind.)
+         *
+         * This method returns a list, because we need to add 3 kinds for the name data kind.
+         * (structured, display and phonetic)
+         */
+        public List<DataKind> parseDataKindTag(Context context, XmlPullParser parser,
+                AttributeSet attrs)
+                throws DefinitionException, XmlPullParserException, IOException {
+            final String kind = getAttr(attrs, Attr.KIND);
+            final KindBuilder builder = mBuilders.get(kind);
+            if (builder != null) {
+                return builder.parseDataKind(context, parser, attrs);
+            } else {
+                throw new DefinitionException("Undefined data kind '" + kind + "'");
+            }
+        }
+    }
+
+    private static abstract class KindBuilder {
+
+        public abstract String getTagName();
+
+        /**
+         * DataKind tag parser specific to each kind.  Subclasses must implement it.
+         */
+        public abstract List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException, IOException;
+
+        /**
+         * Creates a new {@link DataKind}, and also parses the child Type tags in the DataKind
+         * tag.
+         */
+        protected final DataKind newDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs, boolean isPseudo, String mimeType, String typeColumn,
+                int titleRes, int weight, StringInflater actionHeader, StringInflater actionBody)
+                throws DefinitionException, XmlPullParserException, IOException {
+
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Adding DataKind: " + mimeType);
+            }
+
+            final DataKind kind = new DataKind(mimeType, titleRes, weight, true);
+            kind.typeColumn = typeColumn;
+            kind.actionHeader = actionHeader;
+            kind.actionBody = actionBody;
+            kind.fieldList = Lists.newArrayList();
+
+            // Get more information from the tag...
+            // A pseudo data kind doesn't have corresponding tag the XML, so we skip this.
+            if (!isPseudo) {
+                kind.typeOverallMax = getAttr(attrs, Attr.MAX_OCCURRENCE, -1);
+
+                // Process "Type" tags.
+                // If a kind has the type column, contacts.xml must have at least one type
+                // definition.  Otherwise, it mustn't have a type definition.
+                if (kind.typeColumn != null) {
+                    // Parse and add types.
+                    kind.typeList = Lists.newArrayList();
+                    parseTypes(context, parser, attrs, kind, true);
+                    if (kind.typeList.size() == 0) {
+                        throw new DefinitionException(
+                                "Kind " + kind.mimeType + " must have at least one type");
+                    }
+                } else {
+                    // Make sure it has no types.
+                    parseTypes(context, parser, attrs, kind, false /* can't have types */);
+                }
+            }
+
+            return kind;
+        }
+
+        /**
+         * Parses Type elements in a DataKind element, and if {@code canHaveTypes} is true adds
+         * them to the given {@link DataKind}. Otherwise the {@link DataKind} can't have a type,
+         * so throws {@link DefinitionException}.
+         */
+        private void parseTypes(Context context, XmlPullParser parser, AttributeSet attrs,
+                DataKind kind, boolean canHaveTypes)
+                throws DefinitionException, XmlPullParserException, IOException {
+            final int outerDepth = parser.getDepth();
+            int type;
+            while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                    && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+                final int depth = parser.getDepth();
+                if (type != XmlPullParser.START_TAG || depth != outerDepth + 1) {
+                    continue; // Not direct child tag
+                }
+
+                final String tag = parser.getName();
+                if (Tag.TYPE.equals(tag)) {
+                    if (canHaveTypes) {
+                        kind.typeList.add(parseTypeTag(parser, attrs, kind));
+                    } else {
+                        throw new DefinitionException(
+                                "Kind " + kind.mimeType + " can't have types");
+                    }
+                } else {
+                    throw new DefinitionException("Unknown tag: " + tag);
+                }
+            }
+        }
+
+        /**
+         * Parses a single Type element and returns an {@link EditType} built from it.  Uses
+         * {@link #buildEditTypeForTypeTag} defined in subclasses to actually build an
+         * {@link EditType}.
+         */
+        private EditType parseTypeTag(XmlPullParser parser, AttributeSet attrs, DataKind kind)
+                throws DefinitionException {
+
+            final String typeName = getAttr(attrs, Attr.TYPE);
+
+            final EditType et = buildEditTypeForTypeTag(attrs, typeName);
+            if (et == null) {
+                throw new DefinitionException(
+                        "Undefined type '" + typeName + "' for data kind '" + kind.mimeType + "'");
+            }
+            et.specificMax = getAttr(attrs, Attr.MAX_OCCURRENCE, -1);
+
+            return et;
+        }
+
+        /**
+         * Returns an {@link EditType} for the given "type".  Subclasses may optionally use
+         * the attributes in the tag to set optional values.
+         * (e.g. "yearOptional" for the event kind)
+         */
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            return null;
+        }
+
+        protected final void throwIfList(DataKind kind) throws DefinitionException {
+            if (kind.typeOverallMax != 1) {
+                throw new DefinitionException(
+                        "Kind " + kind.mimeType + " must have 'overallMax=\"1\"'");
+            }
+        }
+    }
+
+    /**
+     * DataKind parser for Name. (structured, display, phonetic)
+     */
+    private static class NameKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "name";
+        }
+
+        private static void checkAttributeTrue(boolean value, String attrName)
+                throws DefinitionException {
+            if (!value) {
+                throw new DefinitionException(attrName + " must be true");
+            }
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+
+            // Build 3 data kinds:
+            // - StructuredName.CONTENT_ITEM_TYPE
+            // - DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME
+            // - DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME
+
+            final boolean displayOrderPrimary =
+                    context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
+
+            final boolean supportsDisplayName = getAttr(attrs, "supportsDisplayName", false);
+            final boolean supportsPrefix = getAttr(attrs, "supportsPrefix", false);
+            final boolean supportsMiddleName = getAttr(attrs, "supportsMiddleName", false);
+            final boolean supportsSuffix = getAttr(attrs, "supportsSuffix", false);
+            final boolean supportsPhoneticFamilyName =
+                    getAttr(attrs, "supportsPhoneticFamilyName", false);
+            final boolean supportsPhoneticMiddleName =
+                    getAttr(attrs, "supportsPhoneticMiddleName", false);
+            final boolean supportsPhoneticGivenName =
+                    getAttr(attrs, "supportsPhoneticGivenName", false);
+
+            // For now, every things must be supported.
+            checkAttributeTrue(supportsDisplayName, "supportsDisplayName");
+            checkAttributeTrue(supportsPrefix, "supportsPrefix");
+            checkAttributeTrue(supportsMiddleName, "supportsMiddleName");
+            checkAttributeTrue(supportsSuffix, "supportsSuffix");
+            checkAttributeTrue(supportsPhoneticFamilyName, "supportsPhoneticFamilyName");
+            checkAttributeTrue(supportsPhoneticMiddleName, "supportsPhoneticMiddleName");
+            checkAttributeTrue(supportsPhoneticGivenName, "supportsPhoneticGivenName");
+
+            final List<DataKind> kinds = Lists.newArrayList();
+
+            // Structured name
+            final DataKind ks = newDataKind(context, parser, attrs, false,
+                    StructuredName.CONTENT_ITEM_TYPE, null, R.string.nameLabelsGroup, Weight.NONE,
+                    new SimpleInflater(R.string.nameLabelsGroup),
+                    new SimpleInflater(Nickname.NAME));
+
+            throwIfList(ks);
+            kinds.add(ks);
+
+            // Note about setLongForm/setShortForm below.
+            // We need to set this only when the type supports display name. (=supportsDisplayName)
+            // Otherwise (i.e. Exchange) we don't set these flags, but instead make some fields
+            // "optional".
+
+            ks.fieldList.add(new EditField(StructuredName.DISPLAY_NAME, R.string.full_name,
+                    FLAGS_PERSON_NAME));
+            ks.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            ks.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            ks.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            ks.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            ks.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
+                    FLAGS_PERSON_NAME).setLongForm(true));
+            ks.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
+                    R.string.name_phonetic_family, FLAGS_PHONETIC));
+            ks.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
+                    R.string.name_phonetic_middle, FLAGS_PHONETIC));
+            ks.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
+                    R.string.name_phonetic_given, FLAGS_PHONETIC));
+
+            // Display name
+            final DataKind kd = newDataKind(context, parser, attrs, true,
+                    DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME, null,
+                    R.string.nameLabelsGroup, Weight.NONE,
+                    new SimpleInflater(R.string.nameLabelsGroup),
+                    new SimpleInflater(Nickname.NAME));
+            kd.typeOverallMax = 1;
+            kinds.add(kd);
+
+            kd.fieldList.add(new EditField(StructuredName.DISPLAY_NAME,
+                    R.string.full_name, FLAGS_PERSON_NAME).setShortForm(true));
+
+            if (!displayOrderPrimary) {
+                kd.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+            } else {
+                kd.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+                kd.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
+                        FLAGS_PERSON_NAME).setLongForm(true));
+            }
+
+            // Phonetic name
+            final DataKind kp = newDataKind(context, parser, attrs, true,
+                    DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME, null,
+                    R.string.name_phonetic, Weight.NONE,
+                    new SimpleInflater(R.string.nameLabelsGroup),
+                    new SimpleInflater(Nickname.NAME));
+            kp.typeOverallMax = 1;
+            kinds.add(kp);
+
+            // We may want to change the order depending on displayOrderPrimary too.
+            kp.fieldList.add(new EditField(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
+                    R.string.name_phonetic, FLAGS_PHONETIC).setShortForm(true));
+            kp.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
+                    R.string.name_phonetic_family, FLAGS_PHONETIC).setLongForm(true));
+            kp.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
+                    R.string.name_phonetic_middle, FLAGS_PHONETIC).setLongForm(true));
+            kp.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
+                    R.string.name_phonetic_given, FLAGS_PHONETIC).setLongForm(true));
+            return kinds;
+        }
+    }
+
+    private static class NicknameKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "nickname";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Nickname.CONTENT_ITEM_TYPE, null, R.string.nicknameLabelsGroup, Weight.NICKNAME,
+                    new SimpleInflater(R.string.nicknameLabelsGroup),
+                    new SimpleInflater(Nickname.NAME));
+
+            kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
+                    FLAGS_PERSON_NAME));
+
+            kind.defaultValues = new ContentValues();
+            kind.defaultValues.put(Nickname.TYPE, Nickname.TYPE_DEFAULT);
+
+            throwIfList(kind);
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    private static class PhoneKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "phone";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Phone.CONTENT_ITEM_TYPE, Phone.TYPE, R.string.phoneLabelsGroup, Weight.PHONE,
+                    new PhoneActionInflater(), new SimpleInflater(Phone.NUMBER));
+
+            kind.iconAltRes = R.drawable.ic_message_24dp_mirrored;
+            kind.iconAltDescriptionRes = R.string.sms;
+            kind.actionAltHeader = new PhoneActionAltInflater();
+
+            kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
+
+            return Lists.newArrayList(kind);
+        }
+
+        /** Just to avoid line-wrapping... */
+        protected static EditType build(int type, boolean secondary) {
+            return new EditType(type, Phone.getTypeLabelResource(type)).setSecondary(secondary);
+        }
+
+        @Override
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            if ("home".equals(type)) return build(Phone.TYPE_HOME, false);
+            if ("mobile".equals(type)) return build(Phone.TYPE_MOBILE, false);
+            if ("work".equals(type)) return build(Phone.TYPE_WORK, false);
+            if ("fax_work".equals(type)) return build(Phone.TYPE_FAX_WORK, true);
+            if ("fax_home".equals(type)) return build(Phone.TYPE_FAX_HOME, true);
+            if ("pager".equals(type)) return build(Phone.TYPE_PAGER, true);
+            if ("other".equals(type)) return build(Phone.TYPE_OTHER, false);
+            if ("callback".equals(type)) return build(Phone.TYPE_CALLBACK, true);
+            if ("car".equals(type)) return build(Phone.TYPE_CAR, true);
+            if ("company_main".equals(type)) return build(Phone.TYPE_COMPANY_MAIN, true);
+            if ("isdn".equals(type)) return build(Phone.TYPE_ISDN, true);
+            if ("main".equals(type)) return build(Phone.TYPE_MAIN, true);
+            if ("other_fax".equals(type)) return build(Phone.TYPE_OTHER_FAX, true);
+            if ("radio".equals(type)) return build(Phone.TYPE_RADIO, true);
+            if ("telex".equals(type)) return build(Phone.TYPE_TELEX, true);
+            if ("tty_tdd".equals(type)) return build(Phone.TYPE_TTY_TDD, true);
+            if ("work_mobile".equals(type)) return build(Phone.TYPE_WORK_MOBILE, true);
+            if ("work_pager".equals(type)) return build(Phone.TYPE_WORK_PAGER, true);
+
+            // Note "assistant" used to be a custom column for the fallback type, but not anymore.
+            if ("assistant".equals(type)) return build(Phone.TYPE_ASSISTANT, true);
+            if ("mms".equals(type)) return build(Phone.TYPE_MMS, true);
+            if ("custom".equals(type)) {
+                return build(Phone.TYPE_CUSTOM, true).setCustomColumn(Phone.LABEL);
+            }
+            return null;
+        }
+    }
+
+    private static class EmailKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "email";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Email.CONTENT_ITEM_TYPE, Email.TYPE, R.string.emailLabelsGroup, Weight.EMAIL,
+                    new EmailActionInflater(), new SimpleInflater(Email.DATA));
+            kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
+
+            return Lists.newArrayList(kind);
+        }
+
+        @Override
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            // EditType is mutable, so we need to create a new instance every time.
+            if ("home".equals(type)) return buildEmailType(Email.TYPE_HOME);
+            if ("work".equals(type)) return buildEmailType(Email.TYPE_WORK);
+            if ("other".equals(type)) return buildEmailType(Email.TYPE_OTHER);
+            if ("mobile".equals(type)) return buildEmailType(Email.TYPE_MOBILE);
+            if ("custom".equals(type)) {
+                return buildEmailType(Email.TYPE_CUSTOM)
+                        .setSecondary(true).setCustomColumn(Email.LABEL);
+            }
+            return null;
+        }
+    }
+
+    private static class StructuredPostalKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "postal";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    StructuredPostal.CONTENT_ITEM_TYPE, StructuredPostal.TYPE,
+                    R.string.postalLabelsGroup, Weight.STRUCTURED_POSTAL,
+                    new PostalActionInflater(),
+                    new SimpleInflater(StructuredPostal.FORMATTED_ADDRESS));
+
+            if (getAttr(attrs, "needsStructured", false)) {
+                if (Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage())) {
+                    // Japanese order
+                    kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
+                            R.string.postal_country, FLAGS_POSTAL).setOptional(true));
+                    kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
+                            R.string.postal_postcode, FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.REGION,
+                            R.string.postal_region, FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.CITY,
+                            R.string.postal_city,FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.STREET,
+                            R.string.postal_street, FLAGS_POSTAL));
+                } else {
+                    // Generic order
+                    kind.fieldList.add(new EditField(StructuredPostal.STREET,
+                            R.string.postal_street, FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.CITY,
+                            R.string.postal_city,FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.REGION,
+                            R.string.postal_region, FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
+                            R.string.postal_postcode, FLAGS_POSTAL));
+                    kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
+                            R.string.postal_country, FLAGS_POSTAL).setOptional(true));
+                }
+            } else {
+                kind.maxLinesForDisplay= MAX_LINES_FOR_POSTAL_ADDRESS;
+                kind.fieldList.add(
+                        new EditField(StructuredPostal.FORMATTED_ADDRESS, R.string.postal_address,
+                                FLAGS_POSTAL));
+            }
+
+            return Lists.newArrayList(kind);
+        }
+
+        @Override
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            // EditType is mutable, so we need to create a new instance every time.
+            if ("home".equals(type)) return buildPostalType(StructuredPostal.TYPE_HOME);
+            if ("work".equals(type)) return buildPostalType(StructuredPostal.TYPE_WORK);
+            if ("other".equals(type)) return buildPostalType(StructuredPostal.TYPE_OTHER);
+            if ("custom".equals(type)) {
+                return buildPostalType(StructuredPostal.TYPE_CUSTOM)
+                        .setSecondary(true).setCustomColumn(Email.LABEL);
+            }
+            return null;
+        }
+    }
+
+    private static class ImKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "im";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+
+            // IM is special:
+            // - It uses "protocol" as the custom label field
+            // - Its TYPE is fixed to TYPE_OTHER
+
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Im.CONTENT_ITEM_TYPE, Im.PROTOCOL, R.string.imLabelsGroup, Weight.IM,
+                    new ImActionInflater(), new SimpleInflater(Im.DATA) // header / action
+                    );
+            kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
+
+            kind.defaultValues = new ContentValues();
+            kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
+
+            return Lists.newArrayList(kind);
+        }
+
+        @Override
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            if ("aim".equals(type)) return buildImType(Im.PROTOCOL_AIM);
+            if ("msn".equals(type)) return buildImType(Im.PROTOCOL_MSN);
+            if ("yahoo".equals(type)) return buildImType(Im.PROTOCOL_YAHOO);
+            if ("skype".equals(type)) return buildImType(Im.PROTOCOL_SKYPE);
+            if ("qq".equals(type)) return buildImType(Im.PROTOCOL_QQ);
+            if ("google_talk".equals(type)) return buildImType(Im.PROTOCOL_GOOGLE_TALK);
+            if ("icq".equals(type)) return buildImType(Im.PROTOCOL_ICQ);
+            if ("jabber".equals(type)) return buildImType(Im.PROTOCOL_JABBER);
+            if ("custom".equals(type)) {
+                return buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true)
+                        .setCustomColumn(Im.CUSTOM_PROTOCOL);
+            }
+            return null;
+        }
+    }
+
+    private static class OrganizationKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "organization";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Organization.CONTENT_ITEM_TYPE, null, R.string.organizationLabelsGroup,
+                    Weight.ORGANIZATION,
+                    new SimpleInflater(R.string.organizationLabelsGroup),
+                    ORGANIZATION_BODY_INFLATER);
+
+            kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
+                    FLAGS_GENERIC_NAME));
+            kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
+                    FLAGS_GENERIC_NAME));
+
+            throwIfList(kind);
+
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    private static class PhotoKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "photo";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Photo.CONTENT_ITEM_TYPE, null /* no type */, Weight.NONE, -1,
+                    null, null // no header, no body
+                    );
+
+            kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
+
+            throwIfList(kind);
+
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    private static class NoteKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "note";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Note.CONTENT_ITEM_TYPE, null, R.string.label_notes, Weight.NOTE,
+                    new SimpleInflater(R.string.label_notes), new SimpleInflater(Note.NOTE));
+
+            kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
+            kind.maxLinesForDisplay = MAX_LINES_FOR_NOTE;
+
+            throwIfList(kind);
+
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    private static class WebsiteKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "website";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Website.CONTENT_ITEM_TYPE, null, R.string.websiteLabelsGroup, Weight.WEBSITE,
+                    new SimpleInflater(R.string.websiteLabelsGroup),
+                    new SimpleInflater(Website.URL));
+
+            kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup,
+                    FLAGS_WEBSITE));
+
+            kind.defaultValues = new ContentValues();
+            kind.defaultValues.put(Website.TYPE, Website.TYPE_OTHER);
+
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    private static class SipAddressKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "sip_address";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    SipAddress.CONTENT_ITEM_TYPE, null, R.string.label_sip_address,
+                    Weight.SIP_ADDRESS,
+                    new SimpleInflater(R.string.label_sip_address),
+                    new SimpleInflater(SipAddress.SIP_ADDRESS));
+
+            kind.fieldList.add(new EditField(SipAddress.SIP_ADDRESS,
+                    R.string.label_sip_address, FLAGS_SIP_ADDRESS));
+
+            throwIfList(kind);
+
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    private static class GroupMembershipKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "group_membership";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    GroupMembership.CONTENT_ITEM_TYPE, null,
+                    R.string.groupsLabel, Weight.GROUP_MEMBERSHIP, null, null);
+
+            kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1));
+            kind.maxLinesForDisplay = MAX_LINES_FOR_GROUP;
+
+            throwIfList(kind);
+
+            return Lists.newArrayList(kind);
+        }
+    }
+
+    /**
+     * Event DataKind parser.
+     *
+     * Event DataKind is used only for Google/Exchange types, so this parser is not used for now.
+     */
+    private static class EventKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "event";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Event.CONTENT_ITEM_TYPE, Event.TYPE, R.string.eventLabelsGroup, Weight.EVENT,
+                    new EventActionInflater(), new SimpleInflater(Event.START_DATE));
+
+            kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
+
+            if (getAttr(attrs, Attr.DATE_WITH_TIME, false)) {
+                kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_AND_TIME_FORMAT;
+                kind.dateFormatWithYear = CommonDateUtils.DATE_AND_TIME_FORMAT;
+            } else {
+                kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT;
+                kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT;
+            }
+
+            return Lists.newArrayList(kind);
+        }
+
+        @Override
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            final boolean yo = getAttr(attrs, Attr.YEAR_OPTIONAL, false);
+
+            if ("birthday".equals(type)) {
+                return buildEventType(Event.TYPE_BIRTHDAY, yo).setSpecificMax(1);
+            }
+            if ("anniversary".equals(type)) return buildEventType(Event.TYPE_ANNIVERSARY, yo);
+            if ("other".equals(type)) return buildEventType(Event.TYPE_OTHER, yo);
+            if ("custom".equals(type)) {
+                return buildEventType(Event.TYPE_CUSTOM, yo)
+                        .setSecondary(true).setCustomColumn(Event.LABEL);
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Relationship DataKind parser.
+     *
+     * Relationship DataKind is used only for Google/Exchange types, so this parser is not used for
+     * now.
+     */
+    private static class RelationshipKindBuilder extends KindBuilder {
+        @Override
+        public String getTagName() {
+            return "relationship";
+        }
+
+        @Override
+        public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
+                AttributeSet attrs) throws DefinitionException, XmlPullParserException,
+                IOException {
+            final DataKind kind = newDataKind(context, parser, attrs, false,
+                    Relation.CONTENT_ITEM_TYPE, Relation.TYPE,
+                    R.string.relationLabelsGroup, Weight.RELATIONSHIP,
+                    new RelationActionInflater(), new SimpleInflater(Relation.NAME));
+
+            kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup,
+                    FLAGS_RELATION));
+
+            kind.defaultValues = new ContentValues();
+            kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE);
+
+            return Lists.newArrayList(kind);
+        }
+
+        @Override
+        protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
+            // EditType is mutable, so we need to create a new instance every time.
+            if ("assistant".equals(type)) return buildRelationType(Relation.TYPE_ASSISTANT);
+            if ("brother".equals(type)) return buildRelationType(Relation.TYPE_BROTHER);
+            if ("child".equals(type)) return buildRelationType(Relation.TYPE_CHILD);
+            if ("domestic_partner".equals(type)) {
+                    return buildRelationType(Relation.TYPE_DOMESTIC_PARTNER);
+            }
+            if ("father".equals(type)) return buildRelationType(Relation.TYPE_FATHER);
+            if ("friend".equals(type)) return buildRelationType(Relation.TYPE_FRIEND);
+            if ("manager".equals(type)) return buildRelationType(Relation.TYPE_MANAGER);
+            if ("mother".equals(type)) return buildRelationType(Relation.TYPE_MOTHER);
+            if ("parent".equals(type)) return buildRelationType(Relation.TYPE_PARENT);
+            if ("partner".equals(type)) return buildRelationType(Relation.TYPE_PARTNER);
+            if ("referred_by".equals(type)) return buildRelationType(Relation.TYPE_REFERRED_BY);
+            if ("relative".equals(type)) return buildRelationType(Relation.TYPE_RELATIVE);
+            if ("sister".equals(type)) return buildRelationType(Relation.TYPE_SISTER);
+            if ("spouse".equals(type)) return buildRelationType(Relation.TYPE_SPOUSE);
+            if ("custom".equals(type)) {
+                return buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true)
+                        .setCustomColumn(Relation.LABEL);
+            }
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/ExchangeAccountType.java b/src/com/android/contacts/common/model/account/ExchangeAccountType.java
new file mode 100644
index 0000000..7020836
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/ExchangeAccountType.java
@@ -0,0 +1,349 @@
+/*
+ * 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.contacts.common.model.account;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.CommonDateUtils;
+import com.google.common.collect.Lists;
+
+import java.util.Locale;
+
+public class ExchangeAccountType extends BaseAccountType {
+    private static final String TAG = "ExchangeAccountType";
+
+    private static final String ACCOUNT_TYPE_AOSP = "com.android.exchange";
+    private static final String ACCOUNT_TYPE_GOOGLE_1 = "com.google.android.exchange";
+    private static final String ACCOUNT_TYPE_GOOGLE_2 = "com.google.android.gm.exchange";
+
+    public ExchangeAccountType(Context context, String authenticatorPackageName, String type) {
+        this.accountType = type;
+        this.resourcePackageName = null;
+        this.syncAdapterPackageName = authenticatorPackageName;
+
+        try {
+            addDataKindStructuredName(context);
+            addDataKindDisplayName(context);
+            addDataKindPhoneticName(context);
+            addDataKindNickname(context);
+            addDataKindPhone(context);
+            addDataKindEmail(context);
+            addDataKindStructuredPostal(context);
+            addDataKindIm(context);
+            addDataKindOrganization(context);
+            addDataKindPhoto(context);
+            addDataKindNote(context);
+            addDataKindEvent(context);
+            addDataKindWebsite(context);
+            addDataKindGroupMembership(context);
+
+            mIsInitialized = true;
+        } catch (DefinitionException e) {
+            Log.e(TAG, "Problem building account type", e);
+        }
+    }
+
+    public static boolean isExchangeType(String type) {
+        return ACCOUNT_TYPE_AOSP.equals(type) || ACCOUNT_TYPE_GOOGLE_1.equals(type)
+                || ACCOUNT_TYPE_GOOGLE_2.equals(type);
+    }
+
+    @Override
+    protected DataKind addDataKindStructuredName(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
+                R.string.nameLabelsGroup, Weight.NONE, true));
+        kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
+        kind.actionBody = new SimpleInflater(Nickname.NAME);
+
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                FLAGS_PERSON_NAME).setOptional(true));
+        kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
+                R.string.name_family, FLAGS_PERSON_NAME));
+        kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
+                R.string.name_middle, FLAGS_PERSON_NAME));
+        kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
+                R.string.name_given, FLAGS_PERSON_NAME));
+        kind.fieldList.add(new EditField(StructuredName.SUFFIX,
+                R.string.name_suffix, FLAGS_PERSON_NAME));
+
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
+                R.string.name_phonetic_family, FLAGS_PHONETIC));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
+                R.string.name_phonetic_given, FLAGS_PHONETIC));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindDisplayName(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME,
+                R.string.nameLabelsGroup, Weight.NONE, true));
+
+        boolean displayOrderPrimary =
+                context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
+                FLAGS_PERSON_NAME).setOptional(true));
+        if (!displayOrderPrimary) {
+            kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
+                    R.string.name_family, FLAGS_PERSON_NAME));
+            kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
+                    R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true));
+            kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
+                    R.string.name_given, FLAGS_PERSON_NAME));
+        } else {
+            kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
+                    R.string.name_given, FLAGS_PERSON_NAME));
+            kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
+                    R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true));
+            kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
+                    R.string.name_family, FLAGS_PERSON_NAME));
+        }
+        kind.fieldList.add(new EditField(StructuredName.SUFFIX,
+                R.string.name_suffix, FLAGS_PERSON_NAME).setOptional(true));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindPhoneticName(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
+                R.string.name_phonetic, Weight.NONE, true));
+        kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
+        kind.actionBody = new SimpleInflater(Nickname.NAME);
+
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
+                R.string.name_phonetic_family, FLAGS_PHONETIC));
+        kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
+                R.string.name_phonetic_given, FLAGS_PHONETIC));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindNickname(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindNickname(context);
+
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
+                FLAGS_PERSON_NAME));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindPhone(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindPhone(context);
+
+        kind.typeColumn = Phone.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE).setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK).setSpecificMax(2));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true)
+                .setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true)
+                .setSpecificMax(1));
+        kind.typeList
+                .add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true).setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true).setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true)
+                .setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true).setSpecificMax(1));
+        kind.typeList
+                .add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true).setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true)
+                .setSpecificMax(1));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindEmail(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindEmail(context);
+
+        kind.typeOverallMax = 3;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindStructuredPostal(context);
+
+        final boolean useJapaneseOrder =
+            Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
+        kind.typeColumn = StructuredPostal.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK).setSpecificMax(1));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME).setSpecificMax(1));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER).setSpecificMax(1));
+
+        kind.fieldList = Lists.newArrayList();
+        if (useJapaneseOrder) {
+            kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
+                    R.string.postal_country, FLAGS_POSTAL).setOptional(true));
+            kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
+                    R.string.postal_postcode, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.REGION,
+                    R.string.postal_region, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.CITY,
+                    R.string.postal_city,FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.STREET,
+                    R.string.postal_street, FLAGS_POSTAL));
+        } else {
+            kind.fieldList.add(new EditField(StructuredPostal.STREET,
+                    R.string.postal_street, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.CITY,
+                    R.string.postal_city,FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.REGION,
+                    R.string.postal_region, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
+                    R.string.postal_postcode, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
+                    R.string.postal_country, FLAGS_POSTAL).setOptional(true));
+        }
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindIm(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindIm(context);
+
+        // Types are not supported for IM. There can be 3 IMs, but OWA only shows only the first
+        kind.typeOverallMax = 3;
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindOrganization(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindOrganization(context);
+
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
+                FLAGS_GENERIC_NAME));
+        kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
+                FLAGS_GENERIC_NAME));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindPhoto(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindPhoto(context);
+
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindNote(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindNote(context);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
+
+        return kind;
+    }
+
+    protected DataKind addDataKindEvent(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, R.string.eventLabelsGroup,
+                Weight.EVENT, true));
+        kind.actionHeader = new EventActionInflater();
+        kind.actionBody = new SimpleInflater(Event.START_DATE);
+
+        kind.typeOverallMax = 1;
+
+        kind.typeColumn = Event.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, false).setSpecificMax(1));
+
+        kind.dateFormatWithYear = CommonDateUtils.DATE_AND_TIME_FORMAT;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindWebsite(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindWebsite(context);
+
+        kind.typeOverallMax = 1;
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE));
+
+        return kind;
+    }
+
+    @Override
+    public boolean isGroupMembershipEditable() {
+        return true;
+    }
+
+    @Override
+    public boolean areContactsWritable() {
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/ExternalAccountType.java b/src/com/android/contacts/common/model/account/ExternalAccountType.java
new file mode 100644
index 0000000..1298fb3
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/ExternalAccountType.java
@@ -0,0 +1,441 @@
+/*
+ * 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.contacts.common.model.account;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.Xml;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.google.common.annotations.VisibleForTesting;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A general contacts account type descriptor.
+ */
+public class ExternalAccountType extends BaseAccountType {
+    private static final String TAG = "ExternalAccountType";
+
+    private static final String SYNC_META_DATA = "android.content.SyncAdapter";
+
+    /**
+     * The metadata name for so-called "contacts.xml".
+     *
+     * On LMP and later, we also accept the "alternate" name.
+     * This is to allow sync adapters to have a contacts.xml without making it visible on older
+     * platforms. If you modify this also update the corresponding list in
+     * ContactsProvider/PhotoPriorityResolver
+     */
+    private static final String[] METADATA_CONTACTS_NAMES = new String[] {
+            "android.provider.ALTERNATE_CONTACTS_STRUCTURE",
+            "android.provider.CONTACTS_STRUCTURE"
+    };
+
+    private static final String TAG_CONTACTS_SOURCE_LEGACY = "ContactsSource";
+    private static final String TAG_CONTACTS_ACCOUNT_TYPE = "ContactsAccountType";
+    private static final String TAG_CONTACTS_DATA_KIND = "ContactsDataKind";
+    private static final String TAG_EDIT_SCHEMA = "EditSchema";
+
+    private static final String ATTR_EDIT_CONTACT_ACTIVITY = "editContactActivity";
+    private static final String ATTR_CREATE_CONTACT_ACTIVITY = "createContactActivity";
+    private static final String ATTR_INVITE_CONTACT_ACTIVITY = "inviteContactActivity";
+    private static final String ATTR_INVITE_CONTACT_ACTION_LABEL = "inviteContactActionLabel";
+    private static final String ATTR_VIEW_CONTACT_NOTIFY_SERVICE = "viewContactNotifyService";
+    private static final String ATTR_VIEW_GROUP_ACTIVITY = "viewGroupActivity";
+    private static final String ATTR_VIEW_GROUP_ACTION_LABEL = "viewGroupActionLabel";
+    private static final String ATTR_DATA_SET = "dataSet";
+    private static final String ATTR_EXTENSION_PACKAGE_NAMES = "extensionPackageNames";
+
+    // The following attributes should only be set in non-sync-adapter account types.  They allow
+    // for the account type and resource IDs to be specified without an associated authenticator.
+    private static final String ATTR_ACCOUNT_TYPE = "accountType";
+    private static final String ATTR_ACCOUNT_LABEL = "accountTypeLabel";
+    private static final String ATTR_ACCOUNT_ICON = "accountTypeIcon";
+
+    private final boolean mIsExtension;
+
+    private String mEditContactActivityClassName;
+    private String mCreateContactActivityClassName;
+    private String mInviteContactActivity;
+    private String mInviteActionLabelAttribute;
+    private int mInviteActionLabelResId;
+    private String mViewContactNotifyService;
+    private String mViewGroupActivity;
+    private String mViewGroupLabelAttribute;
+    private int mViewGroupLabelResId;
+    private List<String> mExtensionPackageNames;
+    private String mAccountTypeLabelAttribute;
+    private String mAccountTypeIconAttribute;
+    private boolean mHasContactsMetadata;
+    private boolean mHasEditSchema;
+
+    public ExternalAccountType(Context context, String resPackageName, boolean isExtension) {
+        this(context, resPackageName, isExtension, null);
+    }
+
+    /**
+     * Constructor used for testing to initialize with any arbitrary XML.
+     *
+     * @param injectedMetadata If non-null, it'll be used to initialize the type.  Only set by
+     *     tests.  If null, the metadata is loaded from the specified package.
+     */
+    ExternalAccountType(Context context, String packageName, boolean isExtension,
+            XmlResourceParser injectedMetadata) {
+        this.mIsExtension = isExtension;
+        this.resourcePackageName = packageName;
+        this.syncAdapterPackageName = packageName;
+
+        final XmlResourceParser parser;
+        if (injectedMetadata == null) {
+            parser = loadContactsXml(context, packageName);
+        } else {
+            parser = injectedMetadata;
+        }
+        boolean needLineNumberInErrorLog = true;
+        try {
+            if (parser != null) {
+                inflate(context, parser);
+            }
+
+            // Done parsing; line number no longer needed in error log.
+            needLineNumberInErrorLog = false;
+            if (mHasEditSchema) {
+                checkKindExists(StructuredName.CONTENT_ITEM_TYPE);
+                checkKindExists(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME);
+                checkKindExists(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME);
+                checkKindExists(Photo.CONTENT_ITEM_TYPE);
+            } else {
+                // Bring in name and photo from fallback source, which are non-optional
+                addDataKindStructuredName(context);
+                addDataKindDisplayName(context);
+                addDataKindPhoneticName(context);
+                addDataKindPhoto(context);
+            }
+        } catch (DefinitionException e) {
+            final StringBuilder error = new StringBuilder();
+            error.append("Problem reading XML");
+            if (needLineNumberInErrorLog && (parser != null)) {
+                error.append(" in line ");
+                error.append(parser.getLineNumber());
+            }
+            error.append(" for external package ");
+            error.append(packageName);
+
+            Log.e(TAG, error.toString(), e);
+            return;
+        } finally {
+            if (parser != null) {
+                parser.close();
+            }
+        }
+
+        mExtensionPackageNames = new ArrayList<String>();
+        mInviteActionLabelResId = resolveExternalResId(context, mInviteActionLabelAttribute,
+                syncAdapterPackageName, ATTR_INVITE_CONTACT_ACTION_LABEL);
+        mViewGroupLabelResId = resolveExternalResId(context, mViewGroupLabelAttribute,
+                syncAdapterPackageName, ATTR_VIEW_GROUP_ACTION_LABEL);
+        titleRes = resolveExternalResId(context, mAccountTypeLabelAttribute,
+                syncAdapterPackageName, ATTR_ACCOUNT_LABEL);
+        iconRes = resolveExternalResId(context, mAccountTypeIconAttribute,
+                syncAdapterPackageName, ATTR_ACCOUNT_ICON);
+
+        // If we reach this point, the account type has been successfully initialized.
+        mIsInitialized = true;
+    }
+
+    /**
+     * Returns the CONTACTS_STRUCTURE metadata (aka "contacts.xml") in the given apk package.
+     *
+     * This method looks through all services in the package that handle sync adapter
+     * intents for the first one that contains CONTACTS_STRUCTURE metadata. We have to look
+     * through all sync adapters in the package in case there are contacts and other sync
+     * adapters (eg, calendar) in the same package.
+     *
+     * Returns {@code null} if the package has no CONTACTS_STRUCTURE metadata.  In this case
+     * the account type *will* be initialized with minimal configuration.
+     */
+    public static XmlResourceParser loadContactsXml(Context context, String resPackageName) {
+        final PackageManager pm = context.getPackageManager();
+        final Intent intent = new Intent(SYNC_META_DATA).setPackage(resPackageName);
+        final List<ResolveInfo> intentServices = pm.queryIntentServices(intent,
+                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
+
+        if (intentServices != null) {
+            for (final ResolveInfo resolveInfo : intentServices) {
+                final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+                if (serviceInfo == null) {
+                    continue;
+                }
+                for (String metadataName : METADATA_CONTACTS_NAMES) {
+                    final XmlResourceParser parser = serviceInfo.loadXmlMetaData(
+                            pm, metadataName);
+                    if (parser != null) {
+                        if (Log.isLoggable(TAG, Log.DEBUG)) {
+                            Log.d(TAG, String.format("Metadata loaded from: %s, %s, %s",
+                                    serviceInfo.packageName, serviceInfo.name,
+                                    metadataName));
+                        }
+                        return parser;
+                    }
+                }
+            }
+        }
+
+        // Package was found, but that doesn't contain the CONTACTS_STRUCTURE metadata.
+        return null;
+    }
+
+    /**
+     * Returns {@code TRUE} if the package contains CONTACTS_STRUCTURE metadata.
+     */
+    public static boolean hasContactsXml(Context context, String resPackageName) {
+        return loadContactsXml(context, resPackageName) != null;
+    }
+
+    private void checkKindExists(String mimeType) throws DefinitionException {
+        if (getKindForMimetype(mimeType) == null) {
+            throw new DefinitionException(mimeType + " must be supported");
+        }
+    }
+
+    @Override
+    public boolean isEmbedded() {
+        return false;
+    }
+
+    @Override
+    public boolean isExtension() {
+        return mIsExtension;
+    }
+
+    @Override
+    public boolean areContactsWritable() {
+        return mHasEditSchema;
+    }
+
+    /**
+     * Whether this account type has the android.provider.CONTACTS_STRUCTURE metadata xml.
+     */
+    public boolean hasContactsMetadata() {
+        return mHasContactsMetadata;
+    }
+
+    @Override
+    public String getEditContactActivityClassName() {
+        return mEditContactActivityClassName;
+    }
+
+    @Override
+    public String getCreateContactActivityClassName() {
+        return mCreateContactActivityClassName;
+    }
+
+    @Override
+    public String getInviteContactActivityClassName() {
+        return mInviteContactActivity;
+    }
+
+    @Override
+    protected int getInviteContactActionResId() {
+        return mInviteActionLabelResId;
+    }
+
+    @Override
+    public String getViewContactNotifyServiceClassName() {
+        return mViewContactNotifyService;
+    }
+
+    @Override
+    public String getViewGroupActivity() {
+        return mViewGroupActivity;
+    }
+
+    @Override
+    protected int getViewGroupLabelResId() {
+        return mViewGroupLabelResId;
+    }
+
+    @Override
+    public List<String> getExtensionPackageNames() {
+        return mExtensionPackageNames;
+    }
+
+    /**
+     * Inflate this {@link AccountType} from the given parser. This may only
+     * load details matching the publicly-defined schema.
+     */
+    protected void inflate(Context context, XmlPullParser parser) throws DefinitionException {
+        final AttributeSet attrs = Xml.asAttributeSet(parser);
+
+        try {
+            int type;
+            while ((type = parser.next()) != XmlPullParser.START_TAG
+                    && type != XmlPullParser.END_DOCUMENT) {
+                // Drain comments and whitespace
+            }
+
+            if (type != XmlPullParser.START_TAG) {
+                throw new IllegalStateException("No start tag found");
+            }
+
+            String rootTag = parser.getName();
+            if (!TAG_CONTACTS_ACCOUNT_TYPE.equals(rootTag) &&
+                    !TAG_CONTACTS_SOURCE_LEGACY.equals(rootTag)) {
+                throw new IllegalStateException("Top level element must be "
+                        + TAG_CONTACTS_ACCOUNT_TYPE + ", not " + rootTag);
+            }
+
+            mHasContactsMetadata = true;
+
+            int attributeCount = parser.getAttributeCount();
+            for (int i = 0; i < attributeCount; i++) {
+                String attr = parser.getAttributeName(i);
+                String value = parser.getAttributeValue(i);
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, attr + "=" + value);
+                }
+                if (ATTR_EDIT_CONTACT_ACTIVITY.equals(attr)) {
+                    mEditContactActivityClassName = value;
+                } else if (ATTR_CREATE_CONTACT_ACTIVITY.equals(attr)) {
+                    mCreateContactActivityClassName = value;
+                } else if (ATTR_INVITE_CONTACT_ACTIVITY.equals(attr)) {
+                    mInviteContactActivity = value;
+                } else if (ATTR_INVITE_CONTACT_ACTION_LABEL.equals(attr)) {
+                    mInviteActionLabelAttribute = value;
+                } else if (ATTR_VIEW_CONTACT_NOTIFY_SERVICE.equals(attr)) {
+                    mViewContactNotifyService = value;
+                } else if (ATTR_VIEW_GROUP_ACTIVITY.equals(attr)) {
+                    mViewGroupActivity = value;
+                } else if (ATTR_VIEW_GROUP_ACTION_LABEL.equals(attr)) {
+                    mViewGroupLabelAttribute = value;
+                } else if (ATTR_DATA_SET.equals(attr)) {
+                    dataSet = value;
+                } else if (ATTR_EXTENSION_PACKAGE_NAMES.equals(attr)) {
+                    mExtensionPackageNames.add(value);
+                } else if (ATTR_ACCOUNT_TYPE.equals(attr)) {
+                    accountType = value;
+                } else if (ATTR_ACCOUNT_LABEL.equals(attr)) {
+                    mAccountTypeLabelAttribute = value;
+                } else if (ATTR_ACCOUNT_ICON.equals(attr)) {
+                    mAccountTypeIconAttribute = value;
+                } else {
+                    Log.e(TAG, "Unsupported attribute " + attr);
+                }
+            }
+
+            // Parse all children kinds
+            final int startDepth = parser.getDepth();
+            while (((type = parser.next()) != XmlPullParser.END_TAG
+                        || parser.getDepth() > startDepth)
+                    && type != XmlPullParser.END_DOCUMENT) {
+
+                if (type != XmlPullParser.START_TAG || parser.getDepth() != startDepth + 1) {
+                    continue; // Not a direct child tag
+                }
+
+                String tag = parser.getName();
+                if (TAG_EDIT_SCHEMA.equals(tag)) {
+                    mHasEditSchema = true;
+                    parseEditSchema(context, parser, attrs);
+                } else if (TAG_CONTACTS_DATA_KIND.equals(tag)) {
+                    final TypedArray a = context.obtainStyledAttributes(attrs,
+                            R.styleable.ContactsDataKind);
+                    final DataKind kind = new DataKind();
+
+                    kind.mimeType = a
+                            .getString(R.styleable.ContactsDataKind_android_mimeType);
+                    final String summaryColumn = a.getString(
+                            R.styleable.ContactsDataKind_android_summaryColumn);
+                    if (summaryColumn != null) {
+                        // Inflate a specific column as summary when requested
+                        kind.actionHeader = new SimpleInflater(summaryColumn);
+                    }
+                    final String detailColumn = a.getString(
+                            R.styleable.ContactsDataKind_android_detailColumn);
+                    if (detailColumn != null) {
+                        // Inflate specific column as summary
+                        kind.actionBody = new SimpleInflater(detailColumn);
+                    }
+
+                    a.recycle();
+
+                    addKind(kind);
+                }
+            }
+        } catch (XmlPullParserException e) {
+            throw new DefinitionException("Problem reading XML", e);
+        } catch (IOException e) {
+            throw new DefinitionException("Problem reading XML", e);
+        }
+    }
+
+    /**
+     * Takes a string in the "@xxx/yyy" format and return the resource ID for the resource in
+     * the resource package.
+     *
+     * If the argument is in the invalid format or isn't a resource name, it returns -1.
+     *
+     * @param context context
+     * @param resourceName Resource name in the "@xxx/yyy" format, e.g. "@string/invite_lavbel"
+     * @param packageName name of the package containing the resource.
+     * @param xmlAttributeName attribute name which the resource came from.  Used for logging.
+     */
+    @VisibleForTesting
+    static int resolveExternalResId(Context context, String resourceName,
+            String packageName, String xmlAttributeName) {
+        if (TextUtils.isEmpty(resourceName)) {
+            return -1; // Empty text is okay.
+        }
+        if (resourceName.charAt(0) != '@') {
+            Log.e(TAG, xmlAttributeName + " must be a resource name beginnig with '@'");
+            return -1;
+        }
+        final String name = resourceName.substring(1);
+        final Resources res;
+        try {
+             res = context.getPackageManager().getResourcesForApplication(packageName);
+        } catch (NameNotFoundException e) {
+            Log.e(TAG, "Unable to load package " + packageName);
+            return -1;
+        }
+        final int resId = res.getIdentifier(name, null, packageName);
+        if (resId == 0) {
+            Log.e(TAG, "Unable to load " + resourceName + " from package " + packageName);
+            return -1;
+        }
+        return resId;
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/FallbackAccountType.java b/src/com/android/contacts/common/model/account/FallbackAccountType.java
new file mode 100644
index 0000000..42e6b6a
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/FallbackAccountType.java
@@ -0,0 +1,79 @@
+/*
+ * 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.contacts.common.model.account;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.testing.NeededForTesting;
+
+public class FallbackAccountType extends BaseAccountType {
+    private static final String TAG = "FallbackAccountType";
+
+    private FallbackAccountType(Context context, String resPackageName) {
+        this.accountType = null;
+        this.dataSet = null;
+        this.titleRes = R.string.account_phone;
+        this.iconRes = R.drawable.ic_device;
+
+        // Note those are only set for unit tests.
+        this.resourcePackageName = resPackageName;
+        this.syncAdapterPackageName = resPackageName;
+
+        try {
+            addDataKindStructuredName(context);
+            addDataKindDisplayName(context);
+            addDataKindPhoneticName(context);
+            addDataKindNickname(context);
+            addDataKindPhone(context);
+            addDataKindEmail(context);
+            addDataKindStructuredPostal(context);
+            addDataKindIm(context);
+            addDataKindOrganization(context);
+            addDataKindPhoto(context);
+            addDataKindNote(context);
+            addDataKindWebsite(context);
+            addDataKindSipAddress(context);
+            addDataKindGroupMembership(context);
+
+            mIsInitialized = true;
+        } catch (DefinitionException e) {
+            Log.e(TAG, "Problem building account type", e);
+        }
+    }
+
+    public FallbackAccountType(Context context) {
+        this(context, null);
+    }
+
+    /**
+     * Used to compare with an {@link ExternalAccountType} built from a test contacts.xml.
+     * In order to build {@link DataKind}s with the same resource package name,
+     * {@code resPackageName} is injectable.
+     */
+    @NeededForTesting
+    static AccountType createWithPackageNameForTest(Context context, String resPackageName) {
+        return new FallbackAccountType(context, resPackageName);
+    }
+
+    @Override
+    public boolean areContactsWritable() {
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/GoogleAccountType.java b/src/com/android/contacts/common/model/account/GoogleAccountType.java
new file mode 100644
index 0000000..8f7f172
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/GoogleAccountType.java
@@ -0,0 +1,204 @@
+/*
+ * 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.contacts.common.model.account;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.CommonDateUtils;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+public class GoogleAccountType extends BaseAccountType {
+    private static final String TAG = "GoogleAccountType";
+
+    /**
+     * The package name that we should load contacts.xml from and rely on to handle
+     * G+ account actions. Even though this points to gms, in some cases gms will still hand
+     * off responsibility to the G+ app.
+     */
+    public static final String PLUS_EXTENSION_PACKAGE_NAME = "com.google.android.gms";
+
+    public static final String ACCOUNT_TYPE = "com.google";
+
+    private static final List<String> mExtensionPackages =
+            Lists.newArrayList(PLUS_EXTENSION_PACKAGE_NAME);
+
+    public GoogleAccountType(Context context, String authenticatorPackageName) {
+        this.accountType = ACCOUNT_TYPE;
+        this.resourcePackageName = null;
+        this.syncAdapterPackageName = authenticatorPackageName;
+
+        try {
+            addDataKindStructuredName(context);
+            addDataKindDisplayName(context);
+            addDataKindPhoneticName(context);
+            addDataKindNickname(context);
+            addDataKindPhone(context);
+            addDataKindEmail(context);
+            addDataKindStructuredPostal(context);
+            addDataKindIm(context);
+            addDataKindOrganization(context);
+            addDataKindPhoto(context);
+            addDataKindNote(context);
+            addDataKindWebsite(context);
+            addDataKindSipAddress(context);
+            addDataKindGroupMembership(context);
+            addDataKindRelation(context);
+            addDataKindEvent(context);
+
+            mIsInitialized = true;
+        } catch (DefinitionException e) {
+            Log.e(TAG, "Problem building account type", e);
+        }
+    }
+
+    @Override
+    public List<String> getExtensionPackageNames() {
+        return mExtensionPackages;
+    }
+
+    @Override
+    protected DataKind addDataKindPhone(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindPhone(context);
+
+        kind.typeColumn = Phone.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(Phone.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindEmail(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindEmail(context);
+
+        kind.typeColumn = Email.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildEmailType(Email.TYPE_HOME));
+        kind.typeList.add(buildEmailType(Email.TYPE_WORK));
+        kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
+        kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(
+                Email.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
+
+    private DataKind addDataKindRelation(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE,
+                R.string.relationLabelsGroup, Weight.RELATIONSHIP, true));
+        kind.actionHeader = new RelationActionInflater();
+        kind.actionBody = new SimpleInflater(Relation.NAME);
+
+        kind.typeColumn = Relation.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT));
+        kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_CHILD));
+        kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_FATHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND));
+        kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_PARENT));
+        kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY));
+        kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE));
+        kind.typeList.add(buildRelationType(Relation.TYPE_SISTER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE));
+        kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(Relation.LABEL));
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup,
+                FLAGS_RELATION));
+
+        return kind;
+    }
+
+    private DataKind addDataKindEvent(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
+                    R.string.eventLabelsGroup, Weight.EVENT, true));
+        kind.actionHeader = new EventActionInflater();
+        kind.actionBody = new SimpleInflater(Event.START_DATE);
+
+        kind.typeColumn = Event.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT;
+        kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT;
+        kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1));
+        kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false));
+        kind.typeList.add(buildEventType(Event.TYPE_OTHER, false));
+        kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true)
+                .setCustomColumn(Event.LABEL));
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
+
+        return kind;
+    }
+
+    @Override
+    public boolean isGroupMembershipEditable() {
+        return true;
+    }
+
+    @Override
+    public boolean areContactsWritable() {
+        return true;
+    }
+
+    @Override
+    public String getViewContactNotifyServiceClassName() {
+        return "com.google.android.syncadapters.contacts." +
+                "SyncHighResPhotoIntentService";
+    }
+
+    @Override
+    public String getViewContactNotifyServicePackageName() {
+        return "com.google.android.syncadapters.contacts";
+    }
+}
diff --git a/src/com/android/contacts/common/model/account/SamsungAccountType.java b/src/com/android/contacts/common/model/account/SamsungAccountType.java
new file mode 100644
index 0000000..85a9ab8
--- /dev/null
+++ b/src/com/android/contacts/common/model/account/SamsungAccountType.java
@@ -0,0 +1,239 @@
+/*
+ * 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.contacts.common.model.account;
+
+import com.google.common.collect.Lists;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.CommonDateUtils;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.util.Log;
+
+import java.util.Locale;
+
+/**
+ * A writable account type that can be used to support samsung contacts. This may not perfectly
+ * match Samsung's latest intended account schema.
+ *
+ * This is only used to partially support Samsung accounts. The DataKind labels & fields are
+ * setup to support the values used by Samsung. But, not everything in the Samsung account type is
+ * supported. The Samsung account type includes a "Message Type" mimetype that we have no intention
+ * of showing inside the Contact editor. Similarly, we don't handle the "Ringtone" mimetype here
+ * since managing ringtones is handled in a different flow.
+ */
+public class SamsungAccountType extends BaseAccountType {
+    private static final String TAG = "KnownExternalAccountType";
+    private static final String ACCOUNT_TYPE_SAMSUNG = "com.osp.app.signin";
+
+    public SamsungAccountType(Context context, String authenticatorPackageName, String type) {
+        this.accountType = type;
+        this.resourcePackageName = null;
+        this.syncAdapterPackageName = authenticatorPackageName;
+
+        try {
+            addDataKindStructuredName(context);
+            addDataKindDisplayName(context);
+            addDataKindPhoneticName(context);
+            addDataKindNickname(context);
+            addDataKindPhone(context);
+            addDataKindEmail(context);
+            addDataKindStructuredPostal(context);
+            addDataKindIm(context);
+            addDataKindOrganization(context);
+            addDataKindPhoto(context);
+            addDataKindNote(context);
+            addDataKindWebsite(context);
+            addDataKindGroupMembership(context);
+            addDataKindRelation(context);
+            addDataKindEvent(context);
+
+            mIsInitialized = true;
+        } catch (DefinitionException e) {
+            Log.e(TAG, "Problem building account type", e);
+        }
+    }
+
+    /**
+     * Returns {@code TRUE} if this is samsung's account type and Samsung hasn't bothered to
+     * define a contacts.xml to provide a more accurate definition than ours.
+     */
+    public static boolean isSamsungAccountType(Context context, String type,
+            String packageName) {
+        return ACCOUNT_TYPE_SAMSUNG.equals(type)
+                && !ExternalAccountType.hasContactsXml(context, packageName);
+    }
+
+    @Override
+    protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindStructuredPostal(context);
+
+        final boolean useJapaneseOrder =
+                Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
+        kind.typeColumn = StructuredPostal.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK).setSpecificMax(1));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME).setSpecificMax(1));
+        kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER).setSpecificMax(1));
+
+        kind.fieldList = Lists.newArrayList();
+        if (useJapaneseOrder) {
+            kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
+                    R.string.postal_country, FLAGS_POSTAL).setOptional(true));
+            kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
+                    R.string.postal_postcode, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.REGION,
+                    R.string.postal_region, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.CITY,
+                    R.string.postal_city,FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.STREET,
+                    R.string.postal_street, FLAGS_POSTAL));
+        } else {
+            kind.fieldList.add(new EditField(StructuredPostal.STREET,
+                    R.string.postal_street, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.CITY,
+                    R.string.postal_city,FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.REGION,
+                    R.string.postal_region, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
+                    R.string.postal_postcode, FLAGS_POSTAL));
+            kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
+                    R.string.postal_country, FLAGS_POSTAL).setOptional(true));
+        }
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindPhone(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindPhone(context);
+
+        kind.typeColumn = Phone.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(Phone.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
+
+        return kind;
+    }
+
+    @Override
+    protected DataKind addDataKindEmail(Context context) throws DefinitionException {
+        final DataKind kind = super.addDataKindEmail(context);
+
+        kind.typeColumn = Email.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildEmailType(Email.TYPE_HOME));
+        kind.typeList.add(buildEmailType(Email.TYPE_WORK));
+        kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
+        kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(
+                Email.LABEL));
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
+
+        return kind;
+    }
+
+    private DataKind addDataKindRelation(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE,
+                R.string.relationLabelsGroup, 160, true));
+        kind.actionHeader = new RelationActionInflater();
+        kind.actionBody = new SimpleInflater(Relation.NAME);
+
+        kind.typeColumn = Relation.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT));
+        kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_CHILD));
+        kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_FATHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND));
+        kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_PARENT));
+        kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY));
+        kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE));
+        kind.typeList.add(buildRelationType(Relation.TYPE_SISTER));
+        kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE));
+        kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true)
+                .setCustomColumn(Relation.LABEL));
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup,
+                FLAGS_RELATION));
+
+        return kind;
+    }
+
+    private DataKind addDataKindEvent(Context context) throws DefinitionException {
+        DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
+                R.string.eventLabelsGroup, 150, true));
+        kind.actionHeader = new EventActionInflater();
+        kind.actionBody = new SimpleInflater(Event.START_DATE);
+
+        kind.typeColumn = Event.TYPE;
+        kind.typeList = Lists.newArrayList();
+        kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT;
+        kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT;
+        kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1));
+        kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false));
+        kind.typeList.add(buildEventType(Event.TYPE_OTHER, false));
+        kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true)
+                .setCustomColumn(Event.LABEL));
+
+        kind.defaultValues = new ContentValues();
+        kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY);
+
+        kind.fieldList = Lists.newArrayList();
+        kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
+
+        return kind;
+    }
+
+    @Override
+    public boolean isGroupMembershipEditable() {
+        return true;
+    }
+
+    @Override
+    public boolean areContactsWritable() {
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/DataItem.java b/src/com/android/contacts/common/model/dataitem/DataItem.java
new file mode 100644
index 0000000..4e66e32
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/DataItem.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import android.provider.ContactsContract.CommonDataKinds.Identity;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.provider.ContactsContract.Contacts.Data;
+import android.provider.ContactsContract.Contacts.Entity;
+
+import com.android.contacts.common.Collapser;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.model.RawContactModifier;
+
+/**
+ * This is the base class for data items, which represents a row from the Data table.
+ */
+public class DataItem implements Collapser.Collapsible<DataItem> {
+
+    private final ContentValues mContentValues;
+    protected DataKind mKind;
+
+    protected DataItem(ContentValues values) {
+        mContentValues = values;
+    }
+
+    /**
+     * Factory for creating subclasses of DataItem objects based on the mimetype in the
+     * content values.  Raw contact is the raw contact that this data item is associated with.
+     */
+    public static DataItem createFrom(ContentValues values) {
+        final String mimeType = values.getAsString(Data.MIMETYPE);
+        if (GroupMembership.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new GroupMembershipDataItem(values);
+        } else if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new StructuredNameDataItem(values);
+        } else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new PhoneDataItem(values);
+        } else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new EmailDataItem(values);
+        } else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new StructuredPostalDataItem(values);
+        } else if (Im.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new ImDataItem(values);
+        } else if (Organization.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new OrganizationDataItem(values);
+        } else if (Nickname.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new NicknameDataItem(values);
+        } else if (Note.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new NoteDataItem(values);
+        } else if (Website.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new WebsiteDataItem(values);
+        } else if (SipAddress.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new SipAddressDataItem(values);
+        } else if (Event.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new EventDataItem(values);
+        } else if (Relation.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new RelationDataItem(values);
+        } else if (Identity.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new IdentityDataItem(values);
+        } else if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            return new PhotoDataItem(values);
+        }
+
+        // generic
+        return new DataItem(values);
+    }
+
+    public ContentValues getContentValues() {
+        return mContentValues;
+    }
+
+    public void setRawContactId(long rawContactId) {
+        mContentValues.put(Data.RAW_CONTACT_ID, rawContactId);
+    }
+
+    public Long getRawContactId() {
+        return mContentValues.getAsLong(Data.RAW_CONTACT_ID);
+    }
+
+    /**
+     * Returns the data id.
+     */
+    public long getId() {
+        return mContentValues.getAsLong(Data._ID);
+    }
+
+    /**
+     * Returns the mimetype of the data.
+     */
+    public String getMimeType() {
+        return mContentValues.getAsString(Data.MIMETYPE);
+    }
+
+    public void setMimeType(String mimeType) {
+        mContentValues.put(Data.MIMETYPE, mimeType);
+    }
+
+    public boolean isPrimary() {
+        Integer primary = mContentValues.getAsInteger(Data.IS_PRIMARY);
+        return primary != null && primary != 0;
+    }
+
+    public boolean isSuperPrimary() {
+        Integer superPrimary = mContentValues.getAsInteger(Data.IS_SUPER_PRIMARY);
+        return superPrimary != null && superPrimary != 0;
+    }
+
+    public boolean hasKindTypeColumn(DataKind kind) {
+        final String key = kind.typeColumn;
+        return key != null && mContentValues.containsKey(key) &&
+            mContentValues.getAsInteger(key) != null;
+    }
+
+    public int getKindTypeColumn(DataKind kind) {
+        final String key = kind.typeColumn;
+        return mContentValues.getAsInteger(key);
+    }
+
+    /**
+     * Indicates the carrier presence value for the current {@link DataItem}.
+     *
+     * @return {@link Data#CARRIER_PRESENCE_VT_CAPABLE} if the {@link DataItem} supports carrier
+     *      video calling, {@code 0} otherwise.
+     */
+    public int getCarrierPresence() {
+        final Integer value = mContentValues.getAsInteger(Data.CARRIER_PRESENCE);
+        return value != null ? value.intValue() : 0;
+    }
+
+    /**
+     * This builds the data string depending on the type of data item by using the generic
+     * DataKind object underneath.
+     */
+    public String buildDataString(Context context, DataKind kind) {
+        if (kind.actionBody == null) {
+            return null;
+        }
+        CharSequence actionBody = kind.actionBody.inflateUsing(context, mContentValues);
+        return actionBody == null ? null : actionBody.toString();
+    }
+
+    /**
+     * This builds the data string(intended for display) depending on the type of data item. It
+     * returns the same value as {@link #buildDataString} by default, but certain data items can
+     * override it to provide their version of formatted data strings.
+     *
+     * @return Data string representing the data item, possibly formatted for display
+     */
+    public String buildDataStringForDisplay(Context context, DataKind kind) {
+        return buildDataString(context, kind);
+    }
+
+    public void setDataKind(DataKind kind) {
+        mKind = kind;
+    }
+
+    public DataKind getDataKind() {
+        return mKind;
+    }
+
+    public Integer getTimesUsed() {
+        return mContentValues.getAsInteger(Entity.TIMES_USED);
+    }
+
+    public Long getLastTimeUsed() {
+        return mContentValues.getAsLong(Entity.LAST_TIME_USED);
+    }
+
+    @Override
+    public void collapseWith(DataItem that) {
+        DataKind thisKind = getDataKind();
+        DataKind thatKind = that.getDataKind();
+        // If this does not have a type and that does, or if that's type is higher precedence,
+        // use that's type
+        if ((!hasKindTypeColumn(thisKind) && that.hasKindTypeColumn(thatKind)) ||
+                that.hasKindTypeColumn(thatKind) &&
+                RawContactModifier.getTypePrecedence(thisKind, getKindTypeColumn(thisKind))
+                >
+                RawContactModifier.getTypePrecedence(thatKind, that.getKindTypeColumn(thatKind))) {
+            mContentValues.put(thatKind.typeColumn, that.getKindTypeColumn(thatKind));
+            mKind = thatKind;
+        }
+
+        // Choose the max of the maxLines and maxLabelLines values.
+        mKind.maxLinesForDisplay = Math.max(thisKind.maxLinesForDisplay,
+                thatKind.maxLinesForDisplay);
+
+        // If any of the collapsed entries are super primary make the whole thing super primary.
+        if (isSuperPrimary() || that.isSuperPrimary()) {
+            mContentValues.put(Data.IS_SUPER_PRIMARY, 1);
+            mContentValues.put(Data.IS_PRIMARY, 1);
+        }
+
+        // If any of the collapsed entries are primary make the whole thing primary.
+        if (isPrimary() || that.isPrimary()) {
+            mContentValues.put(Data.IS_PRIMARY, 1);
+        }
+
+        // Add up the times used
+        mContentValues.put(Entity.TIMES_USED, (getTimesUsed() == null ? 0 : getTimesUsed()) +
+                (that.getTimesUsed() == null ? 0 : that.getTimesUsed()));
+
+        // Use the most recent time
+        mContentValues.put(Entity.LAST_TIME_USED,
+                Math.max(getLastTimeUsed() == null ? 0 : getLastTimeUsed(),
+                        that.getLastTimeUsed() == null ? 0 : that.getLastTimeUsed()));
+    }
+
+    @Override
+    public boolean shouldCollapseWith(DataItem t, Context context) {
+        if (mKind == null || t.getDataKind() == null) {
+            return false;
+        }
+        return MoreContactUtils.shouldCollapse(getMimeType(), buildDataString(context, mKind),
+                t.getMimeType(), t.buildDataString(context, t.getDataKind()));
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/DataKind.java b/src/com/android/contacts/common/model/dataitem/DataKind.java
new file mode 100644
index 0000000..e4b6aea
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/DataKind.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract.Data;
+
+import com.android.contacts.common.model.account.AccountType.EditField;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.AccountType.StringInflater;
+import com.google.common.collect.Iterators;
+
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/**
+ * Description of a specific data type, usually marked by a unique
+ * {@link Data#MIMETYPE}. Includes details about how to view and edit
+ * {@link Data} rows of this kind, including the possible {@link EditType}
+ * labels and editable {@link EditField}.
+ */
+public final class DataKind {
+
+    public static final String PSEUDO_MIME_TYPE_DISPLAY_NAME = "#displayName";
+    public static final String PSEUDO_MIME_TYPE_PHONETIC_NAME = "#phoneticName";
+    public static final String PSEUDO_COLUMN_PHONETIC_NAME = "#phoneticName";
+
+    public String resourcePackageName;
+    public String mimeType;
+    public int titleRes;
+    public int iconAltRes;
+    public int iconAltDescriptionRes;
+    public int weight;
+    public boolean editable;
+
+    public StringInflater actionHeader;
+    public StringInflater actionAltHeader;
+    public StringInflater actionBody;
+
+    public String typeColumn;
+
+    /**
+     * Maximum number of values allowed in the list. -1 represents infinity.
+     */
+    public int typeOverallMax;
+
+    public List<EditType> typeList;
+    public List<EditField> fieldList;
+
+    public ContentValues defaultValues;
+
+    /**
+     * If this is a date field, this specifies the format of the date when saving. The
+     * date includes year, month and day. If this is not a date field or the date field is not
+     * editable, this value should be ignored.
+     */
+    public SimpleDateFormat dateFormatWithoutYear;
+
+    /**
+     * If this is a date field, this specifies the format of the date when saving. The
+     * date includes month and day. If this is not a date field, the field is not editable or
+     * dates without year are not supported, this value should be ignored.
+     */
+    public SimpleDateFormat dateFormatWithYear;
+
+    /**
+     * The number of lines available for displaying this kind of data.
+     * Defaults to 1.
+     */
+    public int maxLinesForDisplay;
+
+    public DataKind() {
+        maxLinesForDisplay = 1;
+    }
+
+    public DataKind(String mimeType, int titleRes, int weight, boolean editable) {
+        this.mimeType = mimeType;
+        this.titleRes = titleRes;
+        this.weight = weight;
+        this.editable = editable;
+        this.typeOverallMax = -1;
+        maxLinesForDisplay = 1;
+    }
+
+    public String getKindString(Context context) {
+        return (titleRes == -1 || titleRes == 0) ? "" : context.getString(titleRes);
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("DataKind:");
+        sb.append(" resPackageName=").append(resourcePackageName);
+        sb.append(" mimeType=").append(mimeType);
+        sb.append(" titleRes=").append(titleRes);
+        sb.append(" iconAltRes=").append(iconAltRes);
+        sb.append(" iconAltDescriptionRes=").append(iconAltDescriptionRes);
+        sb.append(" weight=").append(weight);
+        sb.append(" editable=").append(editable);
+        sb.append(" actionHeader=").append(actionHeader);
+        sb.append(" actionAltHeader=").append(actionAltHeader);
+        sb.append(" actionBody=").append(actionBody);
+        sb.append(" typeColumn=").append(typeColumn);
+        sb.append(" typeOverallMax=").append(typeOverallMax);
+        sb.append(" typeList=").append(toString(typeList));
+        sb.append(" fieldList=").append(toString(fieldList));
+        sb.append(" defaultValues=").append(defaultValues);
+        sb.append(" dateFormatWithoutYear=").append(toString(dateFormatWithoutYear));
+        sb.append(" dateFormatWithYear=").append(toString(dateFormatWithYear));
+
+        return sb.toString();
+    }
+
+    public static String toString(SimpleDateFormat format) {
+        return format == null ? "(null)" : format.toPattern();
+    }
+
+    public static String toString(Iterable<?> list) {
+        if (list == null) {
+            return "(null)";
+        } else {
+            return Iterators.toString(list.iterator());
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/EmailDataItem.java b/src/com/android/contacts/common/model/dataitem/EmailDataItem.java
new file mode 100644
index 0000000..23efb01
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/EmailDataItem.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+
+/**
+ * Represents an email data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Email}.
+ */
+public class EmailDataItem extends DataItem {
+
+    /* package */ EmailDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getAddress() {
+        return getContentValues().getAsString(Email.ADDRESS);
+    }
+
+    public String getDisplayName() {
+        return getContentValues().getAsString(Email.DISPLAY_NAME);
+    }
+
+    public String getData() {
+        return getContentValues().getAsString(Email.DATA);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Email.LABEL);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/EventDataItem.java b/src/com/android/contacts/common/model/dataitem/EventDataItem.java
new file mode 100644
index 0000000..5096fea
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/EventDataItem.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.text.TextUtils;
+
+/**
+ * Represents an event data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Event}.
+ */
+public class EventDataItem extends DataItem {
+
+    /* package */ EventDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getStartDate() {
+        return getContentValues().getAsString(Event.START_DATE);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Event.LABEL);
+    }
+
+    @Override
+    public boolean shouldCollapseWith(DataItem t, Context context) {
+        if (!(t instanceof EventDataItem) || mKind == null || t.getDataKind() == null) {
+            return false;
+        }
+        final EventDataItem that = (EventDataItem) t;
+        // Events can be different (anniversary, birthday) but have the same start date
+        if (!TextUtils.equals(getStartDate(), that.getStartDate())) {
+            return false;
+        } else if (!hasKindTypeColumn(mKind) || !that.hasKindTypeColumn(that.getDataKind())) {
+            return hasKindTypeColumn(mKind) == that.hasKindTypeColumn(that.getDataKind());
+        } else if (getKindTypeColumn(mKind) != that.getKindTypeColumn(that.getDataKind())) {
+            return false;
+        } else if (getKindTypeColumn(mKind) == Event.TYPE_CUSTOM &&
+                !TextUtils.equals(getLabel(), that.getLabel())) {
+            // Check if custom types are not the same
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java b/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
new file mode 100644
index 0000000..41f19e6
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+
+/**
+ * Represents a group memebership data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.GroupMembership}.
+ */
+public class GroupMembershipDataItem extends DataItem {
+
+    /* package */ GroupMembershipDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public Long getGroupRowId() {
+        return getContentValues().getAsLong(GroupMembership.GROUP_ROW_ID);
+    }
+
+    public String getGroupSourceId() {
+        return getContentValues().getAsString(GroupMembership.GROUP_SOURCE_ID);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/IdentityDataItem.java b/src/com/android/contacts/common/model/dataitem/IdentityDataItem.java
new file mode 100644
index 0000000..29e9a40
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/IdentityDataItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Identity;
+
+/**
+ * Represents an identity data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Identity}.
+ */
+public class IdentityDataItem extends DataItem {
+
+    /* package */ IdentityDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getIdentity() {
+        return getContentValues().getAsString(Identity.IDENTITY);
+    }
+
+    public String getNamespace() {
+        return getContentValues().getAsString(Identity.NAMESPACE);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/ImDataItem.java b/src/com/android/contacts/common/model/dataitem/ImDataItem.java
new file mode 100644
index 0000000..f89e5c6
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/ImDataItem.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.text.TextUtils;
+
+/**
+ * Represents an IM data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Im}.
+ */
+public class ImDataItem extends DataItem {
+
+    private final boolean mCreatedFromEmail;
+
+    /* package */ ImDataItem(ContentValues values) {
+        super(values);
+        mCreatedFromEmail = false;
+    }
+
+    private ImDataItem(ContentValues values, boolean createdFromEmail) {
+        super(values);
+        mCreatedFromEmail = createdFromEmail;
+    }
+
+    public static ImDataItem createFromEmail(EmailDataItem item) {
+        final ImDataItem im = new ImDataItem(new ContentValues(item.getContentValues()), true);
+        im.setMimeType(Im.CONTENT_ITEM_TYPE);
+        return im;
+    }
+
+    public String getData() {
+        if (mCreatedFromEmail) {
+            return getContentValues().getAsString(Email.DATA);
+        } else {
+            return getContentValues().getAsString(Im.DATA);
+        }
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Im.LABEL);
+    }
+
+    /**
+     * Values are one of Im.PROTOCOL_
+     */
+    public Integer getProtocol() {
+        return getContentValues().getAsInteger(Im.PROTOCOL);
+    }
+
+    public boolean isProtocolValid() {
+        return getProtocol() != null;
+    }
+
+    public String getCustomProtocol() {
+        return getContentValues().getAsString(Im.CUSTOM_PROTOCOL);
+    }
+
+    public int getChatCapability() {
+        Integer result = getContentValues().getAsInteger(Im.CHAT_CAPABILITY);
+        return result == null ? 0 : result;
+    }
+
+    public boolean isCreatedFromEmail() {
+        return mCreatedFromEmail;
+    }
+
+    @Override
+    public boolean shouldCollapseWith(DataItem t, Context context) {
+        if (!(t instanceof ImDataItem) || mKind == null || t.getDataKind() == null) {
+            return false;
+        }
+        final ImDataItem that = (ImDataItem) t;
+        // IM can have the same data put different protocol. These should not collapse.
+        if (!getData().equals(that.getData())) {
+            return false;
+        } else if (!isProtocolValid() || !that.isProtocolValid()) {
+            // Deal with invalid protocol as if it was custom. If either has a non valid
+            // protocol, check to see if the other has a valid that is not custom
+            if (isProtocolValid()) {
+                return getProtocol() == Im.PROTOCOL_CUSTOM;
+            } else if (that.isProtocolValid()) {
+                return that.getProtocol() == Im.PROTOCOL_CUSTOM;
+            }
+            return true;
+        } else if (getProtocol() != that.getProtocol()) {
+            return false;
+        } else if (getProtocol() == Im.PROTOCOL_CUSTOM &&
+                !TextUtils.equals(getCustomProtocol(), that.getCustomProtocol())) {
+            // Check if custom protocols are not the same
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/NicknameDataItem.java b/src/com/android/contacts/common/model/dataitem/NicknameDataItem.java
new file mode 100644
index 0000000..e7f9d4a
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/NicknameDataItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+
+/**
+ * Represents a nickname data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Nickname}.
+ */
+public class NicknameDataItem extends DataItem {
+
+    public NicknameDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getName() {
+        return getContentValues().getAsString(Nickname.NAME);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Nickname.LABEL);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/NoteDataItem.java b/src/com/android/contacts/common/model/dataitem/NoteDataItem.java
new file mode 100644
index 0000000..3d71167
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/NoteDataItem.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+
+/**
+ * Represents a note data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Note}.
+ */
+public class NoteDataItem extends DataItem {
+
+    /* package */ NoteDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getNote() {
+        return getContentValues().getAsString(Note.NOTE);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/OrganizationDataItem.java b/src/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
new file mode 100644
index 0000000..37cd852
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+
+/**
+ * Represents an organization data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Organization}.
+ */
+public class OrganizationDataItem extends DataItem {
+
+    /* package */ OrganizationDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getCompany() {
+        return getContentValues().getAsString(Organization.COMPANY);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Organization.LABEL);
+    }
+
+    public String getTitle() {
+        return getContentValues().getAsString(Organization.TITLE);
+    }
+
+    public String getDepartment() {
+        return getContentValues().getAsString(Organization.DEPARTMENT);
+    }
+
+    public String getJobDescription() {
+        return getContentValues().getAsString(Organization.JOB_DESCRIPTION);
+    }
+
+    public String getSymbol() {
+        return getContentValues().getAsString(Organization.SYMBOL);
+    }
+
+    public String getPhoneticName() {
+        return getContentValues().getAsString(Organization.PHONETIC_NAME);
+    }
+
+    public String getOfficeLocation() {
+        return getContentValues().getAsString(Organization.OFFICE_LOCATION);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/PhoneDataItem.java b/src/com/android/contacts/common/model/dataitem/PhoneDataItem.java
new file mode 100644
index 0000000..d6aa2a9
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/PhoneDataItem.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.model.dataitem.DataKind;
+
+/**
+ * Represents a phone data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Phone}.
+ */
+public class PhoneDataItem extends DataItem {
+
+    public static final String KEY_FORMATTED_PHONE_NUMBER = "formattedPhoneNumber";
+
+    /* package */ PhoneDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getNumber() {
+        return getContentValues().getAsString(Phone.NUMBER);
+    }
+
+    /**
+     * Returns the normalized phone number in E164 format.
+     */
+    public String getNormalizedNumber() {
+        return getContentValues().getAsString(Phone.NORMALIZED_NUMBER);
+    }
+
+    public String getFormattedPhoneNumber() {
+        return getContentValues().getAsString(KEY_FORMATTED_PHONE_NUMBER);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Phone.LABEL);
+    }
+
+    public void computeFormattedPhoneNumber(String defaultCountryIso) {
+        final String phoneNumber = getNumber();
+        if (phoneNumber != null) {
+            final String formattedPhoneNumber = PhoneNumberUtilsCompat.formatNumber(phoneNumber,
+                    getNormalizedNumber(), defaultCountryIso);
+            getContentValues().put(KEY_FORMATTED_PHONE_NUMBER, formattedPhoneNumber);
+        }
+    }
+
+    /**
+     * Returns the formatted phone number (if already computed using {@link
+     * #computeFormattedPhoneNumber}). Otherwise this method returns the unformatted phone number.
+     */
+    @Override
+    public String buildDataStringForDisplay(Context context, DataKind kind) {
+        final String formatted = getFormattedPhoneNumber();
+        if (formatted != null) {
+            return formatted;
+        } else {
+            return getNumber();
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/PhotoDataItem.java b/src/com/android/contacts/common/model/dataitem/PhotoDataItem.java
new file mode 100644
index 0000000..a61218b
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/PhotoDataItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts.Photo;
+
+/**
+ * Represents a photo data item, wrapping the columns in
+ * {@link ContactsContract.Contacts.Photo}.
+ */
+public class PhotoDataItem extends DataItem {
+
+    /* package */ PhotoDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public Long getPhotoFileId() {
+        return getContentValues().getAsLong(Photo.PHOTO_FILE_ID);
+    }
+
+    public byte[] getPhoto() {
+        return getContentValues().getAsByteArray(Photo.PHOTO);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/RelationDataItem.java b/src/com/android/contacts/common/model/dataitem/RelationDataItem.java
new file mode 100644
index 0000000..9e883fe
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/RelationDataItem.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.text.TextUtils;
+
+/**
+ * Represents a relation data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Relation}.
+ */
+public class RelationDataItem extends DataItem {
+
+    /* package */ RelationDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getName() {
+        return getContentValues().getAsString(Relation.NAME);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Relation.LABEL);
+    }
+
+    @Override
+    public boolean shouldCollapseWith(DataItem t, Context context) {
+        if (!(t instanceof RelationDataItem) || mKind == null || t.getDataKind() == null) {
+            return false;
+        }
+        final RelationDataItem that = (RelationDataItem) t;
+        // Relations can have different types (assistant, father) but have the same name
+        if (!TextUtils.equals(getName(), that.getName())) {
+            return false;
+        } else if (!hasKindTypeColumn(mKind) || !that.hasKindTypeColumn(that.getDataKind())) {
+            return hasKindTypeColumn(mKind) == that.hasKindTypeColumn(that.getDataKind());
+        } else if (getKindTypeColumn(mKind) != that.getKindTypeColumn(that.getDataKind())) {
+            return false;
+        } else if (getKindTypeColumn(mKind) == Relation.TYPE_CUSTOM &&
+                !TextUtils.equals(getLabel(), that.getLabel())) {
+            // Check if custom types are not the same
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/SipAddressDataItem.java b/src/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
new file mode 100644
index 0000000..ec704fc
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+
+/**
+ * Represents a sip address data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.SipAddress}.
+ */
+public class SipAddressDataItem extends DataItem {
+
+    /* package */ SipAddressDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getSipAddress() {
+        return getContentValues().getAsString(SipAddress.SIP_ADDRESS);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(SipAddress.LABEL);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java b/src/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
new file mode 100644
index 0000000..4d463da
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.Contacts.Data;
+
+/**
+ * Represents a structured name data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.StructuredName}.
+ */
+public class StructuredNameDataItem extends DataItem {
+
+    public StructuredNameDataItem() {
+        super(new ContentValues());
+        getContentValues().put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+    }
+
+    /* package */ StructuredNameDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getDisplayName() {
+        return getContentValues().getAsString(StructuredName.DISPLAY_NAME);
+    }
+
+    public void setDisplayName(String name) {
+        getContentValues().put(StructuredName.DISPLAY_NAME, name);
+    }
+
+    public String getGivenName() {
+        return getContentValues().getAsString(StructuredName.GIVEN_NAME);
+    }
+
+    public String getFamilyName() {
+        return getContentValues().getAsString(StructuredName.FAMILY_NAME);
+    }
+
+    public String getPrefix() {
+        return getContentValues().getAsString(StructuredName.PREFIX);
+    }
+
+    public String getMiddleName() {
+        return getContentValues().getAsString(StructuredName.MIDDLE_NAME);
+    }
+
+    public String getSuffix() {
+        return getContentValues().getAsString(StructuredName.SUFFIX);
+    }
+
+    public String getPhoneticGivenName() {
+        return getContentValues().getAsString(StructuredName.PHONETIC_GIVEN_NAME);
+    }
+
+    public String getPhoneticMiddleName() {
+        return getContentValues().getAsString(StructuredName.PHONETIC_MIDDLE_NAME);
+    }
+
+    public String getPhoneticFamilyName() {
+        return getContentValues().getAsString(StructuredName.PHONETIC_FAMILY_NAME);
+    }
+
+    public String getFullNameStyle() {
+        return getContentValues().getAsString(StructuredName.FULL_NAME_STYLE);
+    }
+
+    public void setPhoneticFamilyName(String name) {
+        getContentValues().put(StructuredName.PHONETIC_FAMILY_NAME, name);
+    }
+
+    public void setPhoneticMiddleName(String name) {
+        getContentValues().put(StructuredName.PHONETIC_MIDDLE_NAME, name);
+    }
+
+    public void setPhoneticGivenName(String name) {
+        getContentValues().put(StructuredName.PHONETIC_GIVEN_NAME, name);
+    }
+
+    public boolean isSuperPrimary() {
+        final ContentValues contentValues = getContentValues();
+        return contentValues == null || !contentValues.containsKey(StructuredName.IS_SUPER_PRIMARY)
+                ? false : contentValues.getAsBoolean(StructuredName.IS_SUPER_PRIMARY);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java b/src/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
new file mode 100644
index 0000000..6cfc0c1
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+
+/**
+ * Represents a structured postal data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.StructuredPostal}.
+ */
+public class StructuredPostalDataItem extends DataItem {
+
+    /* package */ StructuredPostalDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getFormattedAddress() {
+        return getContentValues().getAsString(StructuredPostal.FORMATTED_ADDRESS);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(StructuredPostal.LABEL);
+    }
+
+    public String getStreet() {
+        return getContentValues().getAsString(StructuredPostal.STREET);
+    }
+
+    public String getPOBox() {
+        return getContentValues().getAsString(StructuredPostal.POBOX);
+    }
+
+    public String getNeighborhood() {
+        return getContentValues().getAsString(StructuredPostal.NEIGHBORHOOD);
+    }
+
+    public String getCity() {
+        return getContentValues().getAsString(StructuredPostal.CITY);
+    }
+
+    public String getRegion() {
+        return getContentValues().getAsString(StructuredPostal.REGION);
+    }
+
+    public String getPostcode() {
+        return getContentValues().getAsString(StructuredPostal.POSTCODE);
+    }
+
+    public String getCountry() {
+        return getContentValues().getAsString(StructuredPostal.COUNTRY);
+    }
+}
diff --git a/src/com/android/contacts/common/model/dataitem/WebsiteDataItem.java b/src/com/android/contacts/common/model/dataitem/WebsiteDataItem.java
new file mode 100644
index 0000000..0939421
--- /dev/null
+++ b/src/com/android/contacts/common/model/dataitem/WebsiteDataItem.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+
+/**
+ * Represents a website data item, wrapping the columns in
+ * {@link ContactsContract.CommonDataKinds.Website}.
+ */
+public class WebsiteDataItem extends DataItem {
+
+    /* package */ WebsiteDataItem(ContentValues values) {
+        super(values);
+    }
+
+    public String getUrl() {
+        return getContentValues().getAsString(Website.URL);
+    }
+
+    public String getLabel() {
+        return getContentValues().getAsString(Website.LABEL);
+    }
+}
diff --git a/src/com/android/contacts/common/preference/AboutPreferenceFragment.java b/src/com/android/contacts/common/preference/AboutPreferenceFragment.java
new file mode 100644
index 0000000..3b5a28d
--- /dev/null
+++ b/src/com/android/contacts/common/preference/AboutPreferenceFragment.java
@@ -0,0 +1,104 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.widget.Toast;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.activity.LicenseActivity;
+
+/**
+ * This fragment shows the preferences for "about".
+ */
+public class AboutPreferenceFragment extends PreferenceFragment {
+
+    private static final String PRIVACY_POLICY_URL = "http://www.google.com/policies/privacy";
+    private static final String TERMS_OF_SERVICE_URL = "http://www.google.com/policies/terms";
+
+    public static AboutPreferenceFragment newInstance() {
+        return new AboutPreferenceFragment();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preference_about);
+
+        // Set build version of Contacts App.
+        final PackageManager manager = getActivity().getPackageManager();
+        try {
+            final PackageInfo info = manager.getPackageInfo(getActivity().getPackageName(), 0);
+            final Preference versionPreference = findPreference(
+                    getString(R.string.pref_build_version_key));
+            versionPreference.setSummary(info.versionName);
+        } catch (PackageManager.NameNotFoundException e) {
+            // Nothing
+        }
+
+        final Preference licensePreference = findPreference(
+                getString(R.string.pref_open_source_licenses_key));
+        licensePreference.setIntent(new Intent(getActivity(), LicenseActivity.class));
+
+        final Preference privacyPolicyPreference = findPreference("pref_privacy_policy");
+        final Preference termsOfServicePreference = findPreference("pref_terms_of_service");
+
+        final Preference.OnPreferenceClickListener listener =
+                new Preference.OnPreferenceClickListener() {
+            @Override
+            public boolean onPreferenceClick(Preference preference) {
+                try {
+                    if (preference == privacyPolicyPreference) {
+                        startActivityForUrl(PRIVACY_POLICY_URL);
+                    } else if (preference == termsOfServicePreference) {
+                        startActivityForUrl(TERMS_OF_SERVICE_URL);
+                    }
+                } catch (ActivityNotFoundException ex) {
+                    Toast.makeText(getContext(), getString(R.string.url_open_error_toast),
+                            Toast.LENGTH_SHORT).show();
+                }
+                return true;
+            }
+        };
+
+        privacyPolicyPreference.setOnPreferenceClickListener(listener);
+        termsOfServicePreference.setOnPreferenceClickListener(listener);
+    }
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    private void startActivityForUrl(String urlString) {
+        final Intent intent = new Intent();
+        intent.setAction(Intent.ACTION_VIEW);
+        intent.setData(Uri.parse(urlString));
+        startActivity(intent);
+    }
+}
+
diff --git a/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java b/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java
new file mode 100644
index 0000000..dbf3cb9
--- /dev/null
+++ b/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java
@@ -0,0 +1,142 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.app.ActionBar;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.provider.ContactsContract.ProviderStatus;
+import android.provider.ContactsContract.QuickContact;
+import android.text.TextUtils;
+import android.view.MenuItem;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.list.ProviderStatusWatcher;
+import com.android.contacts.common.preference.DisplayOptionsPreferenceFragment.ProfileListener;
+import com.android.contacts.common.preference.DisplayOptionsPreferenceFragment.ProfileQuery;
+
+/**
+ * Contacts settings.
+ */
+public final class ContactsPreferenceActivity extends PreferenceActivity implements
+        ProfileListener {
+
+    private static final String TAG_ABOUT = "about_contacts";
+    private static final String TAG_DISPLAY_OPTIONS = "display_options";
+
+    private String mNewLocalProfileExtra;
+    private String mPreviousScreenExtra;
+    private int mModeFullyExpanded;
+    private boolean mAreContactsAvailable;
+
+    private ProviderStatusWatcher mProviderStatusWatcher;
+
+    public static final String EXTRA_NEW_LOCAL_PROFILE = "newLocalProfile";
+    public static final String EXTRA_MODE_FULLY_EXPANDED = "modeFullyExpanded";
+    public static final String EXTRA_PREVIOUS_SCREEN_TYPE = "previousScreenType";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
+        }
+
+        mProviderStatusWatcher = ProviderStatusWatcher.getInstance(this);
+
+        mNewLocalProfileExtra = getIntent().getStringExtra(EXTRA_NEW_LOCAL_PROFILE);
+        mModeFullyExpanded = getIntent().getIntExtra(EXTRA_MODE_FULLY_EXPANDED,
+                QuickContact.MODE_LARGE);
+        mPreviousScreenExtra = getIntent().getStringExtra(EXTRA_PREVIOUS_SCREEN_TYPE);
+        final int providerStatus = mProviderStatusWatcher.getProviderStatus();
+        mAreContactsAvailable = providerStatus == ProviderStatus.STATUS_NORMAL;
+
+        if (savedInstanceState == null) {
+            final DisplayOptionsPreferenceFragment fragment = DisplayOptionsPreferenceFragment
+                    .newInstance(mNewLocalProfileExtra, mPreviousScreenExtra, mModeFullyExpanded,
+                            mAreContactsAvailable);
+            getFragmentManager().beginTransaction()
+                    .replace(android.R.id.content, fragment, TAG_DISPLAY_OPTIONS)
+                    .commit();
+            setActivityTitle(R.string.activity_title_settings);
+        } else {
+            final AboutPreferenceFragment aboutFragment = (AboutPreferenceFragment)
+                    getFragmentManager().findFragmentByTag(TAG_ABOUT);
+
+            if (aboutFragment != null) {
+                setActivityTitle(R.string.setting_about);
+            } else {
+                setActivityTitle(R.string.activity_title_settings);
+            }
+        }
+    }
+
+    protected void showAboutFragment() {
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, AboutPreferenceFragment.newInstance(), TAG_ABOUT)
+                .addToBackStack(null)
+                .commit();
+        setActivityTitle(R.string.setting_about);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            onBackPressed();
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void onBackPressed() {
+        if (getFragmentManager().getBackStackEntryCount() > 0) {
+            setActivityTitle(R.string.activity_title_settings);
+            getFragmentManager().popBackStack();
+        } else {
+            super.onBackPressed();
+        }
+    }
+
+    private void setActivityTitle(int res) {
+        final ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setTitle(res);
+        }
+    }
+
+    @Override
+    public void onProfileLoaded(Cursor cursor) {
+        boolean hasProfile = false;
+        String displayName = null;
+        long contactId = -1;
+        if (cursor != null && cursor.moveToFirst()) {
+            hasProfile = cursor.getInt(ProfileQuery.CONTACT_IS_USER_PROFILE) == 1;
+            displayName = cursor.getString(ProfileQuery.CONTACT_DISPLAY_NAME);
+            contactId = cursor.getLong(ProfileQuery.CONTACT_ID);
+        }
+        if (hasProfile && TextUtils.isEmpty(displayName)) {
+            displayName = getString(R.string.missing_name);
+        }
+        final DisplayOptionsPreferenceFragment fragment = (DisplayOptionsPreferenceFragment)
+                getFragmentManager().findFragmentByTag(TAG_DISPLAY_OPTIONS);
+        fragment.updateMyInfoPreference(hasProfile, displayName, contactId);
+    }
+}
diff --git a/src/com/android/contacts/common/preference/ContactsPreferences.java b/src/com/android/contacts/common/preference/ContactsPreferences.java
new file mode 100644
index 0000000..a8a9089
--- /dev/null
+++ b/src/com/android/contacts/common/preference/ContactsPreferences.java
@@ -0,0 +1,365 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.preference.PreferenceManager;
+import android.provider.ContactsContract;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.text.TextUtils;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Manages user preferences for contacts.
+ */
+public class ContactsPreferences implements OnSharedPreferenceChangeListener {
+
+    /**
+     * The value for the DISPLAY_ORDER key to show the given name first.
+     */
+    public static final int DISPLAY_ORDER_PRIMARY = 1;
+
+    /**
+     * The value for the DISPLAY_ORDER key to show the family name first.
+     */
+    public static final int DISPLAY_ORDER_ALTERNATIVE = 2;
+
+    public static final String DISPLAY_ORDER_KEY = "android.contacts.DISPLAY_ORDER";
+
+    /**
+     * The value for the SORT_ORDER key corresponding to sort by given name first.
+     */
+    public static final int SORT_ORDER_PRIMARY = 1;
+
+    public static final String SORT_ORDER_KEY = "android.contacts.SORT_ORDER";
+
+    /**
+     * The value for the SORT_ORDER key corresponding to sort by family name first.
+     */
+    public static final int SORT_ORDER_ALTERNATIVE = 2;
+
+    public static final String PREF_DISPLAY_ONLY_PHONES = "only_phones";
+
+    public static final boolean PREF_DISPLAY_ONLY_PHONES_DEFAULT = false;
+
+    public static final String DO_NOT_SYNC_CONTACT_METADATA_MSG = "Do not sync metadata";
+
+    public static final String CONTACT_METADATA_AUTHORITY = "com.android.contacts.metadata";
+
+    public static final String SHOULD_CLEAR_METADATA_BEFORE_SYNCING =
+            "should_clear_metadata_before_syncing";
+
+    public static final String ONLY_CLEAR_DONOT_SYNC = "only_clear_donot_sync";
+    /**
+     * Value to use when a preference is unassigned and needs to be read from the shared preferences
+     */
+    private static final int PREFERENCE_UNASSIGNED = -1;
+
+    private final Context mContext;
+    private int mSortOrder = PREFERENCE_UNASSIGNED;
+    private int mDisplayOrder = PREFERENCE_UNASSIGNED;
+    private String mDefaultAccount = null;
+    private ChangeListener mListener = null;
+    private Handler mHandler;
+    private final SharedPreferences mPreferences;
+    private String mDefaultAccountKey;
+    private String mDefaultAccountSavedKey;
+
+    public ContactsPreferences(Context context) {
+        mContext = context;
+        mHandler = new Handler();
+        mPreferences = mContext.getSharedPreferences(context.getPackageName(),
+                Context.MODE_PRIVATE);
+        mDefaultAccountKey = mContext.getResources().getString(
+                R.string.contact_editor_default_account_key);
+        mDefaultAccountSavedKey = mContext.getResources().getString(
+                R.string.contact_editor_anything_saved_key);
+        maybeMigrateSystemSettings();
+    }
+
+    public boolean isSortOrderUserChangeable() {
+        return mContext.getResources().getBoolean(R.bool.config_sort_order_user_changeable);
+    }
+
+    public int getDefaultSortOrder() {
+        if (mContext.getResources().getBoolean(R.bool.config_default_sort_order_primary)) {
+            return SORT_ORDER_PRIMARY;
+        } else {
+            return SORT_ORDER_ALTERNATIVE;
+        }
+    }
+
+    public int getSortOrder() {
+        if (!isSortOrderUserChangeable()) {
+            return getDefaultSortOrder();
+        }
+        if (mSortOrder == PREFERENCE_UNASSIGNED) {
+            mSortOrder = mPreferences.getInt(SORT_ORDER_KEY, getDefaultSortOrder());
+        }
+        return mSortOrder;
+    }
+
+    public void setSortOrder(int sortOrder) {
+        mSortOrder = sortOrder;
+        final Editor editor = mPreferences.edit();
+        editor.putInt(SORT_ORDER_KEY, sortOrder);
+        editor.commit();
+    }
+
+    public boolean isDisplayOrderUserChangeable() {
+        return mContext.getResources().getBoolean(R.bool.config_display_order_user_changeable);
+    }
+
+    public int getDefaultDisplayOrder() {
+        if (mContext.getResources().getBoolean(R.bool.config_default_display_order_primary)) {
+            return DISPLAY_ORDER_PRIMARY;
+        } else {
+            return DISPLAY_ORDER_ALTERNATIVE;
+        }
+    }
+
+    public int getDisplayOrder() {
+        if (!isDisplayOrderUserChangeable()) {
+            return getDefaultDisplayOrder();
+        }
+        if (mDisplayOrder == PREFERENCE_UNASSIGNED) {
+            mDisplayOrder = mPreferences.getInt(DISPLAY_ORDER_KEY, getDefaultDisplayOrder());
+        }
+        return mDisplayOrder;
+    }
+
+    public void setDisplayOrder(int displayOrder) {
+        mDisplayOrder = displayOrder;
+        final Editor editor = mPreferences.edit();
+        editor.putInt(DISPLAY_ORDER_KEY, displayOrder);
+        editor.commit();
+    }
+
+    public boolean isDefaultAccountUserChangeable() {
+        return mContext.getResources().getBoolean(R.bool.config_default_account_user_changeable);
+    }
+
+    public String getDefaultAccount() {
+        if (!isDefaultAccountUserChangeable()) {
+            return mDefaultAccount;
+        }
+        if (TextUtils.isEmpty(mDefaultAccount)) {
+            final String accountString = mPreferences
+                    .getString(mDefaultAccountKey, mDefaultAccount);
+            if (!TextUtils.isEmpty(accountString)) {
+                final AccountWithDataSet accountWithDataSet = AccountWithDataSet.unstringify(
+                        accountString);
+                mDefaultAccount = accountWithDataSet.name;
+            }
+        }
+        return mDefaultAccount;
+    }
+
+    public void setDefaultAccount(AccountWithDataSet accountWithDataSet) {
+        mDefaultAccount = accountWithDataSet == null ? null : accountWithDataSet.name;
+        final Editor editor = mPreferences.edit();
+        if (TextUtils.isEmpty(mDefaultAccount)) {
+            editor.remove(mDefaultAccountKey);
+        } else {
+            editor.putString(mDefaultAccountKey, accountWithDataSet.stringify());
+        }
+        editor.putBoolean(mDefaultAccountSavedKey, true);
+        editor.commit();
+    }
+
+    public String getContactMetadataSyncAccountName() {
+        final Account syncAccount = getContactMetadataSyncAccount();
+        return syncAccount == null ? DO_NOT_SYNC_CONTACT_METADATA_MSG : syncAccount.name;
+    }
+
+    public void setContactMetadataSyncAccount(AccountWithDataSet accountWithDataSet) {
+        final String mContactMetadataSyncAccount =
+                accountWithDataSet == null ? null : accountWithDataSet.name;
+        requestMetadataSyncForAccount(mContactMetadataSyncAccount);
+    }
+
+    private Account getContactMetadataSyncAccount() {
+        for (Account account : getFocusGoogleAccounts()) {
+            if (ContentResolver.getIsSyncable(account, CONTACT_METADATA_AUTHORITY) == 1
+                    && ContentResolver.getSyncAutomatically(account, CONTACT_METADATA_AUTHORITY)) {
+                return account;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Turn on contact metadata sync for this {@param accountName} and turn off automatic sync
+     * for other accounts. If accountName is null, then turn off automatic sync for all accounts.
+     */
+    private void requestMetadataSyncForAccount(String accountName) {
+        for (Account account : getFocusGoogleAccounts()) {
+            if (!TextUtils.isEmpty(accountName) && accountName.equals(account.name)) {
+                // Request sync.
+                final Bundle b = new Bundle();
+                b.putBoolean(SHOULD_CLEAR_METADATA_BEFORE_SYNCING, true);
+                b.putBoolean(ONLY_CLEAR_DONOT_SYNC, false);
+                b.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
+                b.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
+                ContentResolver.requestSync(account, CONTACT_METADATA_AUTHORITY, b);
+
+                ContentResolver.setSyncAutomatically(account, CONTACT_METADATA_AUTHORITY, true);
+            } else if (ContentResolver.getSyncAutomatically(account, CONTACT_METADATA_AUTHORITY)) {
+                // Turn off automatic sync for previous sync account.
+                ContentResolver.setSyncAutomatically(account, CONTACT_METADATA_AUTHORITY, false);
+                if (TextUtils.isEmpty(accountName)) {
+                    // Request sync to clear old data.
+                    final Bundle b = new Bundle();
+                    b.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
+                    b.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
+                    b.putBoolean(SHOULD_CLEAR_METADATA_BEFORE_SYNCING, true);
+                    b.putBoolean(ONLY_CLEAR_DONOT_SYNC, true);
+                    ContentResolver.requestSync(account, CONTACT_METADATA_AUTHORITY, b);
+                }
+            }
+        }
+    }
+
+    /**
+     * @return google accounts with "com.google" account type and null data set.
+     */
+    private List<Account> getFocusGoogleAccounts() {
+        List<Account> focusGoogleAccounts = new ArrayList<Account>();
+        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(mContext);
+        List<AccountWithDataSet> accounts = accountTypeManager.getAccounts(true);
+        for (AccountWithDataSet account : accounts) {
+            if (GoogleAccountType.ACCOUNT_TYPE.equals(account.type) && account.dataSet == null) {
+                focusGoogleAccounts.add(account.getAccountOrNull());
+            }
+        }
+        return focusGoogleAccounts;
+    }
+
+    public void registerChangeListener(ChangeListener listener) {
+        if (mListener != null) unregisterChangeListener();
+
+        mListener = listener;
+
+        // Reset preferences to "unknown" because they may have changed while the
+        // listener was unregistered.
+        mDisplayOrder = PREFERENCE_UNASSIGNED;
+        mSortOrder = PREFERENCE_UNASSIGNED;
+        mDefaultAccount = null;
+
+        mPreferences.registerOnSharedPreferenceChangeListener(this);
+    }
+
+    public void unregisterChangeListener() {
+        if (mListener != null) {
+            mListener = null;
+        }
+
+        mPreferences.unregisterOnSharedPreferenceChangeListener(this);
+    }
+
+    @Override
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, final String key) {
+        // This notification is not sent on the Ui thread. Use the previously created Handler
+        // to switch to the Ui thread
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                refreshValue(key);
+            }
+        });
+    }
+
+    /**
+     * Forces the value for the given key to be looked up from shared preferences and notifies
+     * the registered {@link ChangeListener}
+     *
+     * @param key the {@link SharedPreferences} key to look up
+     */
+    public void refreshValue(String key) {
+        if (DISPLAY_ORDER_KEY.equals(key)) {
+            mDisplayOrder = PREFERENCE_UNASSIGNED;
+            mDisplayOrder = getDisplayOrder();
+        } else if (SORT_ORDER_KEY.equals(key)) {
+            mSortOrder = PREFERENCE_UNASSIGNED;
+            mSortOrder = getSortOrder();
+        } else if (mDefaultAccountKey.equals(key)) {
+            mDefaultAccount = null;
+            mDefaultAccount = getDefaultAccount();
+        }
+        if (mListener != null) mListener.onChange();
+    }
+
+    public interface ChangeListener {
+        void onChange();
+    }
+
+    /**
+     * If there are currently no preferences (which means this is the first time we are run),
+     * For sort order and display order, check to see if there are any preferences stored in
+     * system settings (pre-L) which can be copied into our own SharedPreferences.
+     * For default account setting, check to see if there are any preferences stored in the previous
+     * SharedPreferences which can be copied into current SharedPreferences.
+     */
+    private void maybeMigrateSystemSettings() {
+        if (!mPreferences.contains(SORT_ORDER_KEY)) {
+            int sortOrder = getDefaultSortOrder();
+            try {
+                 sortOrder = Settings.System.getInt(mContext.getContentResolver(),
+                        SORT_ORDER_KEY);
+            } catch (SettingNotFoundException e) {
+            }
+            setSortOrder(sortOrder);
+        }
+
+        if (!mPreferences.contains(DISPLAY_ORDER_KEY)) {
+            int displayOrder = getDefaultDisplayOrder();
+            try {
+                displayOrder = Settings.System.getInt(mContext.getContentResolver(),
+                        DISPLAY_ORDER_KEY);
+            } catch (SettingNotFoundException e) {
+            }
+            setDisplayOrder(displayOrder);
+        }
+
+        if (!mPreferences.contains(mDefaultAccountKey)) {
+            final SharedPreferences previousPrefs =
+                    PreferenceManager.getDefaultSharedPreferences(mContext);
+            final String defaultAccount = previousPrefs.getString(mDefaultAccountKey, null);
+            if (!TextUtils.isEmpty(defaultAccount)) {
+                final AccountWithDataSet accountWithDataSet = AccountWithDataSet.unstringify(
+                        defaultAccount);
+                setDefaultAccount(accountWithDataSet);
+            }
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/preference/DefaultAccountPreference.java b/src/com/android/contacts/common/preference/DefaultAccountPreference.java
new file mode 100644
index 0000000..2fc5c7b
--- /dev/null
+++ b/src/com/android/contacts/common/preference/DefaultAccountPreference.java
@@ -0,0 +1,106 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.preference.ListPreference;
+import android.util.AttributeSet;
+import android.view.View;
+
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class DefaultAccountPreference extends ListPreference {
+    private ContactsPreferences mPreferences;
+    private Map<String, AccountWithDataSet> mAccountMap;
+
+    public DefaultAccountPreference(Context context) {
+        super(context);
+        prepare();
+    }
+
+    public DefaultAccountPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        prepare();
+    }
+
+    @Override
+    protected View onCreateDialogView() {
+        prepare();
+        return super.onCreateDialogView();
+    }
+
+    private void prepare() {
+        mPreferences = new ContactsPreferences(getContext());
+        mAccountMap = new HashMap<>();
+        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(getContext());
+        List<AccountWithDataSet> accounts = accountTypeManager.getAccounts(true);
+        for (AccountWithDataSet account : accounts) {
+            mAccountMap.put(account.name, account);
+        }
+        final Set<String> accountNames = mAccountMap.keySet();
+        final String[] accountNamesArray = accountNames.toArray(new String[accountNames.size()]);
+        setEntries(accountNamesArray);
+        setEntryValues(accountNamesArray);
+        final String defaultAccount = String.valueOf(mPreferences.getDefaultAccount());
+        if (accounts.size() == 1) {
+            setValue(accounts.get(0).name);
+        } else if (accountNames.contains(defaultAccount)) {
+            setValue(defaultAccount);
+        } else {
+            setValue(null);
+        }
+    }
+
+    @Override
+    protected boolean shouldPersist() {
+        return false;   // This preference takes care of its own storage
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        return mPreferences.getDefaultAccount();
+    }
+
+    @Override
+    protected boolean persistString(String value) {
+        if (value == null && mPreferences.getDefaultAccount() == null) {
+            return true;
+        }
+        if (value == null || mPreferences.getDefaultAccount() == null
+                || !value.equals(mPreferences.getDefaultAccount())) {
+            mPreferences.setDefaultAccount(mAccountMap.get(value));
+            notifyChanged();
+        }
+        return true;
+    }
+
+    @Override
+    // UX recommendation is not to show cancel button on such lists.
+    protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
+        super.onPrepareDialogBuilder(builder);
+        builder.setNegativeButton(null, null);
+    }
+}
diff --git a/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
new file mode 100644
index 0000000..57229a4
--- /dev/null
+++ b/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
@@ -0,0 +1,362 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.app.Activity;
+import android.app.LoaderManager;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.Intent;
+import android.content.Loader;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.provider.BlockedNumberContract;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Profile;
+import android.telecom.TelecomManager;
+import android.telephony.TelephonyManager;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.TelecomManagerUtil;
+import com.android.contacts.common.compat.TelephonyManagerCompat;
+import com.android.contacts.common.interactions.ImportExportDialogFragment;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.ContactListFilterController;
+import com.android.contacts.common.logging.ScreenEvent.ScreenType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.AccountFilterUtil;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
+import com.android.contacts.commonbind.ObjectFactory;
+
+import java.util.List;
+
+/**
+ * This fragment shows the preferences for "display options"
+ */
+public class DisplayOptionsPreferenceFragment extends PreferenceFragment
+        implements Preference.OnPreferenceClickListener {
+
+    private static final int REQUEST_CODE_CUSTOM_CONTACTS_FILTER = 0;
+
+    private static final String ARG_CONTACTS_AVAILABLE = "are_contacts_available";
+    private static final String ARG_MODE_FULLY_EXPANDED = "mode_fully_expanded";
+    private static final String ARG_NEW_LOCAL_PROFILE = "new_local_profile";
+    private static final String ARG_PREVIOUS_SCREEN = "previous_screen";
+
+    private static final String KEY_ABOUT = "about";
+    private static final String KEY_ACCOUNTS = "accounts";
+    private static final String KEY_DEFAULT_ACCOUNT = "defaultAccount";
+    private static final String KEY_BLOCKED_NUMBERS = "blockedNumbers";
+    private static final String KEY_DISPLAY_ORDER = "displayOrder";
+    private static final String KEY_CUSTOM_CONTACTS_FILTER = "customContactsFilter";
+    private static final String KEY_IMPORT_EXPORT = "importExport";
+    private static final String KEY_MY_INFO = "myInfo";
+    private static final String KEY_SORT_ORDER = "sortOrder";
+
+    private static final int LOADER_PROFILE = 0;
+
+    /**
+     * Callbacks for hosts of the {@link DisplayOptionsPreferenceFragment}.
+     */
+    public interface ProfileListener  {
+        /**
+         * Invoked after profile has been loaded.
+         */
+        void onProfileLoaded(Cursor data);
+    }
+
+    /**
+     * The projections that are used to obtain user profile
+     */
+    public static class ProfileQuery {
+        /**
+         * Not instantiable.
+         */
+        private ProfileQuery() {}
+
+        private static final String[] PROFILE_PROJECTION_PRIMARY = new String[] {
+                Contacts._ID,                           // 0
+                Contacts.DISPLAY_NAME_PRIMARY,          // 1
+                Contacts.IS_USER_PROFILE,               // 2
+        };
+
+        private static final String[] PROFILE_PROJECTION_ALTERNATIVE = new String[] {
+                Contacts._ID,                           // 0
+                Contacts.DISPLAY_NAME_ALTERNATIVE,      // 1
+                Contacts.IS_USER_PROFILE,               // 2
+        };
+
+        public static final int CONTACT_ID               = 0;
+        public static final int CONTACT_DISPLAY_NAME     = 1;
+        public static final int CONTACT_IS_USER_PROFILE  = 2;
+    }
+
+    private String mNewLocalProfileExtra;
+    private String mPreviousScreenExtra;
+    private int mModeFullyExpanded;
+    private boolean mAreContactsAvailable;
+
+    private boolean mHasProfile;
+    private long mProfileContactId;
+
+    private Preference mMyInfoPreference;
+
+    private ProfileListener mListener;
+
+    private final LoaderManager.LoaderCallbacks<Cursor> mProfileLoaderListener =
+            new LoaderManager.LoaderCallbacks<Cursor>() {
+
+        @Override
+        public CursorLoader onCreateLoader(int id, Bundle args) {
+            final CursorLoader loader = createCursorLoader(getContext());
+            loader.setUri(Profile.CONTENT_URI);
+            loader.setProjection(getProjection(getContext()));
+            return loader;
+        }
+
+        @Override
+        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+            if (mListener != null) {
+                mListener.onProfileLoaded(data);
+            }
+        }
+
+        public void onLoaderReset(Loader<Cursor> loader) {
+        }
+    };
+
+    public static DisplayOptionsPreferenceFragment newInstance(String newLocalProfileExtra,
+            String previousScreenExtra, int modeFullyExpanded, boolean areContactsAvailable) {
+        final DisplayOptionsPreferenceFragment fragment = new DisplayOptionsPreferenceFragment();
+        final Bundle args = new Bundle();
+        args.putString(ARG_NEW_LOCAL_PROFILE, newLocalProfileExtra);
+        args.putString(ARG_PREVIOUS_SCREEN, previousScreenExtra);
+        args.putInt(ARG_MODE_FULLY_EXPANDED, modeFullyExpanded);
+        args.putBoolean(ARG_CONTACTS_AVAILABLE, areContactsAvailable);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (ProfileListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement ProfileListener");
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preference_display_options);
+
+        removeUnsupportedPreferences();
+        addExtraPreferences();
+
+        final Bundle args = getArguments();
+        mNewLocalProfileExtra = args.getString(ARG_NEW_LOCAL_PROFILE);
+        mPreviousScreenExtra = args.getString(ARG_PREVIOUS_SCREEN);
+        mModeFullyExpanded = args.getInt(ARG_MODE_FULLY_EXPANDED);
+        mAreContactsAvailable = args.getBoolean(ARG_CONTACTS_AVAILABLE);
+
+        mMyInfoPreference = findPreference(KEY_MY_INFO);
+
+        final Preference accountsPreference = findPreference(KEY_ACCOUNTS);
+        accountsPreference.setOnPreferenceClickListener(this);
+
+        final Preference importExportPreference = findPreference(KEY_IMPORT_EXPORT);
+        importExportPreference.setOnPreferenceClickListener(this);
+
+        final Preference blockedNumbersPreference = findPreference(KEY_BLOCKED_NUMBERS);
+        if (blockedNumbersPreference != null) {
+            blockedNumbersPreference.setOnPreferenceClickListener(this);
+        }
+
+        final Preference aboutPreference = findPreference(KEY_ABOUT);
+        aboutPreference.setOnPreferenceClickListener(this);
+
+        final Preference customFilterPreference = findPreference(KEY_CUSTOM_CONTACTS_FILTER);
+        if (customFilterPreference != null) {
+            customFilterPreference.setOnPreferenceClickListener(this);
+            setCustomContactsFilterSummary();
+        }
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        getLoaderManager().restartLoader(LOADER_PROFILE, null, mProfileLoaderListener);
+    }
+
+    public void updateMyInfoPreference(boolean hasProfile, String displayName, long contactId) {
+        final CharSequence summary = hasProfile ? displayName : getString(R.string.set_up_profile);
+        mMyInfoPreference.setSummary(summary);
+        mHasProfile = hasProfile;
+        mProfileContactId = contactId;
+        mMyInfoPreference.setOnPreferenceClickListener(this);
+    }
+
+    private void removeUnsupportedPreferences() {
+        // Disable sort order for CJK locales where it is not supported
+        final Resources resources = getResources();
+        if (!resources.getBoolean(R.bool.config_sort_order_user_changeable)) {
+            getPreferenceScreen().removePreference(findPreference(KEY_SORT_ORDER));
+        }
+
+        // Disable display order for CJK locales as well
+        if (!resources.getBoolean(R.bool.config_display_order_user_changeable)) {
+            getPreferenceScreen().removePreference(findPreference(KEY_DISPLAY_ORDER));
+        }
+
+        // Remove the "Default account" setting if there aren't any writable accounts
+        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(getContext());
+        final List<AccountWithDataSet> accounts = accountTypeManager.getAccounts(
+                /* contactWritableOnly */ true);
+        if (accounts.isEmpty()) {
+            getPreferenceScreen().removePreference(findPreference(KEY_DEFAULT_ACCOUNT));
+        }
+
+        final boolean isPhone = TelephonyManagerCompat.isVoiceCapable(
+                (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE));
+        final boolean showBlockedNumbers = isPhone && ContactsUtils.FLAG_N_FEATURE
+                && BlockedNumberContract.canCurrentUserBlockNumbers(getContext());
+        if (!showBlockedNumbers) {
+            getPreferenceScreen().removePreference(findPreference(KEY_BLOCKED_NUMBERS));
+        }
+    }
+
+    private void addExtraPreferences() {
+        final PreferenceManager preferenceManager = ObjectFactory.getPreferenceManager(
+                getContext());
+        if (preferenceManager != null) {
+            for (Preference preference : preferenceManager.getPreferences()) {
+                getPreferenceScreen().addPreference(preference);
+            }
+        }
+    }
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    private CursorLoader createCursorLoader(Context context) {
+        return new CursorLoader(context) {
+            @Override
+            protected Cursor onLoadInBackground() {
+                try {
+                    return super.onLoadInBackground();
+                } catch (RuntimeException e) {
+                    return null;
+                }
+            }
+        };
+    }
+
+    private String[] getProjection(Context context) {
+        final ContactsPreferences contactsPrefs = new ContactsPreferences(context);
+        final int displayOrder = contactsPrefs.getDisplayOrder();
+        if (displayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+            return ProfileQuery.PROFILE_PROJECTION_PRIMARY;
+        }
+        return ProfileQuery.PROFILE_PROJECTION_ALTERNATIVE;
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference p) {
+        final String prefKey = p.getKey();
+
+        if (KEY_ABOUT.equals(prefKey)) {
+            ((ContactsPreferenceActivity) getActivity()).showAboutFragment();
+            return true;
+        } else if (KEY_IMPORT_EXPORT.equals(prefKey)) {
+            ImportExportDialogFragment.show(getFragmentManager(), mAreContactsAvailable,
+                    ContactsPreferenceActivity.class,
+                    ImportExportDialogFragment.EXPORT_MODE_ALL_CONTACTS);
+            return true;
+        } else if (KEY_MY_INFO.equals(prefKey)) {
+            final Intent intent;
+            if (mHasProfile) {
+                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, mProfileContactId);
+                intent = ImplicitIntentsUtil.composeQuickContactIntent(uri, mModeFullyExpanded);
+                intent.putExtra(mPreviousScreenExtra, ScreenType.ME_CONTACT);
+            } else {
+                intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
+                intent.putExtra(mNewLocalProfileExtra, true);
+            }
+            ImplicitIntentsUtil.startActivityInApp(getActivity(), intent);
+            return true;
+        } else if (KEY_ACCOUNTS.equals(prefKey)) {
+            ImplicitIntentsUtil.startActivityOutsideApp(getContext(),
+                    ImplicitIntentsUtil.getIntentForAddingAccount());
+            return true;
+        } else if (KEY_BLOCKED_NUMBERS.equals(prefKey)) {
+            final Intent intent = TelecomManagerUtil.createManageBlockedNumbersIntent(
+                    (TelecomManager) getContext().getSystemService(Context.TELECOM_SERVICE));
+            startActivity(intent);
+            return true;
+        } else if (KEY_CUSTOM_CONTACTS_FILTER.equals(prefKey)) {
+            final ContactListFilter filter =
+                    ContactListFilterController.getInstance(getContext()).getFilter();
+            AccountFilterUtil.startAccountFilterActivityForResult(
+                    this, REQUEST_CODE_CUSTOM_CONTACTS_FILTER, filter);
+        }
+        return false;
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_CODE_CUSTOM_CONTACTS_FILTER
+                && resultCode == Activity.RESULT_OK) {
+            AccountFilterUtil.handleAccountFilterResult(
+                    ContactListFilterController.getInstance(getContext()), resultCode, data);
+            setCustomContactsFilterSummary();
+        } else {
+            super.onActivityResult(requestCode, resultCode, data);
+        }
+    }
+
+    private void setCustomContactsFilterSummary() {
+        final Preference customFilterPreference = findPreference(KEY_CUSTOM_CONTACTS_FILTER);
+        if (customFilterPreference != null) {
+            final ContactListFilter filter =
+                    ContactListFilterController.getInstance(getContext()).getPersistedFilter();
+            if (filter != null) {
+                if (filter.filterType == ContactListFilter.FILTER_TYPE_DEFAULT ||
+                        filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
+                    customFilterPreference.setSummary(R.string.list_filter_all_accounts);
+                } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
+                    customFilterPreference.setSummary(R.string.listCustomView);
+                } else {
+                    customFilterPreference.setSummary(null);
+                }
+            }
+        }
+    }
+}
+
diff --git a/src/com/android/contacts/common/preference/DisplayOrderPreference.java b/src/com/android/contacts/common/preference/DisplayOrderPreference.java
new file mode 100644
index 0000000..6a182c5
--- /dev/null
+++ b/src/com/android/contacts/common/preference/DisplayOrderPreference.java
@@ -0,0 +1,92 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.app.AlertDialog.Builder;
+import android.content.Context;
+import android.preference.ListPreference;
+import android.provider.ContactsContract;
+import android.util.AttributeSet;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+/**
+ * Custom preference: view-name-as (first name first or last name first).
+ */
+public final class DisplayOrderPreference extends ListPreference {
+
+    private ContactsPreferences mPreferences;
+    private Context mContext;
+
+    public DisplayOrderPreference(Context context) {
+        super(context);
+        prepare();
+    }
+
+    public DisplayOrderPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        prepare();
+    }
+
+    private void prepare() {
+        mContext = getContext();
+        mPreferences = new ContactsPreferences(mContext);
+        setEntries(new String[]{
+                mContext.getString(R.string.display_options_view_given_name_first),
+                mContext.getString(R.string.display_options_view_family_name_first),
+        });
+        setEntryValues(new String[]{
+                String.valueOf(ContactsPreferences.DISPLAY_ORDER_PRIMARY),
+                String.valueOf(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE),
+        });
+        setValue(String.valueOf(mPreferences.getDisplayOrder()));
+    }
+
+    @Override
+    protected boolean shouldPersist() {
+        return false;   // This preference takes care of its own storage
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        switch (mPreferences.getDisplayOrder()) {
+            case ContactsPreferences.DISPLAY_ORDER_PRIMARY:
+                return mContext.getString(R.string.display_options_view_given_name_first);
+            case ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE:
+                return mContext.getString(R.string.display_options_view_family_name_first);
+        }
+        return null;
+    }
+
+    @Override
+    protected boolean persistString(String value) {
+        int newValue = Integer.parseInt(value);
+        if (newValue != mPreferences.getDisplayOrder()) {
+            mPreferences.setDisplayOrder(newValue);
+            notifyChanged();
+        }
+        return true;
+    }
+
+    @Override
+    // UX recommendation is not to show cancel button on such lists.
+    protected void onPrepareDialogBuilder(Builder builder) {
+        super.onPrepareDialogBuilder(builder);
+        builder.setNegativeButton(null, null);
+    }
+}
diff --git a/src/com/android/contacts/common/preference/PreferenceManager.java b/src/com/android/contacts/common/preference/PreferenceManager.java
new file mode 100644
index 0000000..816f94e
--- /dev/null
+++ b/src/com/android/contacts/common/preference/PreferenceManager.java
@@ -0,0 +1,24 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.preference.Preference;
+
+import java.util.List;
+
+public interface PreferenceManager {
+    List<Preference> getPreferences();
+}
diff --git a/src/com/android/contacts/common/preference/SortOrderPreference.java b/src/com/android/contacts/common/preference/SortOrderPreference.java
new file mode 100644
index 0000000..dfd9550
--- /dev/null
+++ b/src/com/android/contacts/common/preference/SortOrderPreference.java
@@ -0,0 +1,91 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.app.AlertDialog.Builder;
+import android.content.Context;
+import android.preference.ListPreference;
+import android.util.AttributeSet;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+/**
+ * Custom preference: sort-by.
+ */
+public final class SortOrderPreference extends ListPreference {
+
+    private ContactsPreferences mPreferences;
+    private Context mContext;
+
+    public SortOrderPreference(Context context) {
+        super(context);
+        prepare();
+    }
+
+    public SortOrderPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        prepare();
+    }
+
+    private void prepare() {
+        mContext = getContext();
+        mPreferences = new ContactsPreferences(mContext);
+        setEntries(new String[]{
+                mContext.getString(R.string.display_options_sort_by_given_name),
+                mContext.getString(R.string.display_options_sort_by_family_name),
+        });
+        setEntryValues(new String[]{
+                String.valueOf(ContactsPreferences.SORT_ORDER_PRIMARY),
+                String.valueOf(ContactsPreferences.SORT_ORDER_ALTERNATIVE),
+        });
+        setValue(String.valueOf(mPreferences.getSortOrder()));
+    }
+
+    @Override
+    protected boolean shouldPersist() {
+        return false;   // This preference takes care of its own storage
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        switch (mPreferences.getSortOrder()) {
+            case ContactsPreferences.SORT_ORDER_PRIMARY:
+                return mContext.getString(R.string.display_options_sort_by_given_name);
+            case ContactsPreferences.SORT_ORDER_ALTERNATIVE:
+                return mContext.getString(R.string.display_options_sort_by_family_name);
+        }
+        return null;
+    }
+
+    @Override
+    protected boolean persistString(String value) {
+        int newValue = Integer.parseInt(value);
+        if (newValue != mPreferences.getSortOrder()) {
+            mPreferences.setSortOrder(newValue);
+            notifyChanged();
+        }
+        return true;
+    }
+
+    @Override
+    // UX recommendation is not to show cancel button on such lists.
+    protected void onPrepareDialogBuilder(Builder builder) {
+        super.onPrepareDialogBuilder(builder);
+        builder.setNegativeButton(null, null);
+    }
+}
diff --git a/src/com/android/contacts/common/testing/InjectedServices.java b/src/com/android/contacts/common/testing/InjectedServices.java
new file mode 100644
index 0000000..e89cec7
--- /dev/null
+++ b/src/com/android/contacts/common/testing/InjectedServices.java
@@ -0,0 +1,72 @@
+/*
+ * 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.contacts.common.testing;
+
+import android.content.ContentResolver;
+import android.content.SharedPreferences;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Maps;
+
+import java.util.HashMap;
+
+/**
+ * A mechanism for providing alternative (mock) services to the application
+ * while running tests. Activities, Services and the Application should check
+ * with this class to see if a particular service has been overridden.
+ */
+@NeededForTesting
+public class InjectedServices {
+
+    private ContentResolver mContentResolver;
+    private SharedPreferences mSharedPreferences;
+    private HashMap<String, Object> mSystemServices;
+
+    @NeededForTesting
+    public void setContentResolver(ContentResolver contentResolver) {
+        this.mContentResolver = contentResolver;
+    }
+
+    public ContentResolver getContentResolver() {
+        return mContentResolver;
+    }
+
+    @NeededForTesting
+    public void setSharedPreferences(SharedPreferences sharedPreferences) {
+        this.mSharedPreferences = sharedPreferences;
+    }
+
+    public SharedPreferences getSharedPreferences() {
+        return mSharedPreferences;
+    }
+
+    @NeededForTesting
+    public void setSystemService(String name, Object service) {
+        if (mSystemServices == null) {
+            mSystemServices = Maps.newHashMap();
+        }
+
+        mSystemServices.put(name, service);
+    }
+
+    public Object getSystemService(String name) {
+        if (mSystemServices != null) {
+            return mSystemServices.get(name);
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/contacts/common/testing/NeededForTesting.java b/src/com/android/contacts/common/testing/NeededForTesting.java
new file mode 100644
index 0000000..f841d55
--- /dev/null
+++ b/src/com/android/contacts/common/testing/NeededForTesting.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.testing;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Denotes that the class, constructor, method or field is used by tests and therefore cannot be
+ * removed by tools like ProGuard.
+ */
+@Retention(RetentionPolicy.CLASS)
+@Target({ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.FIELD})
+public @interface NeededForTesting {}
diff --git a/src/com/android/contacts/common/util/AccountFilterUtil.java b/src/com/android/contacts/common/util/AccountFilterUtil.java
new file mode 100644
index 0000000..76975a6
--- /dev/null
+++ b/src/com/android/contacts/common/util/AccountFilterUtil.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.list.AccountFilterActivity;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.ContactListFilterController;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Utility class for account filter manipulation.
+ */
+public class AccountFilterUtil {
+    private static final String TAG = AccountFilterUtil.class.getSimpleName();
+
+     /**
+      * Launches account filter setting Activity using
+      * {@link Fragment#startActivityForResult(Intent, int)}.
+      *
+      * @param requestCode requestCode for {@link Activity#startActivityForResult(Intent, int)}
+      * @param currentFilter currently-selected filter, so that it can be displayed as activated.
+      */
+     public static void startAccountFilterActivityForResult(
+             Fragment fragment, int requestCode, ContactListFilter currentFilter) {
+         final Activity activity = fragment.getActivity();
+         if (activity != null) {
+             final Intent intent = new Intent(activity, AccountFilterActivity.class);
+             fragment.startActivityForResult(intent, requestCode);
+         } else {
+             Log.w(TAG, "getActivity() returned null. Ignored");
+         }
+     }
+
+    /**
+     * Useful method to handle onActivityResult() for
+     * {@link #startAccountFilterActivityForResult(Fragment, int, ContactListFilter)}.
+     *
+     * This will update filter via a given ContactListFilterController.
+     */
+    public static void handleAccountFilterResult(
+            ContactListFilterController filterController, int resultCode, Intent data) {
+        if (resultCode == Activity.RESULT_OK) {
+            final ContactListFilter filter = (ContactListFilter)
+                    data.getParcelableExtra(AccountFilterActivity.EXTRA_CONTACT_LIST_FILTER);
+            if (filter == null) {
+                return;
+            }
+            if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
+                filterController.selectCustomFilter();
+            } else {
+                filterController.setContactListFilter(filter, /* persistent */
+                        filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
+            }
+        }
+    }
+
+    /**
+     * Loads a list of contact list filters
+     */
+    public static class FilterLoader extends AsyncTaskLoader<List<ContactListFilter>> {
+        private Context mContext;
+
+        public FilterLoader(Context context) {
+            super(context);
+            mContext = context;
+        }
+
+        @Override
+        public List<ContactListFilter> loadInBackground() {
+            return loadAccountFilters(mContext);
+        }
+
+        @Override
+        protected void onStartLoading() {
+            forceLoad();
+        }
+
+        @Override
+        protected void onStopLoading() {
+            cancelLoad();
+        }
+
+        @Override
+        protected void onReset() {
+            onStopLoading();
+        }
+    }
+
+    private static List<ContactListFilter> loadAccountFilters(Context context) {
+        final ArrayList<ContactListFilter> accountFilters = Lists.newArrayList();
+        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(context);
+        accountTypeManager.sortAccounts(/* defaultAccount */ getDefaultAccount(context));
+        final List<AccountWithDataSet> accounts =
+                accountTypeManager.getAccounts(/* contactWritableOnly */ true);
+
+        for (AccountWithDataSet account : accounts) {
+            final AccountType accountType =
+                    accountTypeManager.getAccountType(account.type, account.dataSet);
+            if (accountType.isExtension() && !account.hasData(context)) {
+                // Hide extensions with no raw_contacts.
+                continue;
+            }
+            final Drawable icon = accountType != null ? accountType.getDisplayIcon(context) : null;
+            if (account.isLocalAccount()) {
+                accountFilters.add(ContactListFilter.createDeviceContactsFilter(icon));
+            } else {
+                accountFilters.add(ContactListFilter.createAccountFilter(
+                        account.type, account.name, account.dataSet, icon));
+            }
+        }
+
+        final ArrayList<ContactListFilter> result = Lists.newArrayList();
+        result.addAll(accountFilters);
+        return result;
+    }
+
+    private static AccountWithDataSet getDefaultAccount(Context context) {
+        final SharedPreferences prefs =
+                context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
+        final String defaultAccountKey =
+                context.getResources().getString(R.string.contact_editor_default_account_key);
+        final String defaultAccountString = prefs.getString(defaultAccountKey, null);
+        if (TextUtils.isEmpty(defaultAccountString)) {
+            return null;
+        }
+        try {
+            return AccountWithDataSet.unstringify(defaultAccountString);
+        } catch (IllegalArgumentException exception) {
+            Log.e(TAG, "Error with retrieving default account " + exception.toString(), exception);
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/util/AccountSelectionUtil.java b/src/com/android/contacts/common/util/AccountSelectionUtil.java
new file mode 100644
index 0000000..4dc6ec9
--- /dev/null
+++ b/src/com/android/contacts/common/util/AccountSelectionUtil.java
@@ -0,0 +1,203 @@
+/*
+ * 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.contacts.common.util;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.Uri;
+import android.util.Log;
+import android.view.ContextThemeWrapper;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.vcard.ImportVCardActivity;
+
+import java.util.List;
+
+/**
+ * Utility class for selecting an Account for importing contact(s)
+ */
+public class AccountSelectionUtil {
+    // TODO: maybe useful for EditContactActivity.java...
+    private static final String LOG_TAG = "AccountSelectionUtil";
+
+    public static boolean mVCardShare = false;
+
+    public static Uri mPath;
+
+    public static class AccountSelectedListener
+            implements DialogInterface.OnClickListener {
+
+        final private Context mContext;
+        final private int mResId;
+        final private int mSubscriptionId;
+
+        final protected List<AccountWithDataSet> mAccountList;
+
+        public AccountSelectedListener(Context context, List<AccountWithDataSet> accountList,
+                int resId, int subscriptionId) {
+            if (accountList == null || accountList.size() == 0) {
+                Log.e(LOG_TAG, "The size of Account list is 0.");
+            }
+            mContext = context;
+            mAccountList = accountList;
+            mResId = resId;
+            mSubscriptionId = subscriptionId;
+        }
+
+        public AccountSelectedListener(Context context, List<AccountWithDataSet> accountList,
+                int resId) {
+            // Subscription id is only needed for importing from SIM card. We can safely ignore
+            // its value for SD card importing.
+            this(context, accountList, resId, /* subscriptionId = */ -1);
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            dialog.dismiss();
+            doImport(mContext, mResId, mAccountList.get(which), mSubscriptionId);
+        }
+    }
+
+    public static Dialog getSelectAccountDialog(Context context, int resId) {
+        return getSelectAccountDialog(context, resId, null, null);
+    }
+
+    public static Dialog getSelectAccountDialog(Context context, int resId,
+            DialogInterface.OnClickListener onClickListener) {
+        return getSelectAccountDialog(context, resId, onClickListener, null);
+    }
+
+    /**
+     * When OnClickListener or OnCancelListener is null, uses a default listener.
+     * The default OnCancelListener just closes itself with {@link Dialog#dismiss()}.
+     */
+    public static Dialog getSelectAccountDialog(Context context, int resId,
+            DialogInterface.OnClickListener onClickListener,
+            DialogInterface.OnCancelListener onCancelListener) {
+        final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context);
+        final List<AccountWithDataSet> writableAccountList = accountTypes.getAccounts(true);
+
+        Log.i(LOG_TAG, "The number of available accounts: " + writableAccountList.size());
+
+        // Assume accountList.size() > 1
+
+        // Wrap our context to inflate list items using correct theme
+        final Context dialogContext = new ContextThemeWrapper(
+                context, android.R.style.Theme_Light);
+        final LayoutInflater dialogInflater = (LayoutInflater)dialogContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        final ArrayAdapter<AccountWithDataSet> accountAdapter =
+            new ArrayAdapter<AccountWithDataSet>(
+                    context, R.layout.account_selector_list_item_condensed, writableAccountList) {
+            @Override
+            public View getView(int position, View convertView, ViewGroup parent) {
+                if (convertView == null) {
+                    convertView = dialogInflater.inflate(
+                            R.layout.account_selector_list_item_condensed,
+                            parent, false);
+                }
+
+                final TextView text1 = (TextView) convertView.findViewById(android.R.id.text1);
+                final TextView text2 = (TextView) convertView.findViewById(android.R.id.text2);
+                final ImageView icon = (ImageView) convertView.findViewById(android.R.id.icon);
+
+                final AccountWithDataSet account = this.getItem(position);
+                final AccountType accountType = accountTypes.getAccountType(
+                        account.type, account.dataSet);
+                final Context context = getContext();
+
+                text1.setText(accountType.getDisplayLabel(context));
+                text2.setText(account.name);
+                icon.setImageDrawable(accountType.getDisplayIcon(getContext()));
+
+                return convertView;
+            }
+        };
+
+        if (onClickListener == null) {
+            AccountSelectedListener accountSelectedListener =
+                new AccountSelectedListener(context, writableAccountList, resId);
+            onClickListener = accountSelectedListener;
+        }
+        if (onCancelListener == null) {
+            onCancelListener = new DialogInterface.OnCancelListener() {
+                public void onCancel(DialogInterface dialog) {
+                    dialog.dismiss();
+                }
+            };
+        }
+        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+        final TextView title = (TextView) View.inflate(context, R.layout.dialog_title, null);
+        title.setText(R.string.dialog_new_contact_account);
+        builder.setCustomTitle(title);
+        builder.setSingleChoiceItems(accountAdapter, 0, onClickListener);
+        builder.setOnCancelListener(onCancelListener);
+        final AlertDialog result = builder.create();
+        return result;
+    }
+
+    public static void doImport(Context context, int resId, AccountWithDataSet account,
+            int subscriptionId) {
+        if (resId == R.string.import_from_sim) {
+            doImportFromSim(context, account, subscriptionId);
+        } else if (resId == R.string.import_from_vcf_file) {
+            doImportFromVcfFile(context, account);
+        }
+    }
+
+    public static void doImportFromSim(Context context, AccountWithDataSet account,
+            int subscriptionId) {
+        Intent importIntent = new Intent(Intent.ACTION_VIEW);
+        importIntent.setType("vnd.android.cursor.item/sim-contact");
+        if (account != null) {
+            importIntent.putExtra("account_name", account.name);
+            importIntent.putExtra("account_type", account.type);
+            importIntent.putExtra("data_set", account.dataSet);
+        }
+        importIntent.putExtra("subscription_id", (Integer) subscriptionId);
+        importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts");
+        context.startActivity(importIntent);
+    }
+
+    public static void doImportFromVcfFile(Context context, AccountWithDataSet account) {
+        Intent importIntent = new Intent(context, ImportVCardActivity.class);
+        if (account != null) {
+            importIntent.putExtra("account_name", account.name);
+            importIntent.putExtra("account_type", account.type);
+            importIntent.putExtra("data_set", account.dataSet);
+        }
+
+        if (mVCardShare) {
+            importIntent.setAction(Intent.ACTION_VIEW);
+            importIntent.setData(mPath);
+        }
+        mVCardShare = false;
+        mPath = null;
+        context.startActivity(importIntent);
+    }
+}
diff --git a/src/com/android/contacts/common/util/AccountsListAdapter.java b/src/com/android/contacts/common/util/AccountsListAdapter.java
new file mode 100644
index 0000000..ef43a30
--- /dev/null
+++ b/src/com/android/contacts/common/util/AccountsListAdapter.java
@@ -0,0 +1,125 @@
+/*
+ * 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.contacts.common.util;
+
+import android.content.Context;
+import android.text.TextUtils.TruncateAt;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * List-Adapter for Account selection
+ */
+public final class AccountsListAdapter extends BaseAdapter {
+    private final LayoutInflater mInflater;
+    private final List<AccountWithDataSet> mAccounts;
+    private final AccountTypeManager mAccountTypes;
+    private final Context mContext;
+    private int mCustomLayout = -1;
+
+    /**
+     * Filters that affect the list of accounts that is displayed by this adapter.
+     */
+    public enum AccountListFilter {
+        ALL_ACCOUNTS,                   // All read-only and writable accounts
+        ACCOUNTS_CONTACT_WRITABLE,      // Only where the account type is contact writable
+        ACCOUNTS_GROUP_WRITABLE         // Only accounts where the account type is group writable
+    }
+
+    public AccountsListAdapter(Context context, AccountListFilter accountListFilter) {
+        this(context, accountListFilter, null);
+    }
+
+    /**
+     * @param currentAccount the Account currently selected by the user, which should come
+     * first in the list. Can be null.
+     */
+    public AccountsListAdapter(Context context, AccountListFilter accountListFilter,
+            AccountWithDataSet currentAccount) {
+        mContext = context;
+        mAccountTypes = AccountTypeManager.getInstance(context);
+        mAccounts = getAccounts(accountListFilter);
+        if (currentAccount != null
+                && !mAccounts.isEmpty()
+                && !mAccounts.get(0).equals(currentAccount)
+                && mAccounts.remove(currentAccount)) {
+            mAccounts.add(0, currentAccount);
+        }
+        mInflater = LayoutInflater.from(context);
+    }
+
+    private List<AccountWithDataSet> getAccounts(AccountListFilter accountListFilter) {
+        if (accountListFilter == AccountListFilter.ACCOUNTS_GROUP_WRITABLE) {
+            return new ArrayList<AccountWithDataSet>(mAccountTypes.getGroupWritableAccounts());
+        }
+        return new ArrayList<AccountWithDataSet>(mAccountTypes.getAccounts(
+                accountListFilter == AccountListFilter.ACCOUNTS_CONTACT_WRITABLE));
+    }
+
+    public void setCustomLayout(int customLayout) {
+        mCustomLayout = customLayout;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        final View resultView = convertView != null ? convertView :
+                mInflater.inflate(mCustomLayout > 0 ? mCustomLayout :
+                        R.layout.account_selector_list_item_condensed, parent, false);
+
+        final TextView text1 = (TextView) resultView.findViewById(android.R.id.text1);
+        final TextView text2 = (TextView) resultView.findViewById(android.R.id.text2);
+        final ImageView icon = (ImageView) resultView.findViewById(android.R.id.icon);
+
+        final AccountWithDataSet account = mAccounts.get(position);
+        final AccountType accountType = mAccountTypes.getAccountType(account.type, account.dataSet);
+
+        text1.setText(accountType.getDisplayLabel(mContext));
+        text2.setText(account.name);
+
+        icon.setImageDrawable(accountType.getDisplayIcon(mContext));
+
+        return resultView;
+    }
+
+    @Override
+    public int getCount() {
+        return mAccounts.size();
+    }
+
+    @Override
+    public AccountWithDataSet getItem(int position) {
+        return mAccounts.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+}
+
diff --git a/src/com/android/contacts/common/util/BitmapUtil.java b/src/com/android/contacts/common/util/BitmapUtil.java
new file mode 100644
index 0000000..5cd856e
--- /dev/null
+++ b/src/com/android/contacts/common/util/BitmapUtil.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.PorterDuff.Mode;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.BitmapDrawable;
+
+/**
+ * Provides static functions to decode bitmaps at the optimal size
+ */
+public class BitmapUtil {
+    private BitmapUtil() {}
+
+    /**
+     * Returns Width or Height of the picture, depending on which size is smaller. Doesn't actually
+     * decode the picture, so it is pretty efficient to run.
+     */
+    public static int getSmallerExtentFromBytes(byte[] bytes) {
+        final BitmapFactory.Options options = new BitmapFactory.Options();
+
+        // don't actually decode the picture, just return its bounds
+        options.inJustDecodeBounds = true;
+        BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
+
+        // test what the best sample size is
+        return Math.min(options.outWidth, options.outHeight);
+    }
+
+    /**
+     * Finds the optimal sampleSize for loading the picture
+     * @param originalSmallerExtent Width or height of the picture, whichever is smaller
+     * @param targetExtent Width or height of the target view, whichever is bigger.
+     *
+     * If either one of the parameters is 0 or smaller, no sampling is applied
+     */
+    public static int findOptimalSampleSize(int originalSmallerExtent, int targetExtent) {
+        // If we don't know sizes, we can't do sampling.
+        if (targetExtent < 1) return 1;
+        if (originalSmallerExtent < 1) return 1;
+
+        // Test what the best sample size is. To do that, we find the sample size that gives us
+        // the best trade-off between resulting image size and memory requirement. We allow
+        // the down-sampled image to be 20% smaller than the target size. That way we can get around
+        // unfortunate cases where e.g. a 720 picture is requested for 362 and not down-sampled at
+        // all. Why 20%? Why not. Prove me wrong.
+        int extent = originalSmallerExtent;
+        int sampleSize = 1;
+        while ((extent >> 1) >= targetExtent * 0.8f) {
+            sampleSize <<= 1;
+            extent >>= 1;
+        }
+
+        return sampleSize;
+    }
+
+    /**
+     * Decodes the bitmap with the given sample size
+     */
+    public static Bitmap decodeBitmapFromBytes(byte[] bytes, int sampleSize) {
+        final BitmapFactory.Options options;
+        if (sampleSize <= 1) {
+            options = null;
+        } else {
+            options = new BitmapFactory.Options();
+            options.inSampleSize = sampleSize;
+        }
+        return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
+    }
+
+    /**
+     * Retrieves a copy of the specified drawable resource, rotated by a specified angle.
+     *
+     * @param resources The current resources.
+     * @param resourceId The resource ID of the drawable to rotate.
+     * @param angle The angle of rotation.
+     * @return Rotated drawable.
+     */
+    public static Drawable getRotatedDrawable(
+            android.content.res.Resources resources, int resourceId, float angle) {
+
+        // Get the original drawable and make a copy which will be rotated.
+        Bitmap original = BitmapFactory.decodeResource(resources, resourceId);
+        Bitmap rotated = Bitmap.createBitmap(
+                original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888);
+
+        // Perform the rotation.
+        Canvas tempCanvas = new Canvas(rotated);
+        tempCanvas.rotate(angle, original.getWidth()/2, original.getHeight()/2);
+        tempCanvas.drawBitmap(original, 0, 0, null);
+
+        return new BitmapDrawable(resources,rotated);
+    }
+
+    /**
+     * Given an input bitmap, scales it to the given width/height and makes it round.
+     *
+     * @param input {@link Bitmap} to scale and crop
+     * @param targetWidth desired output width
+     * @param targetHeight desired output height
+     * @return output bitmap scaled to the target width/height and cropped to an oval. The
+     *         cropping algorithm will try to fit as much of the input into the output as possible,
+     *         while preserving the target width/height ratio.
+     */
+    public static Bitmap getRoundedBitmap(Bitmap input, int targetWidth, int targetHeight) {
+        if (input == null) {
+            return null;
+        }
+        final Bitmap.Config inputConfig = input.getConfig();
+        final Bitmap result = Bitmap.createBitmap(targetWidth, targetHeight,
+                inputConfig != null ? inputConfig : Bitmap.Config.ARGB_8888);
+        final Canvas canvas = new Canvas(result);
+        final Paint paint = new Paint();
+        canvas.drawARGB(0, 0, 0, 0);
+        paint.setAntiAlias(true);
+        final RectF dst = new RectF(0, 0, targetWidth, targetHeight);
+        canvas.drawOval(dst, paint);
+
+        // Specifies that only pixels present in the destination (i.e. the drawn oval) should
+        // be overwritten with pixels from the input bitmap.
+        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
+
+        final int inputWidth = input.getWidth();
+        final int inputHeight = input.getHeight();
+
+        // Choose the largest scale factor that will fit inside the dimensions of the
+        // input bitmap.
+        final float scaleBy = Math.min((float) inputWidth / targetWidth,
+            (float) inputHeight / targetHeight);
+
+        final int xCropAmountHalved = (int) (scaleBy * targetWidth / 2);
+        final int yCropAmountHalved = (int) (scaleBy * targetHeight / 2);
+
+        final Rect src = new Rect(
+                inputWidth / 2 - xCropAmountHalved,
+                inputHeight / 2 - yCropAmountHalved,
+                inputWidth / 2 + xCropAmountHalved,
+                inputHeight / 2 + yCropAmountHalved);
+
+        canvas.drawBitmap(input, src, dst, paint);
+        return result;
+    }
+}
diff --git a/src/com/android/contacts/common/util/CommonDateUtils.java b/src/com/android/contacts/common/util/CommonDateUtils.java
new file mode 100644
index 0000000..bba910a
--- /dev/null
+++ b/src/com/android/contacts/common/util/CommonDateUtils.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+/**
+ * Common date utilities.
+ */
+public class CommonDateUtils {
+
+    // All the SimpleDateFormats in this class use the UTC timezone
+    public static final SimpleDateFormat NO_YEAR_DATE_FORMAT =
+            new SimpleDateFormat("--MM-dd", Locale.US);
+    public static final SimpleDateFormat FULL_DATE_FORMAT =
+            new SimpleDateFormat("yyyy-MM-dd", Locale.US);
+    public static final SimpleDateFormat DATE_AND_TIME_FORMAT =
+            new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
+    public static final SimpleDateFormat NO_YEAR_DATE_AND_TIME_FORMAT =
+            new SimpleDateFormat("--MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
+
+    /**
+     * Exchange requires 8:00 for birthdays
+     */
+    public final static int DEFAULT_HOUR = 8;
+}
diff --git a/src/com/android/contacts/common/util/Constants.java b/src/com/android/contacts/common/util/Constants.java
new file mode 100644
index 0000000..c0d6755
--- /dev/null
+++ b/src/com/android/contacts/common/util/Constants.java
@@ -0,0 +1,29 @@
+/*
+ * 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.contacts.common.util;
+
+public class Constants {
+
+    /**
+     * Log tag for performance measurement.
+     * To enable: adb shell setprop log.tag.ContactsPerf VERBOSE
+     */
+    public static final String PERFORMANCE_TAG = "ContactsPerf";
+
+    // Used for lookup URI that contains an encoded JSON string.
+    public static final String LOOKUP_URI_ENCODED = "encoded";
+}
diff --git a/src/com/android/contacts/common/util/ContactDisplayUtils.java b/src/com/android/contacts/common/util/ContactDisplayUtils.java
new file mode 100644
index 0000000..0a50748
--- /dev/null
+++ b/src/com/android/contacts/common/util/ContactDisplayUtils.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import static android.provider.ContactsContract.CommonDataKinds.Phone;
+
+import com.google.common.base.Preconditions;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.support.annotation.Nullable;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.text.style.TtsSpan;
+import android.util.Log;
+import android.util.Patterns;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+/**
+ * Methods for handling various contact data labels.
+ */
+public class ContactDisplayUtils {
+
+    private static final String TAG = ContactDisplayUtils.class.getSimpleName();
+
+    public static final int INTERACTION_CALL = 1;
+    public static final int INTERACTION_SMS = 2;
+
+    /**
+     * Checks if the given data type is a custom type.
+     *
+     * @param type Phone data type.
+     * @return {@literal true} if the type is custom.  {@literal false} if not.
+     */
+    public static boolean isCustomPhoneType(Integer type) {
+        return type == Phone.TYPE_CUSTOM || type == Phone.TYPE_ASSISTANT;
+    }
+
+    /**
+     * Gets a display label for a given phone type.
+     *
+     * @param type The type of number.
+     * @param customLabel A custom label to use if the phone is determined to be of custom type
+     * determined by {@link #isCustomPhoneType(Integer))}
+     * @param interactionType whether this is a call or sms.  Either {@link #INTERACTION_CALL} or
+     * {@link #INTERACTION_SMS}.
+     * @param context The application context.
+     * @return An appropriate string label
+     */
+    public static CharSequence getLabelForCallOrSms(Integer type, CharSequence customLabel,
+            int interactionType, Context context) {
+        Preconditions.checkNotNull(context);
+
+        if (isCustomPhoneType(type)) {
+            return (customLabel == null) ? "" : customLabel;
+        } else {
+            int resId;
+            if (interactionType == INTERACTION_SMS) {
+                resId = getSmsLabelResourceId(type);
+            } else {
+                resId = getPhoneLabelResourceId(type);
+                if (interactionType != INTERACTION_CALL) {
+                    Log.e(TAG, "Un-recognized interaction type: " + interactionType +
+                            ". Defaulting to ContactDisplayUtils.INTERACTION_CALL.");
+                }
+            }
+
+            return context.getResources().getText(resId);
+        }
+    }
+
+    /**
+     * Find a label for calling.
+     *
+     * @param type The type of number.
+     * @return An appropriate string label.
+     */
+    public static int getPhoneLabelResourceId(Integer type) {
+        if (type == null) return R.string.call_other;
+        switch (type) {
+            case Phone.TYPE_HOME:
+                return R.string.call_home;
+            case Phone.TYPE_MOBILE:
+                return R.string.call_mobile;
+            case Phone.TYPE_WORK:
+                return R.string.call_work;
+            case Phone.TYPE_FAX_WORK:
+                return R.string.call_fax_work;
+            case Phone.TYPE_FAX_HOME:
+                return R.string.call_fax_home;
+            case Phone.TYPE_PAGER:
+                return R.string.call_pager;
+            case Phone.TYPE_OTHER:
+                return R.string.call_other;
+            case Phone.TYPE_CALLBACK:
+                return R.string.call_callback;
+            case Phone.TYPE_CAR:
+                return R.string.call_car;
+            case Phone.TYPE_COMPANY_MAIN:
+                return R.string.call_company_main;
+            case Phone.TYPE_ISDN:
+                return R.string.call_isdn;
+            case Phone.TYPE_MAIN:
+                return R.string.call_main;
+            case Phone.TYPE_OTHER_FAX:
+                return R.string.call_other_fax;
+            case Phone.TYPE_RADIO:
+                return R.string.call_radio;
+            case Phone.TYPE_TELEX:
+                return R.string.call_telex;
+            case Phone.TYPE_TTY_TDD:
+                return R.string.call_tty_tdd;
+            case Phone.TYPE_WORK_MOBILE:
+                return R.string.call_work_mobile;
+            case Phone.TYPE_WORK_PAGER:
+                return R.string.call_work_pager;
+            case Phone.TYPE_ASSISTANT:
+                return R.string.call_assistant;
+            case Phone.TYPE_MMS:
+                return R.string.call_mms;
+            default:
+                return R.string.call_custom;
+        }
+
+    }
+
+    /**
+     * Find a label for sending an sms.
+     *
+     * @param type The type of number.
+     * @return An appropriate string label.
+     */
+    public static int getSmsLabelResourceId(Integer type) {
+        if (type == null) return R.string.sms_other;
+        switch (type) {
+            case Phone.TYPE_HOME:
+                return R.string.sms_home;
+            case Phone.TYPE_MOBILE:
+                return R.string.sms_mobile;
+            case Phone.TYPE_WORK:
+                return R.string.sms_work;
+            case Phone.TYPE_FAX_WORK:
+                return R.string.sms_fax_work;
+            case Phone.TYPE_FAX_HOME:
+                return R.string.sms_fax_home;
+            case Phone.TYPE_PAGER:
+                return R.string.sms_pager;
+            case Phone.TYPE_OTHER:
+                return R.string.sms_other;
+            case Phone.TYPE_CALLBACK:
+                return R.string.sms_callback;
+            case Phone.TYPE_CAR:
+                return R.string.sms_car;
+            case Phone.TYPE_COMPANY_MAIN:
+                return R.string.sms_company_main;
+            case Phone.TYPE_ISDN:
+                return R.string.sms_isdn;
+            case Phone.TYPE_MAIN:
+                return R.string.sms_main;
+            case Phone.TYPE_OTHER_FAX:
+                return R.string.sms_other_fax;
+            case Phone.TYPE_RADIO:
+                return R.string.sms_radio;
+            case Phone.TYPE_TELEX:
+                return R.string.sms_telex;
+            case Phone.TYPE_TTY_TDD:
+                return R.string.sms_tty_tdd;
+            case Phone.TYPE_WORK_MOBILE:
+                return R.string.sms_work_mobile;
+            case Phone.TYPE_WORK_PAGER:
+                return R.string.sms_work_pager;
+            case Phone.TYPE_ASSISTANT:
+                return R.string.sms_assistant;
+            case Phone.TYPE_MMS:
+                return R.string.sms_mms;
+            default:
+                return R.string.sms_custom;
+        }
+    }
+
+    /**
+     * Whether the given text could be a phone number.
+     *
+     * Note this will miss many things that are legitimate phone numbers, for example,
+     * phone numbers with letters.
+     */
+    public static boolean isPossiblePhoneNumber(CharSequence text) {
+        return text == null ? false : Patterns.PHONE.matcher(text.toString()).matches();
+    }
+
+    /**
+     * Returns a Spannable for the given message with a telephone {@link TtsSpan} set for
+     * the given phone number text wherever it is found within the message.
+     */
+    public static Spannable getTelephoneTtsSpannable(String message, String phoneNumber) {
+        if (message == null) {
+            return null;
+        }
+        final Spannable spannable = new SpannableString(message);
+        int start = phoneNumber == null ? -1 : message.indexOf(phoneNumber);
+        while (start >= 0) {
+            final int end = start + phoneNumber.length();
+            final TtsSpan ttsSpan = PhoneNumberUtilsCompat.createTtsSpan(phoneNumber);
+            spannable.setSpan(ttsSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);             // this is consistenly done in a misleading way..
+            start = message.indexOf(phoneNumber, end);
+        }
+        return spannable;
+    }
+
+    /**
+     * Retrieves a string from a string template that takes 1 phone number as argument,
+     * span the number with a telephone {@link TtsSpan}, and return the spanned string.
+     *
+     * @param resources to retrieve the string from
+     * @param stringId ID of the string
+     * @param number to pass in the template
+     * @return CharSequence with the phone number wrapped in a TtsSpan
+     */
+    public static CharSequence getTtsSpannedPhoneNumber(Resources resources,
+            int stringId, String number){
+        String msg = resources.getString(stringId, number);
+        return ContactDisplayUtils.getTelephoneTtsSpannable(msg, number);
+    }
+
+    /**
+     * Returns either namePrimary or nameAlternative based on the {@link ContactsPreferences}.
+     * Defaults to the name that is non-null.
+     *
+     * @param namePrimary the primary name.
+     * @param nameAlternative the alternative name.
+     * @param contactsPreferences the ContactsPreferences used to determine the preferred
+     * display name.
+     * @return namePrimary or nameAlternative depending on the value of displayOrderPreference.
+     */
+    public static String getPreferredDisplayName(String namePrimary, String nameAlternative,
+            @Nullable ContactsPreferences contactsPreferences) {
+        if (contactsPreferences == null) {
+            return namePrimary != null ? namePrimary : nameAlternative;
+        }
+        if (contactsPreferences.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+            return namePrimary;
+        }
+
+        if (contactsPreferences.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE
+                && !TextUtils.isEmpty(nameAlternative)) {
+            return nameAlternative;
+        }
+
+        return namePrimary;
+    }
+
+    /**
+     * Returns either namePrimary or nameAlternative based on the {@link ContactsPreferences}.
+     * Defaults to the name that is non-null.
+     *
+     * @param namePrimary the primary name.
+     * @param nameAlternative the alternative name.
+     * @param contactsPreferences the ContactsPreferences used to determine the preferred sort
+     * order.
+     * @return namePrimary or nameAlternative depending on the value of displayOrderPreference.
+     */
+    public static String getPreferredSortName(String namePrimary, String nameAlternative,
+            @Nullable ContactsPreferences contactsPreferences) {
+        if (contactsPreferences == null) {
+            return namePrimary != null ? namePrimary : nameAlternative;
+        }
+
+        if (contactsPreferences.getSortOrder() == ContactsPreferences.SORT_ORDER_PRIMARY) {
+            return namePrimary;
+        }
+
+        if (contactsPreferences.getSortOrder() == ContactsPreferences.SORT_ORDER_ALTERNATIVE &&
+                !TextUtils.isEmpty(nameAlternative)) {
+            return nameAlternative;
+        }
+
+        return namePrimary;
+    }
+}
diff --git a/src/com/android/contacts/common/util/ContactLoaderUtils.java b/src/com/android/contacts/common/util/ContactLoaderUtils.java
new file mode 100644
index 0000000..0ec8887
--- /dev/null
+++ b/src/com/android/contacts/common/util/ContactLoaderUtils.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.util;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.net.Uri;
+import android.provider.Contacts;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.RawContacts;
+
+/**
+ * Utility methods for the {@link ContactLoader}.
+ */
+public final class ContactLoaderUtils {
+
+    /** Static helper, not instantiable. */
+    private ContactLoaderUtils() {}
+
+    /**
+     * Transforms the given Uri and returns a Lookup-Uri that represents the contact.
+     * For legacy contacts, a raw-contact lookup is performed. An {@link IllegalArgumentException}
+     * can be thrown if the URI is null or the authority is not recognized.
+     *
+     * Do not call from the UI thread.
+     */
+    @SuppressWarnings("deprecation")
+    public static Uri ensureIsContactUri(final ContentResolver resolver, final Uri uri)
+            throws IllegalArgumentException {
+        if (uri == null) throw new IllegalArgumentException("uri must not be null");
+
+        final String authority = uri.getAuthority();
+
+        // Current Style Uri?
+        if (ContactsContract.AUTHORITY.equals(authority)) {
+            final String type = resolver.getType(uri);
+            // Contact-Uri? Good, return it
+            if (ContactsContract.Contacts.CONTENT_ITEM_TYPE.equals(type)) {
+                return uri;
+            }
+
+            // RawContact-Uri? Transform it to ContactUri
+            if (RawContacts.CONTENT_ITEM_TYPE.equals(type)) {
+                final long rawContactId = ContentUris.parseId(uri);
+                return RawContacts.getContactLookupUri(resolver,
+                        ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId));
+            }
+
+            // Anything else? We don't know what this is
+            throw new IllegalArgumentException("uri format is unknown");
+        }
+
+        // Legacy Style? Convert to RawContact
+        final String OBSOLETE_AUTHORITY = Contacts.AUTHORITY;
+        if (OBSOLETE_AUTHORITY.equals(authority)) {
+            // Legacy Format. Convert to RawContact-Uri and then lookup the contact
+            final long rawContactId = ContentUris.parseId(uri);
+            return RawContacts.getContactLookupUri(resolver,
+                    ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId));
+        }
+
+        throw new IllegalArgumentException("uri authority is unknown");
+    }
+}
diff --git a/src/com/android/contacts/common/util/DataStatus.java b/src/com/android/contacts/common/util/DataStatus.java
new file mode 100644
index 0000000..76f11b6
--- /dev/null
+++ b/src/com/android/contacts/common/util/DataStatus.java
@@ -0,0 +1,165 @@
+/*
+ * 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.contacts.common.util;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract.Data;
+import android.text.TextUtils;
+import android.text.format.DateUtils;
+
+import com.android.contacts.common.R;
+
+/**
+ * Storage for a social status update. Holds a single update, but can use
+ * {@link #possibleUpdate(Cursor)} to consider updating when a better status
+ * exists. Statuses with timestamps, or with newer timestamps win.
+ */
+public class DataStatus {
+    private int mPresence = -1;
+    private String mStatus = null;
+    private long mTimestamp = -1;
+
+    private String mResPackage = null;
+    private int mIconRes = -1;
+    private int mLabelRes = -1;
+
+    public DataStatus() {
+    }
+
+    public DataStatus(Cursor cursor) {
+        // When creating from cursor row, fill normally
+        fromCursor(cursor);
+    }
+
+    /**
+     * Attempt updating this {@link DataStatus} based on values at the
+     * current row of the given {@link Cursor}.
+     */
+    public void possibleUpdate(Cursor cursor) {
+        final boolean hasStatus = !isNull(cursor, Data.STATUS);
+        final boolean hasTimestamp = !isNull(cursor, Data.STATUS_TIMESTAMP);
+
+        // Bail early when not valid status, or when previous status was
+        // found and we can't compare this one.
+        if (!hasStatus) return;
+        if (isValid() && !hasTimestamp) return;
+
+        if (hasTimestamp) {
+            // Compare timestamps and bail if older status
+            final long newTimestamp = getLong(cursor, Data.STATUS_TIMESTAMP, -1);
+            if (newTimestamp < mTimestamp) return;
+
+            mTimestamp = newTimestamp;
+        }
+
+        // Fill in remaining details from cursor
+        fromCursor(cursor);
+    }
+
+    private void fromCursor(Cursor cursor) {
+        mPresence = getInt(cursor, Data.PRESENCE, -1);
+        mStatus = getString(cursor, Data.STATUS);
+        mTimestamp = getLong(cursor, Data.STATUS_TIMESTAMP, -1);
+        mResPackage = getString(cursor, Data.STATUS_RES_PACKAGE);
+        mIconRes = getInt(cursor, Data.STATUS_ICON, -1);
+        mLabelRes = getInt(cursor, Data.STATUS_LABEL, -1);
+    }
+
+    public boolean isValid() {
+        return !TextUtils.isEmpty(mStatus);
+    }
+
+    public int getPresence() {
+        return mPresence;
+    }
+
+    public CharSequence getStatus() {
+        return mStatus;
+    }
+
+    public long getTimestamp() {
+        return mTimestamp;
+    }
+
+    /**
+     * Build any timestamp and label into a single string.
+     */
+    public CharSequence getTimestampLabel(Context context) {
+        final PackageManager pm = context.getPackageManager();
+
+        // Use local package for resources when none requested
+        if (mResPackage == null) mResPackage = context.getPackageName();
+
+        final boolean validTimestamp = mTimestamp > 0;
+        final boolean validLabel = mResPackage != null && mLabelRes != -1;
+
+        final CharSequence timeClause = validTimestamp ? DateUtils.getRelativeTimeSpanString(
+                mTimestamp, System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS,
+                DateUtils.FORMAT_ABBREV_RELATIVE) : null;
+        final CharSequence labelClause = validLabel ? pm.getText(mResPackage, mLabelRes,
+                null) : null;
+
+        if (validTimestamp && validLabel) {
+            return context.getString(
+                    R.string.contact_status_update_attribution_with_date,
+                    timeClause, labelClause);
+        } else if (validLabel) {
+            return context.getString(
+                    R.string.contact_status_update_attribution,
+                    labelClause);
+        } else if (validTimestamp) {
+            return timeClause;
+        } else {
+            return null;
+        }
+    }
+
+    public Drawable getIcon(Context context) {
+        final PackageManager pm = context.getPackageManager();
+
+        // Use local package for resources when none requested
+        if (mResPackage == null) mResPackage = context.getPackageName();
+
+        final boolean validIcon = mResPackage != null && mIconRes != -1;
+        return validIcon ? pm.getDrawable(mResPackage, mIconRes, null) : null;
+    }
+
+    private static String getString(Cursor cursor, String columnName) {
+        return cursor.getString(cursor.getColumnIndex(columnName));
+    }
+
+    private static int getInt(Cursor cursor, String columnName) {
+        return cursor.getInt(cursor.getColumnIndex(columnName));
+    }
+
+    private static int getInt(Cursor cursor, String columnName, int missingValue) {
+        final int columnIndex = cursor.getColumnIndex(columnName);
+        return cursor.isNull(columnIndex) ? missingValue : cursor.getInt(columnIndex);
+    }
+
+    private static long getLong(Cursor cursor, String columnName, long missingValue) {
+        final int columnIndex = cursor.getColumnIndex(columnName);
+        return cursor.isNull(columnIndex) ? missingValue : cursor.getLong(columnIndex);
+    }
+
+    private static boolean isNull(Cursor cursor, String columnName) {
+        return cursor.isNull(cursor.getColumnIndex(columnName));
+    }
+}
diff --git a/src/com/android/contacts/common/util/DateUtils.java b/src/com/android/contacts/common/util/DateUtils.java
new file mode 100644
index 0000000..c695ec6
--- /dev/null
+++ b/src/com/android/contacts/common/util/DateUtils.java
@@ -0,0 +1,291 @@
+/*
+ * 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.contacts.common.util;
+
+import android.content.Context;
+import android.text.format.DateFormat;
+import android.text.format.Time;
+
+
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Utility methods for processing dates.
+ */
+public class DateUtils {
+    public static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC");
+
+    /**
+     * When parsing a date without a year, the system assumes 1970, which wasn't a leap-year.
+     * Let's add a one-off hack for that day of the year
+     */
+    public static final String NO_YEAR_DATE_FEB29TH = "--02-29";
+
+    // Variations of ISO 8601 date format.  Do not change the order - it does affect the
+    // result in ambiguous cases.
+    private static final SimpleDateFormat[] DATE_FORMATS = {
+        CommonDateUtils.FULL_DATE_FORMAT,
+        CommonDateUtils.DATE_AND_TIME_FORMAT,
+        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US),
+        new SimpleDateFormat("yyyyMMdd", Locale.US),
+        new SimpleDateFormat("yyyyMMdd'T'HHmmssSSS'Z'", Locale.US),
+        new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'", Locale.US),
+        new SimpleDateFormat("yyyyMMdd'T'HHmm'Z'", Locale.US),
+    };
+
+    static {
+        for (SimpleDateFormat format : DATE_FORMATS) {
+            format.setLenient(true);
+            format.setTimeZone(UTC_TIMEZONE);
+        }
+        CommonDateUtils.NO_YEAR_DATE_FORMAT.setTimeZone(UTC_TIMEZONE);
+    }
+
+    /**
+     * Parses the supplied string to see if it looks like a date.
+     *
+     * @param string The string representation of the provided date
+     * @param mustContainYear If true, the string is parsed as a date containing a year. If false,
+     * the string is parsed into a valid date even if the year field is missing.
+     * @return A Calendar object corresponding to the date if the string is successfully parsed.
+     * If not, null is returned.
+     */
+    public static Calendar parseDate(String string, boolean mustContainYear) {
+        ParsePosition parsePosition = new ParsePosition(0);
+        Date date;
+        if (!mustContainYear) {
+            final boolean noYearParsed;
+            // Unfortunately, we can't parse Feb 29th correctly, so let's handle this day seperately
+            if (NO_YEAR_DATE_FEB29TH.equals(string)) {
+                return getUtcDate(0, Calendar.FEBRUARY, 29);
+            } else {
+                synchronized (CommonDateUtils.NO_YEAR_DATE_FORMAT) {
+                    date = CommonDateUtils.NO_YEAR_DATE_FORMAT.parse(string, parsePosition);
+                }
+                noYearParsed = parsePosition.getIndex() == string.length();
+            }
+
+            if (noYearParsed) {
+                return getUtcDate(date, true);
+            }
+        }
+        for (int i = 0; i < DATE_FORMATS.length; i++) {
+            SimpleDateFormat f = DATE_FORMATS[i];
+            synchronized (f) {
+                parsePosition.setIndex(0);
+                date = f.parse(string, parsePosition);
+                if (parsePosition.getIndex() == string.length()) {
+                    return getUtcDate(date, false);
+                }
+            }
+        }
+        return null;
+    }
+
+    private static final Calendar getUtcDate(Date date, boolean noYear) {
+        final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US);
+        calendar.setTime(date);
+        if (noYear) {
+            calendar.set(Calendar.YEAR, 0);
+        }
+        return calendar;
+    }
+
+    private static final Calendar getUtcDate(int year, int month, int dayOfMonth) {
+        final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US);
+        calendar.clear();
+        calendar.set(Calendar.YEAR, year);
+        calendar.set(Calendar.MONTH, month);
+        calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
+        return calendar;
+    }
+
+    public static boolean isYearSet(Calendar cal) {
+        // use the Calendar.YEAR field to track whether or not the year is set instead of
+        // Calendar.isSet() because doing Calendar.get() causes Calendar.isSet() to become
+        // true irregardless of what the previous value was
+        return cal.get(Calendar.YEAR) > 1;
+    }
+
+    /**
+     * Same as {@link #formatDate(Context context, String string, boolean longForm)}, with
+     * longForm set to {@code true} by default.
+     *
+     * @param context Valid context
+     * @param string String representation of a date to parse
+     * @return Returns the same date in a cleaned up format. If the supplied string does not look
+     * like a date, return it unchanged.
+     */
+
+    public static String formatDate(Context context, String string) {
+        return formatDate(context, string, true);
+    }
+
+    /**
+     * Parses the supplied string to see if it looks like a date.
+     *
+     * @param context Valid context
+     * @param string String representation of a date to parse
+     * @param longForm If true, return the date formatted into its long string representation.
+     * If false, return the date formatted using its short form representation (i.e. 12/11/2012)
+     * @return Returns the same date in a cleaned up format. If the supplied string does not look
+     * like a date, return it unchanged.
+     */
+    public static String formatDate(Context context, String string, boolean longForm) {
+        if (string == null) {
+            return null;
+        }
+
+        string = string.trim();
+        if (string.length() == 0) {
+            return string;
+        }
+        final Calendar cal = parseDate(string, false);
+
+        // we weren't able to parse the string successfully so just return it unchanged
+        if (cal == null) {
+            return string;
+        }
+
+        final boolean isYearSet = isYearSet(cal);
+        final java.text.DateFormat outFormat;
+        if (!isYearSet) {
+            outFormat = getLocalizedDateFormatWithoutYear(context);
+        } else {
+            outFormat =
+                    longForm ? DateFormat.getLongDateFormat(context) :
+                    DateFormat.getDateFormat(context);
+        }
+        synchronized (outFormat) {
+            outFormat.setTimeZone(UTC_TIMEZONE);
+            return outFormat.format(cal.getTime());
+        }
+    }
+
+    public static boolean isMonthBeforeDay(Context context) {
+        char[] dateFormatOrder = DateFormat.getDateFormatOrder(context);
+        for (int i = 0; i < dateFormatOrder.length; i++) {
+            if (dateFormatOrder[i] == 'd') {
+                return false;
+            }
+            if (dateFormatOrder[i] == 'M') {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns a SimpleDateFormat object without the year fields by using a regular expression
+     * to eliminate the year in the string pattern. In the rare occurence that the resulting
+     * pattern cannot be reconverted into a SimpleDateFormat, it uses the provided context to
+     * determine whether the month field should be displayed before the day field, and returns
+     * either "MMMM dd" or "dd MMMM" converted into a SimpleDateFormat.
+     */
+    public static java.text.DateFormat getLocalizedDateFormatWithoutYear(Context context) {
+        final String pattern = ((SimpleDateFormat) SimpleDateFormat.getDateInstance(
+                java.text.DateFormat.LONG)).toPattern();
+        // Determine the correct regex pattern for year.
+        // Special case handling for Spanish locale by checking for "de"
+        final String yearPattern = pattern.contains(
+                "de") ? "[^Mm]*[Yy]+[^Mm]*" : "[^DdMm]*[Yy]+[^DdMm]*";
+        try {
+         // Eliminate the substring in pattern that matches the format for that of year
+            return new SimpleDateFormat(pattern.replaceAll(yearPattern, ""));
+        } catch (IllegalArgumentException e) {
+            return new SimpleDateFormat(
+                    DateUtils.isMonthBeforeDay(context) ? "MMMM dd" : "dd MMMM");
+        }
+    }
+
+    /**
+     * Given a calendar (possibly containing only a day of the year), returns the earliest possible
+     * anniversary of the date that is equal to or after the current point in time if the date
+     * does not contain a year, or the date converted to the local time zone (if the date contains
+     * a year.
+     *
+     * @param target The date we wish to convert(in the UTC time zone).
+     * @return If date does not contain a year (year < 1900), returns the next earliest anniversary
+     * that is after the current point in time (in the local time zone). Otherwise, returns the
+     * adjusted Date in the local time zone.
+     */
+    public static Date getNextAnnualDate(Calendar target) {
+        final Calendar today = Calendar.getInstance();
+        today.setTime(new Date());
+
+        // Round the current time to the exact start of today so that when we compare
+        // today against the target date, both dates are set to exactly 0000H.
+        today.set(Calendar.HOUR_OF_DAY, 0);
+        today.set(Calendar.MINUTE, 0);
+        today.set(Calendar.SECOND, 0);
+        today.set(Calendar.MILLISECOND, 0);
+
+        final boolean isYearSet = isYearSet(target);
+        final int targetYear = target.get(Calendar.YEAR);
+        final int targetMonth = target.get(Calendar.MONTH);
+        final int targetDay = target.get(Calendar.DAY_OF_MONTH);
+        final boolean isFeb29 = (targetMonth == Calendar.FEBRUARY && targetDay == 29);
+        final GregorianCalendar anniversary = new GregorianCalendar();
+        // Convert from the UTC date to the local date. Set the year to today's year if the
+        // there is no provided year (targetYear < 1900)
+        anniversary.set(!isYearSet ? today.get(Calendar.YEAR) : targetYear,
+                targetMonth, targetDay);
+        // If the anniversary's date is before the start of today and there is no year set,
+        // increment the year by 1 so that the returned date is always equal to or greater than
+        // today. If the day is a leap year, keep going until we get the next leap year anniversary
+        // Otherwise if there is already a year set, simply return the exact date.
+        if (!isYearSet) {
+            int anniversaryYear = today.get(Calendar.YEAR);
+            if (anniversary.before(today) ||
+                    (isFeb29 && !anniversary.isLeapYear(anniversaryYear))) {
+                // If the target date is not Feb 29, then set the anniversary to the next year.
+                // Otherwise, keep going until we find the next leap year (this is not guaranteed
+                // to be in 4 years time).
+                do {
+                    anniversaryYear +=1;
+                } while (isFeb29 && !anniversary.isLeapYear(anniversaryYear));
+                anniversary.set(anniversaryYear, targetMonth, targetDay);
+            }
+        }
+        return anniversary.getTime();
+    }
+
+    /**
+     * Determine the difference, in days between two dates.  Uses similar logic as the
+     * {@link android.text.format.DateUtils.getRelativeTimeSpanString} method.
+     *
+     * @param time Instance of time object to use for calculations.
+     * @param date1 First date to check.
+     * @param date2 Second date to check.
+     * @return The absolute difference in days between the two dates.
+     */
+    public static int getDayDifference(Time time, long date1, long date2) {
+        time.set(date1);
+        int startDay = Time.getJulianDay(date1, time.gmtoff);
+
+        time.set(date2);
+        int currentDay = Time.getJulianDay(date2, time.gmtoff);
+
+        return Math.abs(currentDay - startDay);
+    }
+}
diff --git a/src/com/android/contacts/common/util/EmptyService.java b/src/com/android/contacts/common/util/EmptyService.java
new file mode 100644
index 0000000..c5c3608
--- /dev/null
+++ b/src/com/android/contacts/common/util/EmptyService.java
@@ -0,0 +1,33 @@
+/*
+ * 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.contacts.common.util;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+/**
+ * Background {@link Service} that is used to keep our process alive long enough
+ * for background threads to finish. Started and stopped directly by specific
+ * background tasks when needed.
+ */
+public class EmptyService extends Service {
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+}
diff --git a/src/com/android/contacts/common/util/ImplicitIntentsUtil.java b/src/com/android/contacts/common/util/ImplicitIntentsUtil.java
new file mode 100644
index 0000000..c6a875b
--- /dev/null
+++ b/src/com/android/contacts/common/util/ImplicitIntentsUtil.java
@@ -0,0 +1,162 @@
+/*
+ * 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.contacts.common.util;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.QuickContact;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import com.android.contacts.common.model.account.GoogleAccountType;
+
+import java.util.List;
+
+/**
+ * Utility for forcing intents to be started inside the current app. This is useful for avoiding
+ * senseless disambiguation dialogs. Ie, if a user clicks a contact inside Contacts we assume
+ * they want to view the contact inside the Contacts app as opposed to a 3rd party contacts app.
+ *
+ * Methods are designed to replace the use of startActivity() for implicit intents. This class isn't
+ * necessary for explicit intents. No attempt is made to replace startActivityForResult(), since
+ * startActivityForResult() is always used with explicit intents in this project.
+ *
+ * Why not just always use explicit intents? The Contacts/Dialer app implements standard intent
+ * actions used by others apps. We want to continue exercising these intent filters to make sure
+ * they still work. Plus we sometimes don't know an explicit intent would work. See
+ * {@link #startActivityInAppIfPossible}.
+ *
+ * Some ContactsCommon code that is only used by Dialer doesn't use ImplicitIntentsUtil.
+ */
+public class ImplicitIntentsUtil {
+
+    /**
+     * Start an intent. If it is possible for this app to handle the intent, force this app's
+     * activity to handle the intent. Sometimes it is impossible to know whether this app
+     * can handle an intent while coding since the code is used inside both Dialer and Contacts.
+     * This method is particularly useful in such circumstances.
+     *
+     * On a Nexus 5 with a small number of apps, this method consistently added 3-16ms of delay
+     * in order to talk to the package manager.
+     */
+    public static void startActivityInAppIfPossible(Context context, Intent intent) {
+        final Intent appIntent = getIntentInAppIfExists(context, intent);
+        if (appIntent != null) {
+            context.startActivity(appIntent);
+        } else {
+            context.startActivity(intent);
+        }
+    }
+
+    /**
+     * Start intent using an activity inside this app. This method is useful if you are certain
+     * that the intent can be handled inside this app, and you care about shaving milliseconds.
+     */
+    public static void startActivityInApp(Context context, Intent intent) {
+        String packageName = context.getPackageName();
+        intent.setPackage(packageName);
+        context.startActivity(intent);
+    }
+
+    /**
+     * Start an intent normally. Assert that the intent can't be opened inside this app.
+     */
+    public static void startActivityOutsideApp(Context context, Intent intent) {
+        final boolean isPlatformDebugBuild = Build.TYPE.equals("eng")
+                || Build.TYPE.equals("userdebug");
+        if (isPlatformDebugBuild) {
+            if (getIntentInAppIfExists(context, intent) != null) {
+                throw new AssertionError("startActivityOutsideApp() was called for an intent" +
+                        " that can be handled inside the app");
+            }
+        }
+        context.startActivity(intent);
+    }
+
+    /**
+     * Returns an implicit intent for opening QuickContacts.
+     */
+    public static Intent composeQuickContactIntent(Uri contactLookupUri,
+            int extraMode) {
+        final Intent intent = new Intent(QuickContact.ACTION_QUICK_CONTACT);
+        intent.setData(contactLookupUri);
+        intent.putExtra(QuickContact.EXTRA_MODE, extraMode);
+        // Make sure not to show QuickContacts on top of another QuickContacts.
+        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        return intent;
+    }
+
+    /**
+     * Returns an Intent to open the Settings add account activity filtered to only
+     * display contact provider account types.
+     */
+    public static Intent getIntentForAddingAccount() {
+        final Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+        intent.putExtra(Settings.EXTRA_AUTHORITIES,
+                new String[]{ContactsContract.AUTHORITY});
+        return intent;
+    }
+
+    /**
+     * Returns an Intent to add a google account.
+     */
+    public static Intent getIntentForAddingGoogleAccount() {
+        final Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+        intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES,
+                new String[]{GoogleAccountType.ACCOUNT_TYPE});
+        return intent;
+    }
+
+    /**
+     * Returns a copy of {@param intent} with a class name set, if a class inside this app
+     * has a corresponding intent filter.
+     */
+    private static Intent getIntentInAppIfExists(Context context, Intent intent) {
+        try {
+            final Intent intentCopy = new Intent(intent);
+            // Force this intentCopy to open inside the current app.
+            intentCopy.setPackage(context.getPackageName());
+            final List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(
+                    intentCopy, PackageManager.MATCH_DEFAULT_ONLY);
+            if (list != null && list.size() != 0) {
+                // Now that we know the intentCopy will work inside the current app, we
+                // can return this intent non-null.
+                if (list.get(0).activityInfo != null
+                        && !TextUtils.isEmpty(list.get(0).activityInfo.name)) {
+                    // Now that we know the class name, we may as well attach it to intentCopy
+                    // to prevent the package manager from needing to find it again inside
+                    // startActivity(). This is only needed for efficiency.
+                    intentCopy.setClassName(context.getPackageName(),
+                            list.get(0).activityInfo.name);
+                }
+                return intentCopy;
+            }
+            return null;
+        } catch (Exception e) {
+            // Don't let the package manager crash our app. If the package manager can't resolve the
+            // intent here, then we can still call startActivity without calling setClass() first.
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/util/LocalizedNameResolver.java b/src/com/android/contacts/common/util/LocalizedNameResolver.java
new file mode 100644
index 0000000..92104c4
--- /dev/null
+++ b/src/com/android/contacts/common/util/LocalizedNameResolver.java
@@ -0,0 +1,146 @@
+/*
+ * 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.contacts.common.util;
+
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.Xml;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.account.ExternalAccountType;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+
+/**
+ * Retrieves localized names per account type. This allows customizing texts like
+ * "All Contacts" for certain account types, but e.g. "All Friends" or "All Connections" for others.
+ */
+public class LocalizedNameResolver  {
+    private static final String TAG = "LocalizedNameResolver";
+
+    private static final String CONTACTS_DATA_KIND = "ContactsDataKind";
+
+    /**
+     * Returns the name for All Contacts for the specified account type.
+     */
+    public static String getAllContactsName(Context context, String accountType) {
+        if (context == null) throw new IllegalArgumentException("Context must not be null");
+        if (accountType == null) return null;
+
+        return resolveAllContactsName(context, accountType);
+     }
+
+    /**
+     * Finds "All Contacts"-Name for the specified account type.
+     */
+    private static String resolveAllContactsName(Context context, String accountType) {
+        final AccountManager am = AccountManager.get(context);
+
+        for (AuthenticatorDescription auth : am.getAuthenticatorTypes()) {
+            if (accountType.equals(auth.type)) {
+                return resolveAllContactsNameFromMetaData(context, auth.packageName);
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Finds the meta-data XML containing the contacts configuration and
+     * reads the picture priority from that file.
+     */
+    private static String resolveAllContactsNameFromMetaData(Context context, String packageName) {
+        final XmlResourceParser parser = ExternalAccountType.loadContactsXml(context, packageName);
+        if (parser != null) {
+            return loadAllContactsNameFromXml(context, parser, packageName);
+        }
+        return null;
+    }
+
+    private static String loadAllContactsNameFromXml(Context context, XmlPullParser parser,
+            String packageName) {
+        try {
+            final AttributeSet attrs = Xml.asAttributeSet(parser);
+            int type;
+            while ((type = parser.next()) != XmlPullParser.START_TAG
+                    && type != XmlPullParser.END_DOCUMENT) {
+                // Drain comments and whitespace
+            }
+
+            if (type != XmlPullParser.START_TAG) {
+                throw new IllegalStateException("No start tag found");
+            }
+
+            final int depth = parser.getDepth();
+            while (((type = parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth)
+                    && type != XmlPullParser.END_DOCUMENT) {
+                String name = parser.getName();
+                if (type == XmlPullParser.START_TAG && CONTACTS_DATA_KIND.equals(name)) {
+                    final TypedArray typedArray = context.obtainStyledAttributes(attrs,
+                            R.styleable.ContactsDataKind);
+                    try {
+                        // See if a string has been hardcoded directly into the xml
+                        final String nonResourceString = typedArray.getNonResourceString(
+                                R.styleable.ContactsDataKind_android_allContactsName);
+                        if (nonResourceString != null) {
+                            return nonResourceString;
+                        }
+
+                        // See if a resource is referenced. We can't rely on getString
+                        // to automatically resolve it as the resource lives in a different package
+                        int id = typedArray.getResourceId(
+                                R.styleable.ContactsDataKind_android_allContactsName, 0);
+                        if (id == 0) return null;
+
+                        // Resolve the resource Id
+                        final PackageManager packageManager = context.getPackageManager();
+                        final Resources resources;
+                        try {
+                            resources = packageManager.getResourcesForApplication(packageName);
+                        } catch (NameNotFoundException e) {
+                            return null;
+                        }
+                        try {
+                            return resources.getString(id);
+                        } catch (NotFoundException e) {
+                            return null;
+                        }
+                    } finally {
+                        typedArray.recycle();
+                    }
+                }
+            }
+            return null;
+        } catch (XmlPullParserException e) {
+            throw new IllegalStateException("Problem reading XML", e);
+        } catch (IOException e) {
+            throw new IllegalStateException("Problem reading XML", e);
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/util/MaterialColorMapUtils.java b/src/com/android/contacts/common/util/MaterialColorMapUtils.java
new file mode 100644
index 0000000..a8fbf42
--- /dev/null
+++ b/src/com/android/contacts/common/util/MaterialColorMapUtils.java
@@ -0,0 +1,180 @@
+/*
+ * 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.contacts.common.util;
+
+import com.android.contacts.common.R;
+
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.Trace;
+
+public class MaterialColorMapUtils {
+    private final TypedArray sPrimaryColors;
+    private final TypedArray sSecondaryColors;
+
+    public MaterialColorMapUtils(Resources resources) {
+        sPrimaryColors = resources.obtainTypedArray(
+                com.android.contacts.common.R.array.letter_tile_colors);
+        sSecondaryColors = resources.obtainTypedArray(
+                com.android.contacts.common.R.array.letter_tile_colors_dark);
+    }
+
+    public static class MaterialPalette implements Parcelable {
+        public MaterialPalette(int primaryColor, int secondaryColor) {
+            mPrimaryColor = primaryColor;
+            mSecondaryColor = secondaryColor;
+        }
+        public final int mPrimaryColor;
+        public final int mSecondaryColor;
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            MaterialPalette other = (MaterialPalette) obj;
+            if (mPrimaryColor != other.mPrimaryColor) {
+                return false;
+            }
+            if (mSecondaryColor != other.mSecondaryColor) {
+                return false;
+            }
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + mPrimaryColor;
+            result = prime * result + mSecondaryColor;
+            return result;
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeInt(mPrimaryColor);
+            dest.writeInt(mSecondaryColor);
+        }
+
+        private MaterialPalette(Parcel in) {
+            mPrimaryColor = in.readInt();
+            mSecondaryColor = in.readInt();
+        }
+
+        public static final Creator<MaterialPalette> CREATOR = new Creator<MaterialPalette>() {
+                @Override
+                public MaterialPalette createFromParcel(Parcel in) {
+                    return new MaterialPalette(in);
+                }
+
+                @Override
+                public MaterialPalette[] newArray(int size) {
+                    return new MaterialPalette[size];
+                }
+        };
+    }
+
+    /**
+     * Return primary and secondary colors from the Material color palette that are similar to
+     * {@param color}.
+     */
+    public MaterialPalette calculatePrimaryAndSecondaryColor(int color) {
+        Trace.beginSection("calculatePrimaryAndSecondaryColor");
+
+        final float colorHue = hue(color);
+        float minimumDistance = Float.MAX_VALUE;
+        int indexBestMatch = 0;
+        for (int i = 0; i < sPrimaryColors.length(); i++) {
+            final int primaryColor = sPrimaryColors.getColor(i, 0);
+            final float comparedHue = hue(primaryColor);
+            // No need to be perceptually accurate when calculating color distances since
+            // we are only mapping to 15 colors. Being slightly inaccurate isn't going to change
+            // the mapping very often.
+            final float distance = Math.abs(comparedHue - colorHue);
+            if (distance < minimumDistance) {
+                minimumDistance = distance;
+                indexBestMatch = i;
+            }
+        }
+
+        Trace.endSection();
+        return new MaterialPalette(sPrimaryColors.getColor(indexBestMatch, 0),
+                sSecondaryColors.getColor(indexBestMatch, 0));
+    }
+
+    public static MaterialPalette getDefaultPrimaryAndSecondaryColors(Resources resources) {
+        final int primaryColor = resources.getColor(
+                R.color.quickcontact_default_photo_tint_color);
+        final int secondaryColor = resources.getColor(
+                R.color.quickcontact_default_photo_tint_color_dark);
+        return new MaterialPalette(primaryColor, secondaryColor);
+    }
+
+    /**
+     * Returns the hue component of a color int.
+     *
+     * @return A value between 0.0f and 1.0f
+     */
+    public static float hue(int color) {
+        int r = (color >> 16) & 0xFF;
+        int g = (color >> 8) & 0xFF;
+        int b = color & 0xFF;
+
+        int V = Math.max(b, Math.max(r, g));
+        int temp = Math.min(b, Math.min(r, g));
+
+        float H;
+
+        if (V == temp) {
+            H = 0;
+        } else {
+            final float vtemp = V - temp;
+            final float cr = (V - r) / vtemp;
+            final float cg = (V - g) / vtemp;
+            final float cb = (V - b) / vtemp;
+
+            if (r == V) {
+                H = cb - cg;
+            } else if (g == V) {
+                H = 2 + cr - cb;
+            } else {
+                H = 4 + cg - cr;
+            }
+
+            H /= 6.f;
+            if (H < 0) {
+                H++;
+            }
+        }
+
+        return H;
+    }
+}
diff --git a/src/com/android/contacts/common/util/NameConverter.java b/src/com/android/contacts/common/util/NameConverter.java
new file mode 100644
index 0000000..9706353
--- /dev/null
+++ b/src/com/android/contacts/common/util/NameConverter.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.util;
+
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.net.Uri.Builder;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.text.TextUtils;
+
+import com.android.contacts.common.model.dataitem.StructuredNameDataItem;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Utility class for converting between a display name and structured name (and vice-versa), via
+ * calls to the contact provider.
+ */
+public class NameConverter {
+
+    /**
+     * The array of fields that comprise a structured name.
+     */
+    public static final String[] STRUCTURED_NAME_FIELDS = new String[] {
+            StructuredName.PREFIX,
+            StructuredName.GIVEN_NAME,
+            StructuredName.MIDDLE_NAME,
+            StructuredName.FAMILY_NAME,
+            StructuredName.SUFFIX
+    };
+
+    /**
+     * Converts the given structured name (provided as a map from {@link StructuredName} fields to
+     * corresponding values) into a display name string.
+     * <p>
+     * Note that this operates via a call back to the ContactProvider, but it does not access the
+     * database, so it should be safe to call from the UI thread.  See
+     * ContactsProvider2.completeName() for the underlying method call.
+     * @param context Activity context.
+     * @param structuredName The structured name map to convert.
+     * @return The display name computed from the structured name map.
+     */
+    public static String structuredNameToDisplayName(Context context,
+            Map<String, String> structuredName) {
+        Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name");
+        for (String key : STRUCTURED_NAME_FIELDS) {
+            if (structuredName.containsKey(key)) {
+                appendQueryParameter(builder, key, structuredName.get(key));
+            }
+        }
+        return fetchDisplayName(context, builder.build());
+    }
+
+    /**
+     * Converts the given structured name (provided as ContentValues) into a display name string.
+     * @param context Activity context.
+     * @param values The content values containing values comprising the structured name.
+     * @return
+     */
+    public static String structuredNameToDisplayName(Context context, ContentValues values) {
+        Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name");
+        for (String key : STRUCTURED_NAME_FIELDS) {
+            if (values.containsKey(key)) {
+                appendQueryParameter(builder, key, values.getAsString(key));
+            }
+        }
+        return fetchDisplayName(context, builder.build());
+    }
+
+    /**
+     * Helper method for fetching the display name via the given URI.
+     */
+    private static String fetchDisplayName(Context context, Uri uri) {
+        String displayName = null;
+        Cursor cursor = context.getContentResolver().query(uri, new String[]{
+                StructuredName.DISPLAY_NAME,
+        }, null, null, null);
+
+        if (cursor != null) {
+            try {
+                if (cursor.moveToFirst()) {
+                    displayName = cursor.getString(0);
+                }
+            } finally {
+                cursor.close();
+            }
+        }
+        return displayName;
+    }
+
+    /**
+     * Converts the given display name string into a structured name (as a map from
+     * {@link StructuredName} fields to corresponding values).
+     * <p>
+     * Note that this operates via a call back to the ContactProvider, but it does not access the
+     * database, so it should be safe to call from the UI thread.
+     * @param context Activity context.
+     * @param displayName The display name to convert.
+     * @return The structured name map computed from the display name.
+     */
+    public static Map<String, String> displayNameToStructuredName(Context context,
+            String displayName) {
+        Map<String, String> structuredName = new TreeMap<String, String>();
+        Builder builder = ContactsContract.AUTHORITY_URI.buildUpon().appendPath("complete_name");
+
+        appendQueryParameter(builder, StructuredName.DISPLAY_NAME, displayName);
+        Cursor cursor = context.getContentResolver().query(builder.build(), STRUCTURED_NAME_FIELDS,
+                null, null, null);
+
+        if (cursor != null) {
+            try {
+                if (cursor.moveToFirst()) {
+                    for (int i = 0; i < STRUCTURED_NAME_FIELDS.length; i++) {
+                        structuredName.put(STRUCTURED_NAME_FIELDS[i], cursor.getString(i));
+                    }
+                }
+            } finally {
+                cursor.close();
+            }
+        }
+        return structuredName;
+    }
+
+    /**
+     * Converts the given display name string into a structured name (inserting the structured
+     * values into a new or existing ContentValues object).
+     * <p>
+     * Note that this operates via a call back to the ContactProvider, but it does not access the
+     * database, so it should be safe to call from the UI thread.
+     * @param context Activity context.
+     * @param displayName The display name to convert.
+     * @param contentValues The content values object to place the structured name values into.  If
+     *     null, a new one will be created and returned.
+     * @return The ContentValues object containing the structured name fields derived from the
+     *     display name.
+     */
+    public static ContentValues displayNameToStructuredName(Context context, String displayName,
+            ContentValues contentValues) {
+        if (contentValues == null) {
+            contentValues = new ContentValues();
+        }
+        Map<String, String> mapValues = displayNameToStructuredName(context, displayName);
+        for (String key : mapValues.keySet()) {
+            contentValues.put(key, mapValues.get(key));
+        }
+        return contentValues;
+    }
+
+    private static void appendQueryParameter(Builder builder, String field, String value) {
+        if (!TextUtils.isEmpty(value)) {
+            builder.appendQueryParameter(field, value);
+        }
+    }
+
+    /**
+     * Parses phonetic name and returns parsed data (family, middle, given) as ContentValues.
+     * Parsed data should be {@link StructuredName#PHONETIC_FAMILY_NAME},
+     * {@link StructuredName#PHONETIC_MIDDLE_NAME}, and
+     * {@link StructuredName#PHONETIC_GIVEN_NAME}.
+     * If this method cannot parse given phoneticName, null values will be stored.
+     *
+     * @param phoneticName Phonetic name to be parsed
+     * @param values ContentValues to be used for storing data. If null, new instance will be
+     * created.
+     * @return ContentValues with parsed data. Those data can be null.
+     */
+    public static StructuredNameDataItem parsePhoneticName(String phoneticName,
+            StructuredNameDataItem item) {
+        String family = null;
+        String middle = null;
+        String given = null;
+
+        if (!TextUtils.isEmpty(phoneticName)) {
+            String[] strings = phoneticName.split(" ", 3);
+            switch (strings.length) {
+                case 1:
+                    family = strings[0];
+                    break;
+                case 2:
+                    family = strings[0];
+                    given = strings[1];
+                    break;
+                case 3:
+                    family = strings[0];
+                    middle = strings[1];
+                    given = strings[2];
+                    break;
+            }
+        }
+
+        if (item == null) {
+            item = new StructuredNameDataItem();
+        }
+        item.setPhoneticFamilyName(family);
+        item.setPhoneticMiddleName(middle);
+        item.setPhoneticGivenName(given);
+        return item;
+    }
+
+    /**
+     * Constructs and returns a phonetic full name from given parts.
+     */
+    public static String buildPhoneticName(String family, String middle, String given) {
+        if (!TextUtils.isEmpty(family) || !TextUtils.isEmpty(middle)
+                || !TextUtils.isEmpty(given)) {
+            StringBuilder sb = new StringBuilder();
+            if (!TextUtils.isEmpty(family)) {
+                sb.append(family.trim()).append(' ');
+            }
+            if (!TextUtils.isEmpty(middle)) {
+                sb.append(middle.trim()).append(' ');
+            }
+            if (!TextUtils.isEmpty(given)) {
+                sb.append(given.trim()).append(' ');
+            }
+            sb.setLength(sb.length() - 1); // Yank the last space
+            return sb.toString();
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/util/PermissionsUtil.java b/src/com/android/contacts/common/util/PermissionsUtil.java
new file mode 100644
index 0000000..37c1762
--- /dev/null
+++ b/src/com/android/contacts/common/util/PermissionsUtil.java
@@ -0,0 +1,108 @@
+/*
+ * 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.contacts.common.util;
+
+import android.Manifest.permission;
+import android.app.AppOpsManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.content.LocalBroadcastManager;
+
+/**
+ * Utility class to help with runtime permissions.
+ */
+public class PermissionsUtil {
+    // Each permission in this list is a cherry-picked permission from a particular permission
+    // group. Granting a permission group enables access to all permissions in that group so we
+    // only need to check a single permission in each group.
+    // Note: This assumes that the app has correctly requested for all the relevant permissions
+    // in its Manifest file.
+    public static final String PHONE = permission.CALL_PHONE;
+    public static final String CONTACTS = permission.READ_CONTACTS;
+    public static final String LOCATION = permission.ACCESS_FINE_LOCATION;
+
+    public static boolean hasPhonePermissions(Context context) {
+        return hasPermission(context, PHONE);
+    }
+
+    public static boolean hasContactsPermissions(Context context) {
+        return hasPermission(context, CONTACTS);
+    }
+
+    public static boolean hasLocationPermissions(Context context) {
+        return hasPermission(context, LOCATION);
+    }
+
+    public static boolean hasPermission(Context context, String permission) {
+        return ContextCompat.checkSelfPermission(context, permission)
+                == PackageManager.PERMISSION_GRANTED;
+    }
+
+    public static boolean hasAppOp(Context context, String appOp) {
+        final AppOpsManager appOpsManager =
+                (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+        final int mode = appOpsManager.checkOpNoThrow(appOp, Process.myUid(),
+                context.getPackageName());
+        return mode == AppOpsManager.MODE_ALLOWED;
+    }
+
+    /**
+     * Rudimentary methods wrapping the use of a LocalBroadcastManager to simplify the process
+     * of notifying other classes when a particular fragment is notified that a permission is
+     * granted.
+     *
+     * To be notified when a permission has been granted, create a new broadcast receiver
+     * and register it using {@link #registerPermissionReceiver(Context, BroadcastReceiver, String)}
+     *
+     * E.g.
+     *
+     * final BroadcastReceiver receiver = new BroadcastReceiver() {
+     *     @Override
+     *     public void onReceive(Context context, Intent intent) {
+     *         refreshContactsView();
+     *     }
+     * }
+     *
+     * PermissionsUtil.registerPermissionReceiver(getActivity(), receiver, READ_CONTACTS);
+     *
+     * If you register to listen for multiple permissions, you can identify which permission was
+     * granted by inspecting {@link Intent#getAction()}.
+     *
+     * In the fragment that requests for the permission, be sure to call
+     * {@link #notifyPermissionGranted(Context, String)} when the permission is granted so that
+     * any interested listeners are notified of the change.
+     */
+    public static void registerPermissionReceiver(Context context, BroadcastReceiver receiver,
+            String permission) {
+        final IntentFilter filter = new IntentFilter(permission);
+        LocalBroadcastManager.getInstance(context).registerReceiver(receiver, filter);
+    }
+
+    public static void unregisterPermissionReceiver(Context context, BroadcastReceiver receiver) {
+        LocalBroadcastManager.getInstance(context).unregisterReceiver(receiver);
+    }
+
+    public static void notifyPermissionGranted(Context context, String permission) {
+        final Intent intent = new Intent(permission);
+        LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
+    }
+}
diff --git a/src/com/android/contacts/common/util/PhoneNumberFormatter.java b/src/com/android/contacts/common/util/PhoneNumberFormatter.java
new file mode 100644
index 0000000..bbf9785
--- /dev/null
+++ b/src/com/android/contacts/common/util/PhoneNumberFormatter.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.util;
+
+import android.content.Context;
+import android.os.AsyncTask;
+import android.telephony.PhoneNumberFormattingTextWatcher;
+import android.widget.TextView;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.compat.PhoneNumberFormattingTextWatcherCompat;
+
+public final class PhoneNumberFormatter {
+    private PhoneNumberFormatter() {}
+
+    /**
+     * Load {@link TextWatcherLoadAsyncTask} in a worker thread and set it to a {@link TextView}.
+     */
+    private static class TextWatcherLoadAsyncTask extends
+            AsyncTask<Void, Void, PhoneNumberFormattingTextWatcher> {
+        private final String mCountryCode;
+        private final TextView mTextView;
+        private final boolean mFormatAfterWatcherSet;
+
+        public TextWatcherLoadAsyncTask(
+                String countryCode, TextView textView, boolean formatAfterWatcherSet) {
+            mCountryCode = countryCode;
+            mTextView = textView;
+            mFormatAfterWatcherSet = formatAfterWatcherSet;
+        }
+
+        @Override
+        protected PhoneNumberFormattingTextWatcher doInBackground(Void... params) {
+            return PhoneNumberFormattingTextWatcherCompat.newInstance(mCountryCode);
+        }
+
+        @Override
+        protected void onPostExecute(PhoneNumberFormattingTextWatcher watcher) {
+            if (watcher == null || isCancelled()) {
+                return; // May happen if we cancel the task.
+            }
+
+            // Setting a text changed listener is safe even after the view is detached.
+            mTextView.addTextChangedListener(watcher);
+
+            // Forcing formatting the existing phone number
+            if (mFormatAfterWatcherSet) {
+                watcher.afterTextChanged(mTextView.getEditableText());
+            }
+        }
+    }
+
+    /**
+     * Delay-set {@link PhoneNumberFormattingTextWatcher} to a {@link TextView}.
+     */
+    public static final void setPhoneNumberFormattingTextWatcher(Context context,
+            TextView textView) {
+        setPhoneNumberFormattingTextWatcher(context, textView,
+                /* formatAfterWatcherSet =*/ false);
+    }
+
+    /**
+     * Delay-sets {@link PhoneNumberFormattingTextWatcher} to a {@link TextView}
+     * and formats the number immediately if formatAfterWaterSet is true.
+     * In some cases, formatting before user editing might cause unwanted results
+     * (e.g. the editor thinks the user changed the content, and would save
+     * when closed even when the user didn't make other changes.)
+     */
+    public static final void setPhoneNumberFormattingTextWatcher(
+            Context context, TextView textView, boolean formatAfterWatcherSet) {
+        new TextWatcherLoadAsyncTask(GeoUtil.getCurrentCountryIso(context),
+                textView, formatAfterWatcherSet)
+                .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null);
+    }
+}
diff --git a/src/com/android/contacts/common/util/PhoneNumberHelper.java b/src/com/android/contacts/common/util/PhoneNumberHelper.java
new file mode 100644
index 0000000..794b6dd
--- /dev/null
+++ b/src/com/android/contacts/common/util/PhoneNumberHelper.java
@@ -0,0 +1,107 @@
+/*
+ * 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.contacts.common.util;
+
+import android.content.Context;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import com.google.i18n.phonenumbers.ShortNumberInfo;
+
+import java.util.Locale;
+
+/**
+ * This class wraps several PhoneNumberUtil calls and TelephonyManager calls. Some of them are
+ * the same as the ones in the framework's code base. We can remove those once they are part of
+ * the public API.
+ */
+public class PhoneNumberHelper {
+
+    private static final String LOG_TAG = PhoneNumberHelper.class.getSimpleName();
+
+    private static final String KOREA_ISO_COUNTRY_CODE = "KR";
+    /**
+     * Determines if the specified number is actually a URI (i.e. a SIP address) rather than a
+     * regular PSTN phone number, based on whether or not the number contains an "@" character.
+     *
+     * @param number Phone number
+     * @return true if number contains @
+     *
+     * TODO: Remove if PhoneNumberUtils.isUriNumber(String number) is made public.
+     */
+    public static boolean isUriNumber(String number) {
+        // Note we allow either "@" or "%40" to indicate a URI, in case
+        // the passed-in string is URI-escaped.  (Neither "@" nor "%40"
+        // will ever be found in a legal PSTN number.)
+        return number != null && (number.contains("@") || number.contains("%40"));
+    }
+
+    /**
+     * Normalize a phone number by removing the characters other than digits. If
+     * the given number has keypad letters, the letters will be converted to
+     * digits first.
+     *
+     * @param phoneNumber The number to be normalized.
+     * @return The normalized number.
+     *
+     * TODO: Remove if PhoneNumberUtils.normalizeNumber(String phoneNumber) is made public.
+     */
+    public static String normalizeNumber(String phoneNumber) {
+        StringBuilder sb = new StringBuilder();
+        int len = phoneNumber.length();
+        for (int i = 0; i < len; i++) {
+            char c = phoneNumber.charAt(i);
+            // Character.digit() supports ASCII and Unicode digits (fullwidth, Arabic-Indic, etc.)
+            int digit = Character.digit(c, 10);
+            if (digit != -1) {
+                sb.append(digit);
+            } else if (i == 0 && c == '+') {
+                sb.append(c);
+            } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+                return normalizeNumber(PhoneNumberUtils.convertKeypadLettersToDigits(phoneNumber));
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * @return the "username" part of the specified SIP address, i.e. the part before the "@"
+     * character (or "%40").
+     *
+     * @param number SIP address of the form "username@domainname" (or the URI-escaped equivalent
+     * "username%40domainname")
+     *
+     * TODO: Remove if PhoneNumberUtils.getUsernameFromUriNumber(String number) is made public.
+     */
+    public static String getUsernameFromUriNumber(String number) {
+        // The delimiter between username and domain name can be
+        // either "@" or "%40" (the URI-escaped equivalent.)
+        int delimiterIndex = number.indexOf('@');
+        if (delimiterIndex < 0) {
+            delimiterIndex = number.indexOf("%40");
+        }
+        if (delimiterIndex < 0) {
+            Log.w(LOG_TAG,
+                    "getUsernameFromUriNumber: no delimiter found in SIP addr '" + number + "'");
+            return number;
+        }
+        return number.substring(0, delimiterIndex);
+    }
+}
diff --git a/src/com/android/contacts/common/util/SchedulingUtils.java b/src/com/android/contacts/common/util/SchedulingUtils.java
new file mode 100644
index 0000000..1dfa153
--- /dev/null
+++ b/src/com/android/contacts/common/util/SchedulingUtils.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.view.View;
+import android.view.ViewTreeObserver.OnGlobalLayoutListener;
+import android.view.ViewTreeObserver.OnPreDrawListener;
+
+/** Static methods that are useful for scheduling actions to occur at a later time. */
+public class SchedulingUtils {
+
+
+    /** Runs a piece of code after the next layout run */
+    public static void doAfterLayout(final View view, final Runnable runnable) {
+        final OnGlobalLayoutListener listener = new OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                // Layout pass done, unregister for further events
+                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                runnable.run();
+            }
+        };
+        view.getViewTreeObserver().addOnGlobalLayoutListener(listener);
+    }
+
+    /** Runs a piece of code just before the next draw, after layout and measurement */
+    public static void doOnPreDraw(final View view, final boolean drawNextFrame,
+            final Runnable runnable) {
+        final OnPreDrawListener listener = new OnPreDrawListener() {
+            @Override
+            public boolean onPreDraw() {
+                view.getViewTreeObserver().removeOnPreDrawListener(this);
+                runnable.run();
+                return drawNextFrame;
+            }
+        };
+        view.getViewTreeObserver().addOnPreDrawListener(listener);
+    }
+}
diff --git a/src/com/android/contacts/common/util/SearchUtil.java b/src/com/android/contacts/common/util/SearchUtil.java
new file mode 100644
index 0000000..ed41d6c
--- /dev/null
+++ b/src/com/android/contacts/common/util/SearchUtil.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import com.google.common.annotations.VisibleForTesting;
+
+/**
+ * Methods related to search.
+ */
+public class SearchUtil {
+
+    public static class MatchedLine {
+
+        public int startIndex = -1;
+        public String line;
+
+        @Override
+        public String toString() {
+            return "MatchedLine{" +
+                    "line='" + line + '\'' +
+                    ", startIndex=" + startIndex +
+                    '}';
+        }
+    }
+
+    /**
+     * Given a string with lines delimited with '\n', finds the matching line to the given
+     * substring.
+     *
+     * @param contents The string to search.
+     * @param substring The substring to search for.
+     * @return A MatchedLine object containing the matching line and the startIndex of the substring
+     * match within that line.
+     */
+    public static MatchedLine findMatchingLine(String contents, String substring) {
+        final MatchedLine matched = new MatchedLine();
+
+        // Snippet may contain multiple lines separated by "\n".
+        // Locate the lines of the content that contain the substring.
+        final int index = SearchUtil.contains(contents, substring);
+        if (index != -1) {
+            // Match found.  Find the corresponding line.
+            int start = index - 1;
+            while (start > -1) {
+                if (contents.charAt(start) == '\n') {
+                    break;
+                }
+                start--;
+            }
+            int end = index + 1;
+            while (end < contents.length()) {
+                if (contents.charAt(end) == '\n') {
+                    break;
+                }
+                end++;
+            }
+            matched.line = contents.substring(start + 1, end);
+            matched.startIndex = index - (start + 1);
+        }
+        return matched;
+    }
+
+    /**
+     * Similar to String.contains() with two main differences:
+     * <p>
+     * 1) Only searches token prefixes.  A token is defined as any combination of letters or
+     * numbers.
+     * <p>
+     * 2) Returns the starting index where the substring is found.
+     *
+     * @param value The string to search.
+     * @param substring The substring to look for.
+     * @return The starting index where the substring is found. {@literal -1} if substring is not
+     *         found in value.
+     */
+    @VisibleForTesting
+    static int contains(String value, String substring) {
+        if (value.length() < substring.length()) {
+            return -1;
+        }
+
+        // i18n support
+        // Generate the code points for the substring once.
+        // There will be a maximum of substring.length code points.  But may be fewer.
+        // Since the array length is not an accurate size, we need to keep a separate variable.
+        final int[] substringCodePoints = new int[substring.length()];
+        int substringLength = 0;  // may not equal substring.length()!!
+        for (int i = 0; i < substring.length(); ) {
+            final int codePoint = Character.codePointAt(substring, i);
+            substringCodePoints[substringLength] = codePoint;
+            substringLength++;
+            i += Character.charCount(codePoint);
+        }
+
+        for (int i = 0; i < value.length(); i = findNextTokenStart(value, i)) {
+            int numMatch = 0;
+            for (int j = i; j < value.length() && numMatch < substringLength; ++numMatch) {
+                int valueCp = Character.toLowerCase(value.codePointAt(j));
+                int substringCp = substringCodePoints[numMatch];
+                if (valueCp != substringCp) {
+                    break;
+                }
+                j += Character.charCount(valueCp);
+            }
+            if (numMatch == substringLength) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Find the start of the next token.  A token is composed of letters and numbers. Any other
+     * character are considered delimiters.
+     *
+     * @param line The string to search for the next token.
+     * @param startIndex The index to start searching.  0 based indexing.
+     * @return The index for the start of the next token.  line.length() if next token not found.
+     */
+    @VisibleForTesting
+    static int findNextTokenStart(String line, int startIndex) {
+        int index = startIndex;
+
+        // If already in token, eat remainder of token.
+        while (index <= line.length()) {
+            if (index == line.length()) {
+                // No more tokens.
+                return index;
+            }
+            final int codePoint = line.codePointAt(index);
+            if (!Character.isLetterOrDigit(codePoint)) {
+                break;
+            }
+            index += Character.charCount(codePoint);
+        }
+
+        // Out of token, eat all consecutive delimiters.
+        while (index <= line.length()) {
+            if (index == line.length()) {
+                return index;
+            }
+            final int codePoint = line.codePointAt(index);
+            if (Character.isLetterOrDigit(codePoint)) {
+                break;
+            }
+            index += Character.charCount(codePoint);
+        }
+
+        return index;
+    }
+
+    /**
+     * Anything other than letter and numbers are considered delimiters.  Remove start and end
+     * delimiters since they are not relevant to search.
+     *
+     * @param query The query string to clean.
+     * @return The cleaned query. Empty string if all characters are cleaned out.
+     */
+    public static String cleanStartAndEndOfSearchQuery(String query) {
+        int start = 0;
+        while (start < query.length()) {
+            int codePoint = query.codePointAt(start);
+            if (Character.isLetterOrDigit(codePoint)) {
+                break;
+            }
+            start += Character.charCount(codePoint);
+        }
+
+        if (start == query.length()) {
+            // All characters are delimiters.
+            return "";
+        }
+
+        int end = query.length() - 1;
+        while (end > -1) {
+            if (Character.isLowSurrogate(query.charAt(end))) {
+                // Assume valid i18n string.  There should be a matching high surrogate before it.
+                end--;
+            }
+            int codePoint = query.codePointAt(end);
+            if (Character.isLetterOrDigit(codePoint)) {
+                break;
+            }
+            end--;
+        }
+
+        // end is a letter or digit.
+        return query.substring(start, end + 1);
+    }
+}
diff --git a/src/com/android/contacts/common/util/StopWatch.java b/src/com/android/contacts/common/util/StopWatch.java
new file mode 100644
index 0000000..581d6ee
--- /dev/null
+++ b/src/com/android/contacts/common/util/StopWatch.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.util.Log;
+
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * A {@link StopWatch} records start, laps and stop, and print them to logcat.
+ */
+public class StopWatch {
+
+    private final String mLabel;
+
+    private final ArrayList<Long> mTimes = Lists.newArrayList();
+    private final ArrayList<String> mLapLabels = Lists.newArrayList();
+
+    private StopWatch(String label) {
+        mLabel = label;
+        lap("");
+    }
+
+    /**
+     * Create a new instance and start it.
+     */
+    public static StopWatch start(String label) {
+        return new StopWatch(label);
+    }
+
+    /**
+     * Record a lap.
+     */
+    public void lap(String lapLabel) {
+        mTimes.add(System.currentTimeMillis());
+        mLapLabels.add(lapLabel);
+    }
+
+    /**
+     * Stop it and log the result, if the total time >= {@code timeThresholdToLog}.
+     */
+    public void stopAndLog(String TAG, int timeThresholdToLog) {
+
+        lap("");
+
+        final long start = mTimes.get(0);
+        final long stop = mTimes.get(mTimes.size() - 1);
+
+        final long total = stop - start;
+        if (total < timeThresholdToLog) return;
+
+        final StringBuilder sb = new StringBuilder();
+        sb.append(mLabel);
+        sb.append(",");
+        sb.append(total);
+        sb.append(": ");
+
+        long last = start;
+        for (int i = 1; i < mTimes.size(); i++) {
+            final long current = mTimes.get(i);
+            sb.append(mLapLabels.get(i));
+            sb.append(",");
+            sb.append((current - last));
+            sb.append(" ");
+            last = current;
+        }
+        Log.v(TAG, sb.toString());
+    }
+
+    /**
+     * Return a dummy instance that does no operations.
+     */
+    public static StopWatch getNullStopWatch() {
+        return NullStopWatch.INSTANCE;
+    }
+
+    private static class NullStopWatch extends StopWatch {
+        public static final NullStopWatch INSTANCE = new NullStopWatch();
+
+        public NullStopWatch() {
+            super(null);
+        }
+
+        @Override
+        public void lap(String lapLabel) {
+            // noop
+        }
+
+        @Override
+        public void stopAndLog(String TAG, int timeThresholdToLog) {
+            // noop
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/util/TelephonyManagerUtils.java b/src/com/android/contacts/common/util/TelephonyManagerUtils.java
new file mode 100644
index 0000000..7c322ca
--- /dev/null
+++ b/src/com/android/contacts/common/util/TelephonyManagerUtils.java
@@ -0,0 +1,73 @@
+/*
+ * 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.contacts.common.util;
+
+import android.content.Context;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import java.util.Locale;
+
+/**
+ * This class provides several TelephonyManager util functions.
+ */
+public class TelephonyManagerUtils {
+
+    private static final String LOG_TAG = TelephonyManagerUtils.class.getSimpleName();
+
+    /**
+     * Gets the voicemail tag from Telephony Manager.
+     * @param context Current application context
+     * @return Voicemail tag, the alphabetic identifier associated with the voice mail number.
+     */
+    public static String getVoiceMailAlphaTag(Context context) {
+        final TelephonyManager telephonyManager =
+                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        final String voiceMailLabel = telephonyManager.getVoiceMailAlphaTag();
+        return voiceMailLabel;
+    }
+
+    /**
+     * @return The ISO 3166-1 two letters country code of the country the user
+     *         is in based on the network location. If the network location does not exist, fall
+     *         back to the locale setting.
+     */
+    public static String getCurrentCountryIso(Context context, Locale locale) {
+        // Without framework function calls, this seems to be the most accurate location service
+        // we can rely on.
+        final TelephonyManager telephonyManager =
+            (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        String countryIso = telephonyManager.getNetworkCountryIso().toUpperCase();
+
+        if (countryIso == null) {
+            countryIso = locale.getCountry();
+            Log.w(LOG_TAG, "No CountryDetector; falling back to countryIso based on locale: "
+                    + countryIso);
+        }
+        return countryIso;
+    }
+
+    /**
+     * @param context Current application context.
+     * @return True if there is a subscription which supports video calls. False otherwise.
+     */
+    public static boolean hasVideoCallSubscription(Context context) {
+        // TODO: Check the telephony manager's subscriptions to see if any support video calls.
+        return true;
+    }
+}
diff --git a/src/com/android/contacts/common/util/TrafficStatsTags.java b/src/com/android/contacts/common/util/TrafficStatsTags.java
new file mode 100644
index 0000000..78faa94
--- /dev/null
+++ b/src/com/android/contacts/common/util/TrafficStatsTags.java
@@ -0,0 +1,21 @@
+/*
+ * 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.contacts.common.util;
+
+public class TrafficStatsTags {
+    public static final int CONTACT_PHOTO_DOWNLOAD_TAG = 0x0001;
+    public static final int TAG_MAX = 0x9999;
+}
diff --git a/src/com/android/contacts/common/util/UriUtils.java b/src/com/android/contacts/common/util/UriUtils.java
new file mode 100644
index 0000000..41ef62f
--- /dev/null
+++ b/src/com/android/contacts/common/util/UriUtils.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.util;
+
+import android.net.Uri;
+import android.provider.ContactsContract;
+
+import java.util.List;
+
+/**
+ * Utility methods for dealing with URIs.
+ */
+public class UriUtils {
+    /** Static helper, not instantiable. */
+    private UriUtils() {}
+
+    /** Checks whether two URI are equal, taking care of the case where either is null. */
+    public static boolean areEqual(Uri uri1, Uri uri2) {
+        if (uri1 == null && uri2 == null) {
+            return true;
+        }
+        if (uri1 == null || uri2 == null) {
+            return false;
+        }
+        return uri1.equals(uri2);
+    }
+
+    /** Parses a string into a URI and returns null if the given string is null. */
+    public static Uri parseUriOrNull(String uriString) {
+        if (uriString == null) {
+            return null;
+        }
+        return Uri.parse(uriString);
+    }
+
+    /** Converts a URI into a string, returns null if the given URI is null. */
+    public static String uriToString(Uri uri) {
+        return uri == null ? null : uri.toString();
+    }
+
+    public static boolean isEncodedContactUri(Uri uri) {
+        if (uri == null) {
+            return false;
+        }
+        final String lastPathSegment = uri.getLastPathSegment();
+        if (lastPathSegment == null) {
+            return false;
+        }
+        return lastPathSegment.equals(Constants.LOOKUP_URI_ENCODED);
+    }
+
+    /**
+     * @return {@code uri} as-is if the authority is of contacts provider.  Otherwise
+     * or {@code uri} is null, return null otherwise
+     */
+    public static Uri nullForNonContactsUri(Uri uri) {
+        if (uri == null) {
+            return null;
+        }
+        return ContactsContract.AUTHORITY.equals(uri.getAuthority()) ? uri : null;
+    }
+
+    /**
+     * Parses the given URI to determine the original lookup key of the contact.
+     */
+    public static String getLookupKeyFromUri(Uri lookupUri) {
+        // Would be nice to be able to persist the lookup key somehow to avoid having to parse
+        // the uri entirely just to retrieve the lookup key, but every uri is already parsed
+        // once anyway to check if it is an encoded JSON uri, so this has negligible effect
+        // on performance.
+        if (lookupUri != null && !UriUtils.isEncodedContactUri(lookupUri)) {
+            final List<String> segments = lookupUri.getPathSegments();
+            // This returns the third path segment of the uri, where the lookup key is located.
+            // See {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}.
+            return (segments.size() < 3) ? null : Uri.encode(segments.get(2));
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/util/ViewUtil.java b/src/com/android/contacts/common/util/ViewUtil.java
new file mode 100644
index 0000000..895b757
--- /dev/null
+++ b/src/com/android/contacts/common/util/ViewUtil.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.content.res.Resources;
+import android.graphics.Outline;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewOutlineProvider;
+import android.widget.ListView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.CompatUtils;
+
+/**
+ * Provides static functions to work with views
+ */
+public class ViewUtil {
+    private ViewUtil() {}
+
+    /**
+     * Returns the width as specified in the LayoutParams
+     * @throws IllegalStateException Thrown if the view's width is unknown before a layout pass
+     * s
+     */
+    public static int getConstantPreLayoutWidth(View view) {
+        // We haven't been layed out yet, so get the size from the LayoutParams
+        final ViewGroup.LayoutParams p = view.getLayoutParams();
+        if (p.width < 0) {
+            throw new IllegalStateException("Expecting view's width to be a constant rather " +
+                    "than a result of the layout pass");
+        }
+        return p.width;
+    }
+
+    /**
+     * Returns a boolean indicating whether or not the view's layout direction is RTL
+     *
+     * @param view - A valid view
+     * @return True if the view's layout direction is RTL
+     */
+    public static boolean isViewLayoutRtl(View view) {
+        return view.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+    }
+
+    private static final ViewOutlineProvider OVAL_OUTLINE_PROVIDER;
+    static {
+        if (CompatUtils.isLollipopCompatible()) {
+            OVAL_OUTLINE_PROVIDER = new ViewOutlineProvider() {
+                @Override
+                public void getOutline(View view, Outline outline) {
+                    outline.setOval(0, 0, view.getWidth(), view.getHeight());
+                }
+            };
+        } else {
+            OVAL_OUTLINE_PROVIDER = null;
+        }
+    }
+
+    private static final ViewOutlineProvider RECT_OUTLINE_PROVIDER;
+    static {
+        if (CompatUtils.isLollipopCompatible()) {
+            RECT_OUTLINE_PROVIDER = new ViewOutlineProvider() {
+                @Override
+                public void getOutline(View view, Outline outline) {
+                    outline.setRect(0, 0, view.getWidth(), view.getHeight());
+                }
+            };
+        } else {
+            RECT_OUTLINE_PROVIDER = null;
+        }
+    }
+
+    /**
+     * Adds a rectangular outline to a view. This can be useful when you want to add a shadow
+     * to a transparent view. See b/16856049.
+     * @param view view that the outline is added to
+     * @param res The resources file.
+     */
+    public static void addRectangularOutlineProvider(View view, Resources res) {
+        if (CompatUtils.isLollipopCompatible()) {
+            view.setOutlineProvider(RECT_OUTLINE_PROVIDER);
+        }
+    }
+
+    /**
+     * Configures the floating action button, clipping it to a circle and setting its translation z.
+     * @param view The float action button's view.
+     * @param res The resources file.
+     */
+    public static void setupFloatingActionButton(View view, Resources res) {
+        if (CompatUtils.isLollipopCompatible()) {
+            view.setOutlineProvider(OVAL_OUTLINE_PROVIDER);
+            view.setTranslationZ(
+                    res.getDimensionPixelSize(R.dimen.floating_action_button_translation_z));
+        }
+    }
+
+    /**
+     * Adds padding to the bottom of the given {@link ListView} so that the floating action button
+     * does not obscure any content.
+     *
+     * @param listView to add the padding to
+     * @param res valid resources object
+     */
+    public static void addBottomPaddingToListViewForFab(ListView listView, Resources res) {
+        final int fabPadding = res.getDimensionPixelSize(
+                R.dimen.floating_action_button_list_bottom_padding);
+        listView.setPaddingRelative(listView.getPaddingStart(), listView.getPaddingTop(),
+                listView.getPaddingEnd(), listView.getPaddingBottom() + fabPadding);
+        listView.setClipToPadding(false);
+    }
+}
diff --git a/src/com/android/contacts/common/util/WeakAsyncTask.java b/src/com/android/contacts/common/util/WeakAsyncTask.java
new file mode 100644
index 0000000..f46e514
--- /dev/null
+++ b/src/com/android/contacts/common/util/WeakAsyncTask.java
@@ -0,0 +1,69 @@
+/*
+ * 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.contacts.common.util;
+
+import android.os.AsyncTask;
+
+import java.lang.ref.WeakReference;
+
+public abstract class WeakAsyncTask<Params, Progress, Result, WeakTarget> extends
+        AsyncTask<Params, Progress, Result> {
+    protected WeakReference<WeakTarget> mTarget;
+
+    public WeakAsyncTask(WeakTarget target) {
+        mTarget = new WeakReference<WeakTarget>(target);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected final void onPreExecute() {
+        final WeakTarget target = mTarget.get();
+        if (target != null) {
+            this.onPreExecute(target);
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected final Result doInBackground(Params... params) {
+        final WeakTarget target = mTarget.get();
+        if (target != null) {
+            return this.doInBackground(target, params);
+        } else {
+            return null;
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected final void onPostExecute(Result result) {
+        final WeakTarget target = mTarget.get();
+        if (target != null) {
+            this.onPostExecute(target, result);
+        }
+    }
+
+    protected void onPreExecute(WeakTarget target) {
+        // No default action
+    }
+
+    protected abstract Result doInBackground(WeakTarget target, Params... params);
+
+    protected void onPostExecute(WeakTarget target, Result result) {
+        // No default action
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/CancelActivity.java b/src/com/android/contacts/common/vcard/CancelActivity.java
new file mode 100644
index 0000000..8e393e1
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/CancelActivity.java
@@ -0,0 +1,130 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+
+/**
+ * The Activity for canceling vCard import/export.
+ */
+public class CancelActivity extends Activity implements ServiceConnection {
+    private final String LOG_TAG = "VCardCancel";
+
+    /* package */ final static String JOB_ID = "job_id";
+    /* package */ final static String DISPLAY_NAME = "display_name";
+
+    /**
+     * Type of the process to be canceled. Only used for choosing appropriate title/message.
+     * Must be {@link VCardService#TYPE_IMPORT} or {@link VCardService#TYPE_EXPORT}.
+     */
+    /* package */ final static String TYPE = "type";
+
+    private class RequestCancelListener implements DialogInterface.OnClickListener {
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            bindService(new Intent(CancelActivity.this,
+                    VCardService.class), CancelActivity.this, Context.BIND_AUTO_CREATE);
+        }
+    }
+
+    private class CancelListener
+            implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            finish();
+        }
+        @Override
+        public void onCancel(DialogInterface dialog) {
+            finish();
+        }
+    }
+
+    private final CancelListener mCancelListener = new CancelListener();
+    private int mJobId;
+    private String mDisplayName;
+    private int mType;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        final Uri uri = getIntent().getData();
+        mJobId = Integer.parseInt(uri.getQueryParameter(JOB_ID));
+        mDisplayName = uri.getQueryParameter(DISPLAY_NAME);
+        mType = Integer.parseInt(uri.getQueryParameter(TYPE));
+        showDialog(R.id.dialog_cancel_confirmation);
+    }
+
+    @Override
+    protected Dialog onCreateDialog(int id, Bundle bundle) {
+        if (id == R.id.dialog_cancel_confirmation) {
+            final String message;
+            if (mType == VCardService.TYPE_IMPORT) {
+                message = getString(R.string.cancel_import_confirmation_message, mDisplayName);
+            } else {
+                message = getString(R.string.cancel_export_confirmation_message, mDisplayName);
+            }
+            final AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                    .setMessage(message)
+                    .setPositiveButton(android.R.string.ok, new RequestCancelListener())
+                    .setOnCancelListener(mCancelListener)
+                    .setNegativeButton(android.R.string.cancel, mCancelListener);
+            return builder.create();
+        } else if (id == R.id.dialog_cancel_failed) {
+            final AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                    .setTitle(R.string.cancel_vcard_import_or_export_failed)
+                    .setIconAttribute(android.R.attr.alertDialogIcon)
+                    .setMessage(getString(R.string.fail_reason_unknown))
+                    .setOnCancelListener(mCancelListener)
+                    .setPositiveButton(android.R.string.ok, mCancelListener);
+            return builder.create();
+        } else {
+            Log.w(LOG_TAG, "Unknown dialog id: " + id);
+            return super.onCreateDialog(id, bundle);
+        }
+    }
+
+    @Override
+    public void onServiceConnected(ComponentName name, IBinder binder) {
+        VCardService service = ((VCardService.MyBinder) binder).getService();
+
+        try {
+            final CancelRequest request = new CancelRequest(mJobId, mDisplayName);
+            service.handleCancelRequest(request, null);
+        } finally {
+            unbindService(this);
+        }
+
+        finish();
+    }
+
+    @Override
+    public void onServiceDisconnected(ComponentName name) {
+        // do nothing
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/CancelRequest.java b/src/com/android/contacts/common/vcard/CancelRequest.java
new file mode 100644
index 0000000..a5eb4aa
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/CancelRequest.java
@@ -0,0 +1,32 @@
+/*
+ * 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.contacts.common.vcard;
+
+/**
+ * Class representing one request for canceling vCard import/export.
+ */
+public class CancelRequest {
+    public final int jobId;
+    /**
+     * Name used for showing users some useful info. Typically a file name.
+     * Must not be used to do some actual operations.
+     */
+    public final String displayName;
+    public CancelRequest(int jobId, String displayName) {
+        this.jobId = jobId;
+        this.displayName = displayName;
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ExportProcessor.java b/src/com/android/contacts/common/vcard/ExportProcessor.java
new file mode 100644
index 0000000..2aef379
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ExportProcessor.java
@@ -0,0 +1,342 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Message;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.RawContactsEntity;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.contacts.common.R;
+import com.android.vcard.VCardComposer;
+import com.android.vcard.VCardConfig;
+
+import java.io.BufferedWriter;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+/**
+ * Class for processing one export request from a user. Dropped after exporting requested Uri(s).
+ * {@link VCardService} will create another object when there is another export request.
+ */
+public class ExportProcessor extends ProcessorBase {
+    private static final String LOG_TAG = "VCardExport";
+    private static final boolean DEBUG = VCardService.DEBUG;
+
+    private final VCardService mService;
+    private final ContentResolver mResolver;
+    private final NotificationManager mNotificationManager;
+    private final ExportRequest mExportRequest;
+    private final int mJobId;
+    private final String mCallingActivity;
+
+    private volatile boolean mCanceled;
+    private volatile boolean mDone;
+
+    private final int SHOW_READY_TOAST = 1;
+    private final Handler handler = new Handler() {
+        public void handleMessage(Message msg) {
+            if (msg.arg1 == SHOW_READY_TOAST) {
+                // This message is long, so we set the duration to LENGTH_LONG.
+                Toast.makeText(mService,
+                        R.string.exporting_vcard_finished_toast, Toast.LENGTH_LONG).show();
+            }
+
+        }
+    };
+
+    public ExportProcessor(VCardService service, ExportRequest exportRequest, int jobId,
+            String callingActivity) {
+        mService = service;
+        mResolver = service.getContentResolver();
+        mNotificationManager =
+                (NotificationManager)mService.getSystemService(Context.NOTIFICATION_SERVICE);
+        mExportRequest = exportRequest;
+        mJobId = jobId;
+        mCallingActivity = callingActivity;
+    }
+
+    @Override
+    public final int getType() {
+        return VCardService.TYPE_EXPORT;
+    }
+
+    @Override
+    public void run() {
+        // ExecutorService ignores RuntimeException, so we need to show it here.
+        try {
+            runInternal();
+
+            if (isCancelled()) {
+                doCancelNotification();
+            }
+        } catch (OutOfMemoryError e) {
+            Log.e(LOG_TAG, "OutOfMemoryError thrown during import", e);
+            throw e;
+        } catch (RuntimeException e) {
+            Log.e(LOG_TAG, "RuntimeException thrown during export", e);
+            throw e;
+        } finally {
+            synchronized (this) {
+                mDone = true;
+            }
+        }
+    }
+
+    private void runInternal() {
+        if (DEBUG) Log.d(LOG_TAG, String.format("vCard export (id: %d) has started.", mJobId));
+        final ExportRequest request = mExportRequest;
+        VCardComposer composer = null;
+        Writer writer = null;
+        boolean successful = false;
+        try {
+            if (isCancelled()) {
+                Log.i(LOG_TAG, "Export request is cancelled before handling the request");
+                return;
+            }
+            final Uri uri = request.destUri;
+            final OutputStream outputStream;
+            try {
+                outputStream = mResolver.openOutputStream(uri);
+            } catch (FileNotFoundException e) {
+                Log.w(LOG_TAG, "FileNotFoundException thrown", e);
+                // Need concise title.
+
+                final String errorReason =
+                    mService.getString(R.string.fail_reason_could_not_open_file,
+                            uri, e.getMessage());
+                doFinishNotification(errorReason, null);
+                return;
+            }
+
+            final String exportType = request.exportType;
+            final int vcardType;
+            if (TextUtils.isEmpty(exportType)) {
+                vcardType = VCardConfig.getVCardTypeFromString(
+                        mService.getString(R.string.config_export_vcard_type));
+            } else {
+                vcardType = VCardConfig.getVCardTypeFromString(exportType);
+            }
+
+            composer = new VCardComposer(mService, vcardType, true);
+
+            // for test
+            // int vcardType = (VCardConfig.VCARD_TYPE_V21_GENERIC |
+            //     VCardConfig.FLAG_USE_QP_TO_PRIMARY_PROPERTIES);
+            // composer = new VCardComposer(ExportVCardActivity.this, vcardType, true);
+
+            writer = new BufferedWriter(new OutputStreamWriter(outputStream));
+            final Uri contentUriForRawContactsEntity = RawContactsEntity.CONTENT_URI;
+            // TODO: should provide better selection.
+            if (!composer.init(Contacts.CONTENT_URI, new String[] {Contacts._ID},
+                    null, null,
+                    null, contentUriForRawContactsEntity)) {
+                final String errorReason = composer.getErrorReason();
+                Log.e(LOG_TAG, "initialization of vCard composer failed: " + errorReason);
+                final String translatedErrorReason =
+                        translateComposerError(errorReason);
+                final String title =
+                        mService.getString(R.string.fail_reason_could_not_initialize_exporter,
+                                translatedErrorReason);
+                doFinishNotification(title, null);
+                return;
+            }
+
+            final int total = composer.getCount();
+            if (total == 0) {
+                final String title =
+                        mService.getString(R.string.fail_reason_no_exportable_contact);
+                doFinishNotification(title, null);
+                return;
+            }
+
+            int current = 1;  // 1-origin
+            while (!composer.isAfterLast()) {
+                if (isCancelled()) {
+                    Log.i(LOG_TAG, "Export request is cancelled during composing vCard");
+                    return;
+                }
+                try {
+                    writer.write(composer.createOneEntry());
+                } catch (IOException e) {
+                    final String errorReason = composer.getErrorReason();
+                    Log.e(LOG_TAG, "Failed to read a contact: " + errorReason);
+                    final String translatedErrorReason =
+                            translateComposerError(errorReason);
+                    final String title =
+                            mService.getString(R.string.fail_reason_error_occurred_during_export,
+                                    translatedErrorReason);
+                    doFinishNotification(title, null);
+                    return;
+                }
+
+                // vCard export is quite fast (compared to import), and frequent notifications
+                // bother notification bar too much.
+                if (current % 100 == 1) {
+                    doProgressNotification(uri, total, current);
+                }
+                current++;
+            }
+            Log.i(LOG_TAG, "Successfully finished exporting vCard " + request.destUri);
+
+            if (DEBUG) {
+                Log.d(LOG_TAG, "Ask MediaScanner to scan the file: " + request.destUri.getPath());
+            }
+            mService.updateMediaScanner(request.destUri.getPath());
+
+            successful = true;
+            final String filename = ExportVCardActivity.getOpenableUriDisplayName(mService, uri);
+            // If it is a local file (i.e. not a file from Drive), we need to allow user to share
+            // the file by pressing the notification; otherwise, it would be a file in Drive, we
+            // don't need to enable this action in notification since the file is already uploaded.
+            if (isLocalFile(uri)) {
+                final Message msg = handler.obtainMessage();
+                msg.arg1 = SHOW_READY_TOAST;
+                handler.sendMessage(msg);
+                doFinishNotificationWithShareAction(
+                        mService.getString(R.string.exporting_vcard_finished_title_fallback),
+                        mService.getString(R.string.touch_to_share_contacts), uri);
+            } else {
+                final String title = filename == null
+                        ? mService.getString(R.string.exporting_vcard_finished_title_fallback)
+                        : mService.getString(R.string.exporting_vcard_finished_title, filename);
+                doFinishNotification(title, null);
+            }
+        } finally {
+            if (composer != null) {
+                composer.terminate();
+            }
+            if (writer != null) {
+                try {
+                    writer.close();
+                } catch (IOException e) {
+                    Log.w(LOG_TAG, "IOException is thrown during close(). Ignored. " + e);
+                }
+            }
+            mService.handleFinishExportNotification(mJobId, successful);
+        }
+    }
+
+    private boolean isLocalFile(Uri uri) {
+        final String authority = uri.getAuthority();
+        return mService.getString(R.string.contacts_file_provider_authority).equals(authority);
+    }
+
+    private String translateComposerError(String errorMessage) {
+        final Resources resources = mService.getResources();
+        if (VCardComposer.FAILURE_REASON_FAILED_TO_GET_DATABASE_INFO.equals(errorMessage)) {
+            return resources.getString(R.string.composer_failed_to_get_database_infomation);
+        } else if (VCardComposer.FAILURE_REASON_NO_ENTRY.equals(errorMessage)) {
+            return resources.getString(R.string.composer_has_no_exportable_contact);
+        } else if (VCardComposer.FAILURE_REASON_NOT_INITIALIZED.equals(errorMessage)) {
+            return resources.getString(R.string.composer_not_initialized);
+        } else {
+            return errorMessage;
+        }
+    }
+
+    private void doProgressNotification(Uri uri, int totalCount, int currentCount) {
+        final String displayName = uri.getLastPathSegment();
+        final String description =
+                mService.getString(R.string.exporting_contact_list_message, displayName);
+        final String tickerText =
+                mService.getString(R.string.exporting_contact_list_title);
+        final Notification notification =
+                NotificationImportExportListener.constructProgressNotification(mService,
+                        VCardService.TYPE_EXPORT, description, tickerText, mJobId, displayName,
+                        totalCount, currentCount);
+        mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
+                mJobId, notification);
+    }
+
+    private void doCancelNotification() {
+        if (DEBUG) Log.d(LOG_TAG, "send cancel notification");
+        final String description = mService.getString(R.string.exporting_vcard_canceled_title,
+                mExportRequest.destUri.getLastPathSegment());
+        final Notification notification =
+                NotificationImportExportListener.constructCancelNotification(mService, description);
+        mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
+                mJobId, notification);
+    }
+
+    private void doFinishNotification(final String title, final String description) {
+        if (DEBUG) Log.d(LOG_TAG, "send finish notification: " + title + ", " + description);
+        final Intent intent = new Intent();
+        intent.setClassName(mService, mCallingActivity);
+        final Notification notification =
+                NotificationImportExportListener.constructFinishNotification(mService, title,
+                        description, intent);
+        mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
+                mJobId, notification);
+    }
+
+    /**
+     * Pass intent with ACTION_SEND to notification so that user can press the notification to
+     * share contacts.
+     */
+    private void doFinishNotificationWithShareAction(final String title, final String
+            description, Uri uri) {
+        if (DEBUG) Log.d(LOG_TAG, "send finish notification: " + title + ", " + description);
+        final Intent intent = new Intent(Intent.ACTION_SEND);
+        intent.setType(Contacts.CONTENT_VCARD_TYPE);
+        intent.putExtra(Intent.EXTRA_STREAM, uri);
+        // Securely grant access using temporary access permissions
+        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        // Build notification
+        final Notification notification =
+                NotificationImportExportListener.constructFinishNotificationWithFlags(
+                        mService, title, description, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
+        mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
+                mJobId, notification);
+    }
+
+    @Override
+    public synchronized boolean cancel(boolean mayInterruptIfRunning) {
+        if (DEBUG) Log.d(LOG_TAG, "received cancel request");
+        if (mDone || mCanceled) {
+            return false;
+        }
+        mCanceled = true;
+        return true;
+    }
+
+    @Override
+    public synchronized boolean isCancelled() {
+        return mCanceled;
+    }
+
+    @Override
+    public synchronized boolean isDone() {
+        return mDone;
+    }
+
+    public ExportRequest getRequest() {
+        return mExportRequest;
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ExportRequest.java b/src/com/android/contacts/common/vcard/ExportRequest.java
new file mode 100644
index 0000000..e05a32c
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ExportRequest.java
@@ -0,0 +1,35 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.net.Uri;
+
+public class ExportRequest {
+    public final Uri destUri;
+    /**
+     * Can be null.
+     */
+    public final String exportType;
+
+    public ExportRequest(Uri destUri) {
+        this(destUri, null);
+    }
+
+    public ExportRequest(Uri destUri, String exportType) {
+        this.destUri = destUri;
+        this.exportType = exportType;
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ExportVCardActivity.java b/src/com/android/contacts/common/vcard/ExportVCardActivity.java
new file mode 100644
index 0000000..18de505
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ExportVCardActivity.java
@@ -0,0 +1,246 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.provider.OpenableColumns;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.activity.RequestImportVCardPermissionsActivity;
+
+import java.util.List;
+
+/**
+ * Shows a dialog confirming the export and asks actual vCard export to {@link VCardService}
+ *
+ * This Activity first connects to VCardService and ask an available file name and shows it to
+ * a user. After the user's confirmation, it send export request with the file name, assuming the
+ * file name is not reserved yet.
+ */
+public class ExportVCardActivity extends Activity implements ServiceConnection,
+        DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
+    private static final String LOG_TAG = "VCardExport";
+    protected static final boolean DEBUG = VCardService.DEBUG;
+    private static final int REQUEST_CREATE_DOCUMENT = 100;
+
+    /**
+     * True when this Activity is connected to {@link VCardService}.
+     *
+     * Should be touched inside synchronized block.
+     */
+    protected boolean mConnected;
+
+    /**
+     * True when users need to do something and this Activity should not disconnect from
+     * VCardService. False when all necessary procedures are done (including sending export request)
+     * or there's some error occured.
+     */
+    private volatile boolean mProcessOngoing = true;
+
+    protected VCardService mService;
+    private static final BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
+
+    // String for storing error reason temporarily.
+    private String mErrorReason;
+
+    @Override
+    protected void onCreate(Bundle bundle) {
+        super.onCreate(bundle);
+
+        if (RequestImportVCardPermissionsActivity.startPermissionActivity(this)) {
+            return;
+        }
+
+        if (!hasExportIntentHandler()) {
+            Log.e(LOG_TAG, "Couldn't find export intent handler");
+            showErrorDialog();
+            return;
+        }
+
+        connectVCardService();
+    }
+
+    private void connectVCardService() {
+        final String callingActivity = getIntent().getExtras()
+                .getString(VCardCommonArguments.ARG_CALLING_ACTIVITY);
+        Intent intent = new Intent(this, VCardService.class);
+        intent.putExtra(VCardCommonArguments.ARG_CALLING_ACTIVITY, callingActivity);
+
+        if (startService(intent) == null) {
+            Log.e(LOG_TAG, "Failed to start vCard service");
+            showErrorDialog();
+            return;
+        }
+
+        if (!bindService(intent, this, Context.BIND_AUTO_CREATE)) {
+            Log.e(LOG_TAG, "Failed to connect to vCard service.");
+            showErrorDialog();
+        }
+        // Continued to onServiceConnected()
+    }
+
+    private boolean hasExportIntentHandler() {
+        final Intent intent = getCreateDocIntent();
+        final List<ResolveInfo> receivers = getPackageManager().queryIntentActivities(intent,
+                PackageManager.MATCH_DEFAULT_ONLY);
+        return receivers != null && receivers.size() > 0;
+    }
+
+    private Intent getCreateDocIntent() {
+        final Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType(VCardService.X_VCARD_MIME_TYPE);
+        intent.putExtra(Intent.EXTRA_TITLE, mBidiFormatter.unicodeWrap(
+                getString(R.string.exporting_vcard_filename), TextDirectionHeuristics.LTR));
+        return intent;
+    }
+
+    private void showErrorDialog() {
+        mErrorReason = getString(R.string.fail_reason_unknown);
+        showDialog(R.id.dialog_fail_to_export_with_reason);
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_CREATE_DOCUMENT) {
+            if (resultCode == Activity.RESULT_OK && mService != null &&
+                    data != null && data.getData() != null) {
+                final Uri targetFileName = data.getData();
+                if (DEBUG) Log.d(LOG_TAG, "exporting to " + targetFileName);
+                final ExportRequest request = new ExportRequest(targetFileName);
+                // The connection object will call finish().
+                mService.handleExportRequest(request, new NotificationImportExportListener(
+                        ExportVCardActivity.this));
+            } else if (DEBUG) {
+                if (mService == null) {
+                    Log.d(LOG_TAG, "No vCard service.");
+                } else {
+                    Log.d(LOG_TAG, "create document cancelled or no data returned");
+                }
+            }
+            finish();
+        }
+    }
+
+    @Override
+    public synchronized void onServiceConnected(ComponentName name, IBinder binder) {
+        if (DEBUG) Log.d(LOG_TAG, "connected to service, requesting a destination file name");
+        mConnected = true;
+        mService = ((VCardService.MyBinder) binder).getService();
+
+        // Have the user choose where vcards will be exported to
+        startActivityForResult(getCreateDocIntent(), REQUEST_CREATE_DOCUMENT);
+    }
+
+    // Use synchronized since we don't want to call finish() just after this call.
+    @Override
+    public synchronized void onServiceDisconnected(ComponentName name) {
+        if (DEBUG) Log.d(LOG_TAG, "onServiceDisconnected()");
+        mService = null;
+        mConnected = false;
+        if (mProcessOngoing) {
+            // Unexpected disconnect event.
+            Log.w(LOG_TAG, "Disconnected from service during the process ongoing.");
+            showErrorDialog();
+        }
+    }
+
+    @Override
+    protected Dialog onCreateDialog(int id, Bundle bundle) {
+        if (id == R.id.dialog_fail_to_export_with_reason) {
+            mProcessOngoing = false;
+            return new AlertDialog.Builder(this)
+                    .setTitle(R.string.exporting_contact_failed_title)
+                    .setMessage(getString(R.string.exporting_contact_failed_message,
+                            mErrorReason != null ? mErrorReason :
+                                    getString(R.string.fail_reason_unknown)))
+                    .setPositiveButton(android.R.string.ok, this)
+                    .setOnCancelListener(this)
+                    .create();
+        }
+        return super.onCreateDialog(id, bundle);
+    }
+
+    @Override
+    protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
+        if (id == R.id.dialog_fail_to_export_with_reason) {
+            ((AlertDialog)dialog).setMessage(mErrorReason);
+        } else {
+            super.onPrepareDialog(id, dialog, args);
+        }
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (DEBUG) Log.d(LOG_TAG, "ExportVCardActivity#onClick() is called");
+        finish();
+    }
+
+    @Override
+    public void onCancel(DialogInterface dialog) {
+        if (DEBUG) Log.d(LOG_TAG, "ExportVCardActivity#onCancel() is called");
+        mProcessOngoing = false;
+        finish();
+    }
+
+    @Override
+    public void unbindService(ServiceConnection conn) {
+        mProcessOngoing = false;
+        super.unbindService(conn);
+    }
+
+    @Override
+    protected void onDestroy() {
+        if (mConnected) {
+            unbindService(this);
+            mConnected = false;
+        }
+        super.onDestroy();
+    }
+
+    /**
+     * Returns the display name for the given openable Uri or null if it could not be resolved. */
+    static String getOpenableUriDisplayName(Context context, Uri uri) {
+        if (uri == null) return null;
+        final Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
+        try {
+            if (cursor != null && cursor.moveToFirst()) {
+                return cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            }
+        } finally {
+            if (cursor != null)  {
+                cursor.close();
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ImportProcessor.java b/src/com/android/contacts/common/vcard/ImportProcessor.java
new file mode 100644
index 0000000..219ec14
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ImportProcessor.java
@@ -0,0 +1,305 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.net.Uri;
+import android.util.Log;
+
+import com.android.vcard.VCardEntry;
+import com.android.vcard.VCardEntryCommitter;
+import com.android.vcard.VCardEntryConstructor;
+import com.android.vcard.VCardEntryHandler;
+import com.android.vcard.VCardInterpreter;
+import com.android.vcard.VCardParser;
+import com.android.vcard.VCardParser_V21;
+import com.android.vcard.VCardParser_V30;
+import com.android.vcard.exception.VCardException;
+import com.android.vcard.exception.VCardNestedException;
+import com.android.vcard.exception.VCardNotSupportedException;
+import com.android.vcard.exception.VCardVersionException;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class for processing one import request from a user. Dropped after importing requested Uri(s).
+ * {@link VCardService} will create another object when there is another import request.
+ */
+public class ImportProcessor extends ProcessorBase implements VCardEntryHandler {
+    private static final String LOG_TAG = "VCardImport";
+    private static final boolean DEBUG = VCardService.DEBUG;
+
+    private final VCardService mService;
+    private final ContentResolver mResolver;
+    private final ImportRequest mImportRequest;
+    private final int mJobId;
+    private final VCardImportExportListener mListener;
+
+    // TODO: remove and show appropriate message instead.
+    private final List<Uri> mFailedUris = new ArrayList<Uri>();
+
+    private VCardParser mVCardParser;
+
+    private volatile boolean mCanceled;
+    private volatile boolean mDone;
+
+    private int mCurrentCount = 0;
+    private int mTotalCount = 0;
+
+    public ImportProcessor(final VCardService service, final VCardImportExportListener listener,
+            final ImportRequest request, final int jobId) {
+        mService = service;
+        mResolver = mService.getContentResolver();
+        mListener = listener;
+
+        mImportRequest = request;
+        mJobId = jobId;
+    }
+
+    @Override
+    public void onStart() {
+        // do nothing
+    }
+
+    @Override
+    public void onEnd() {
+        // do nothing
+    }
+
+    @Override
+    public void onEntryCreated(VCardEntry entry) {
+        mCurrentCount++;
+        if (mListener != null) {
+            mListener.onImportParsed(mImportRequest, mJobId, entry, mCurrentCount, mTotalCount);
+        }
+    }
+
+    @Override
+    public final int getType() {
+        return VCardService.TYPE_IMPORT;
+    }
+
+    @Override
+    public void run() {
+        // ExecutorService ignores RuntimeException, so we need to show it here.
+        try {
+            runInternal();
+
+            if (isCancelled() && mListener != null) {
+                mListener.onImportCanceled(mImportRequest, mJobId);
+            }
+        } catch (OutOfMemoryError e) {
+            Log.e(LOG_TAG, "OutOfMemoryError thrown during import", e);
+            throw e;
+        } catch (RuntimeException e) {
+            Log.e(LOG_TAG, "RuntimeException thrown during import", e);
+            throw e;
+        } finally {
+            synchronized (this) {
+                mDone = true;
+            }
+        }
+    }
+
+    private void runInternal() {
+        Log.i(LOG_TAG, String.format("vCard import (id: %d) has started.", mJobId));
+        final ImportRequest request = mImportRequest;
+        if (isCancelled()) {
+            Log.i(LOG_TAG, "Canceled before actually handling parameter (" + request.uri + ")");
+            return;
+        }
+        final int[] possibleVCardVersions;
+        if (request.vcardVersion == ImportVCardActivity.VCARD_VERSION_AUTO_DETECT) {
+            /**
+             * Note: this code assumes that a given Uri is able to be opened more than once,
+             * which may not be true in certain conditions.
+             */
+            possibleVCardVersions = new int[] {
+                    ImportVCardActivity.VCARD_VERSION_V21,
+                    ImportVCardActivity.VCARD_VERSION_V30
+            };
+        } else {
+            possibleVCardVersions = new int[] {
+                    request.vcardVersion
+            };
+        }
+
+        final Uri uri = request.uri;
+        final Account account = request.account;
+        final int estimatedVCardType = request.estimatedVCardType;
+        final String estimatedCharset = request.estimatedCharset;
+        final int entryCount = request.entryCount;
+        mTotalCount += entryCount;
+
+        final VCardEntryConstructor constructor =
+                new VCardEntryConstructor(estimatedVCardType, account, estimatedCharset);
+        final VCardEntryCommitter committer = new VCardEntryCommitter(mResolver);
+        constructor.addEntryHandler(committer);
+        constructor.addEntryHandler(this);
+
+        InputStream is = null;
+        boolean successful = false;
+        try {
+            if (uri != null) {
+                Log.i(LOG_TAG, "start importing one vCard (Uri: " + uri + ")");
+                is = mResolver.openInputStream(uri);
+            } else if (request.data != null){
+                Log.i(LOG_TAG, "start importing one vCard (byte[])");
+                is = new ByteArrayInputStream(request.data);
+            }
+
+            if (is != null) {
+                successful = readOneVCard(is, estimatedVCardType, estimatedCharset, constructor,
+                        possibleVCardVersions);
+            }
+        } catch (IOException e) {
+            successful = false;
+        } finally {
+            if (is != null) {
+                try {
+                    is.close();
+                } catch (Exception e) {
+                    // ignore
+                }
+            }
+        }
+
+        mService.handleFinishImportNotification(mJobId, successful);
+
+        if (successful) {
+            // TODO: successful becomes true even when cancelled. Should return more appropriate
+            // value
+            if (isCancelled()) {
+                Log.i(LOG_TAG, "vCard import has been canceled (uri: " + uri + ")");
+                // Cancel notification will be done outside this method.
+            } else {
+                Log.i(LOG_TAG, "Successfully finished importing one vCard file: " + uri);
+                List<Uri> uris = committer.getCreatedUris();
+                if (mListener != null) {
+                    if (uris != null && uris.size() == 1) {
+                        mListener.onImportFinished(mImportRequest, mJobId, uris.get(0));
+                    } else {
+                        if (uris == null || uris.size() == 0) {
+                            // Not critical, but suspicious.
+                            Log.w(LOG_TAG,  "Created Uris is null or 0 length " +
+                                    "though the creation itself is successful.");
+                        }
+                        mListener.onImportFinished(mImportRequest, mJobId, null);
+                    }
+                }
+            }
+        } else {
+            Log.w(LOG_TAG, "Failed to read one vCard file: " + uri);
+            mFailedUris.add(uri);
+        }
+    }
+
+    private boolean readOneVCard(InputStream is, int vcardType, String charset,
+            final VCardInterpreter interpreter,
+            final int[] possibleVCardVersions) {
+        boolean successful = false;
+        final int length = possibleVCardVersions.length;
+        for (int i = 0; i < length; i++) {
+            final int vcardVersion = possibleVCardVersions[i];
+            try {
+                if (i > 0 && (interpreter instanceof VCardEntryConstructor)) {
+                    // Let the object clean up internal temporary objects,
+                    ((VCardEntryConstructor) interpreter).clear();
+                }
+
+                // We need synchronized block here,
+                // since we need to handle mCanceled and mVCardParser at once.
+                // In the worst case, a user may call cancel() just before creating
+                // mVCardParser.
+                synchronized (this) {
+                    mVCardParser = (vcardVersion == ImportVCardActivity.VCARD_VERSION_V30 ?
+                            new VCardParser_V30(vcardType) :
+                                new VCardParser_V21(vcardType));
+                    if (isCancelled()) {
+                        Log.i(LOG_TAG, "ImportProcessor already recieves cancel request, so " +
+                                "send cancel request to vCard parser too.");
+                        mVCardParser.cancel();
+                    }
+                }
+                mVCardParser.parse(is, interpreter);
+
+                successful = true;
+                break;
+            } catch (IOException e) {
+                Log.e(LOG_TAG, "IOException was emitted: " + e.getMessage());
+            } catch (VCardNestedException e) {
+                // This exception should not be thrown here. We should instead handle it
+                // in the preprocessing session in ImportVCardActivity, as we don't try
+                // to detect the type of given vCard here.
+                //
+                // TODO: Handle this case appropriately, which should mean we have to have
+                // code trying to auto-detect the type of given vCard twice (both in
+                // ImportVCardActivity and ImportVCardService).
+                Log.e(LOG_TAG, "Nested Exception is found.");
+            } catch (VCardNotSupportedException e) {
+                Log.e(LOG_TAG, e.toString());
+            } catch (VCardVersionException e) {
+                if (i == length - 1) {
+                    Log.e(LOG_TAG, "Appropriate version for this vCard is not found.");
+                } else {
+                    // We'll try the other (v30) version.
+                }
+            } catch (VCardException e) {
+                Log.e(LOG_TAG, e.toString());
+            } finally {
+                if (is != null) {
+                    try {
+                        is.close();
+                    } catch (IOException e) {
+                    }
+                }
+            }
+        }
+
+        return successful;
+    }
+
+    @Override
+    public synchronized boolean cancel(boolean mayInterruptIfRunning) {
+        if (DEBUG) Log.d(LOG_TAG, "ImportProcessor received cancel request");
+        if (mDone || mCanceled) {
+            return false;
+        }
+        mCanceled = true;
+        synchronized (this) {
+            if (mVCardParser != null) {
+                mVCardParser.cancel();
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public synchronized boolean isCancelled() {
+        return mCanceled;
+    }
+
+
+    @Override
+    public synchronized boolean isDone() {
+        return mDone;
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ImportRequest.java b/src/com/android/contacts/common/vcard/ImportRequest.java
new file mode 100644
index 0000000..32efb99
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ImportRequest.java
@@ -0,0 +1,111 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.accounts.Account;
+import android.net.Uri;
+
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.vcard.VCardSourceDetector;
+
+/**
+ * Class representing one request for importing vCard (given as a Uri).
+ *
+ * Mainly used when {@link ImportVCardActivity} requests {@link VCardService}
+ * to import some specific Uri.
+ *
+ * Note: This object's accepting only One Uri does NOT mean that
+ * there's only one vCard entry inside the instance, as one Uri often has multiple
+ * vCard entries inside it.
+ */
+public class ImportRequest {
+    /**
+     * Can be null (typically when there's no Account available in the system).
+     */
+    public final Account account;
+
+    /**
+     * Uri to be imported. May have different content than originally given from users, so
+     * when displaying user-friendly information (e.g. "importing xxx.vcf"), use
+     * {@link #displayName} instead.
+     *
+     * If this is null {@link #data} contains the byte stream of the vcard.
+     */
+    public final Uri uri;
+
+    /**
+     * Holds the byte stream of the vcard, if {@link #uri} is null.
+     */
+    public final byte[] data;
+
+    /**
+     * String to be displayed to the user to indicate the source of the VCARD.
+     */
+    public final String displayName;
+
+    /**
+     * Can be {@link VCardSourceDetector#PARSE_TYPE_UNKNOWN}.
+     */
+    public final int estimatedVCardType;
+
+    /**
+     * Can be null, meaning no preferable charset is available.
+     */
+    public final String estimatedCharset;
+
+    /**
+     * Assumes that one Uri contains only one version, while there's a (tiny) possibility
+     * we may have two types in one vCard.
+     *
+     * e.g.
+     * BEGIN:VCARD
+     * VERSION:2.1
+     * ...
+     * END:VCARD
+     * BEGIN:VCARD
+     * VERSION:3.0
+     * ...
+     * END:VCARD
+     *
+     * We've never seen this kind of a file, but we may have to cope with it in the future.
+     */
+    public final int vcardVersion;
+
+    /**
+     * The count of vCard entries in {@link #uri}. A receiver of this object can use it
+     * when showing the progress of import. Thus a receiver must be able to torelate this
+     * variable being invalid because of vCard's limitation.
+     *
+     * vCard does not let us know this count without looking over a whole file content,
+     * which means we have to open and scan over {@link #uri} to know this value, while
+     * it may not be opened more than once (Uri does not require it to be opened multiple times
+     * and may become invalid after its close() request).
+     */
+    public final int entryCount;
+
+    public ImportRequest(AccountWithDataSet account,
+            byte[] data, Uri uri, String displayName, int estimatedType, String estimatedCharset,
+            int vcardVersion, int entryCount) {
+        this.account = account != null ? account.getAccountOrNull() : null;
+        this.data = data;
+        this.uri = uri;
+        this.displayName = displayName;
+        this.estimatedVCardType = estimatedType;
+        this.estimatedCharset = estimatedCharset;
+        this.vcardVersion = vcardVersion;
+        this.entryCount = entryCount;
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ImportVCardActivity.java b/src/com/android/contacts/common/vcard/ImportVCardActivity.java
new file mode 100644
index 0000000..9da8c0b
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ImportVCardActivity.java
@@ -0,0 +1,769 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.ProgressDialog;
+import android.content.ClipData;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.PowerManager;
+import android.provider.OpenableColumns;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.activity.RequestImportVCardPermissionsActivity;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.vcard.VCardEntryCounter;
+import com.android.vcard.VCardParser;
+import com.android.vcard.VCardParser_V21;
+import com.android.vcard.VCardParser_V30;
+import com.android.vcard.VCardSourceDetector;
+import com.android.vcard.exception.VCardException;
+import com.android.vcard.exception.VCardNestedException;
+import com.android.vcard.exception.VCardVersionException;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.WritableByteChannel;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * The class letting users to import vCard. This includes the UI part for letting them select
+ * an Account and posssibly a file if there's no Uri is given from its caller Activity.
+ *
+ * Note that this Activity assumes that the instance is a "one-shot Activity", which will be
+ * finished (with the method {@link Activity#finish()}) after the import and never reuse
+ * any Dialog in the instance. So this code is careless about the management around managed
+ * dialogs stuffs (like how onCreateDialog() is used).
+ */
+public class ImportVCardActivity extends Activity {
+    private static final String LOG_TAG = "VCardImport";
+
+    private static final int SELECT_ACCOUNT = 0;
+
+    /* package */ final static int VCARD_VERSION_AUTO_DETECT = 0;
+    /* package */ final static int VCARD_VERSION_V21 = 1;
+    /* package */ final static int VCARD_VERSION_V30 = 2;
+
+    private static final int REQUEST_OPEN_DOCUMENT = 100;
+
+    /**
+     * Notification id used when error happened before sending an import request to VCardServer.
+     */
+    private static final int FAILURE_NOTIFICATION_ID = 1;
+
+    private static final String LOCAL_TMP_FILE_NAME_EXTRA =
+            "com.android.contacts.common.vcard.LOCAL_TMP_FILE_NAME";
+
+    private static final String SOURCE_URI_DISPLAY_NAME =
+            "com.android.contacts.common.vcard.SOURCE_URI_DISPLAY_NAME";
+
+    private static final String STORAGE_VCARD_URI_PREFIX = "file:///storage";
+
+    private AccountWithDataSet mAccount;
+
+    private ProgressDialog mProgressDialogForCachingVCard;
+
+    private VCardCacheThread mVCardCacheThread;
+    private ImportRequestConnection mConnection;
+    /* package */ VCardImportExportListener mListener;
+
+    private String mErrorMessage;
+
+    private Handler mHandler = new Handler();
+
+    // Runs on the UI thread.
+    private class DialogDisplayer implements Runnable {
+        private final int mResId;
+        public DialogDisplayer(int resId) {
+            mResId = resId;
+        }
+        public DialogDisplayer(String errorMessage) {
+            mResId = R.id.dialog_error_with_message;
+            mErrorMessage = errorMessage;
+        }
+        @Override
+        public void run() {
+            if (!isFinishing()) {
+                showDialog(mResId);
+            }
+        }
+    }
+
+    private class CancelListener
+        implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            finish();
+        }
+        @Override
+        public void onCancel(DialogInterface dialog) {
+            finish();
+        }
+    }
+
+    private CancelListener mCancelListener = new CancelListener();
+
+    private class ImportRequestConnection implements ServiceConnection {
+        private VCardService mService;
+
+        public void sendImportRequest(final List<ImportRequest> requests) {
+            Log.i(LOG_TAG, "Send an import request");
+            mService.handleImportRequest(requests, mListener);
+        }
+
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder binder) {
+            mService = ((VCardService.MyBinder) binder).getService();
+            Log.i(LOG_TAG,
+                    String.format("Connected to VCardService. Kick a vCard cache thread (uri: %s)",
+                            Arrays.toString(mVCardCacheThread.getSourceUris())));
+            mVCardCacheThread.start();
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            Log.i(LOG_TAG, "Disconnected from VCardService");
+        }
+    }
+
+    /**
+     * Caches given vCard files into a local directory, and sends actual import request to
+     * {@link VCardService}.
+     *
+     * We need to cache given files into local storage. One of reasons is that some data (as Uri)
+     * may have special permissions. Callers may allow only this Activity to access that content,
+     * not what this Activity launched (like {@link VCardService}).
+     */
+    private class VCardCacheThread extends Thread
+            implements DialogInterface.OnCancelListener {
+        private boolean mCanceled;
+        private PowerManager.WakeLock mWakeLock;
+        private VCardParser mVCardParser;
+        private final Uri[] mSourceUris;  // Given from a caller.
+        private final String[] mSourceDisplayNames; // Display names for each Uri in mSourceUris.
+        private final byte[] mSource;
+        private final String mDisplayName;
+
+        public VCardCacheThread(final Uri[] sourceUris, String[] sourceDisplayNames) {
+            mSourceUris = sourceUris;
+            mSourceDisplayNames = sourceDisplayNames;
+            mSource = null;
+            final Context context = ImportVCardActivity.this;
+            final PowerManager powerManager =
+                    (PowerManager)context.getSystemService(Context.POWER_SERVICE);
+            mWakeLock = powerManager.newWakeLock(
+                    PowerManager.SCREEN_DIM_WAKE_LOCK |
+                    PowerManager.ON_AFTER_RELEASE, LOG_TAG);
+            mDisplayName = null;
+        }
+
+        @Override
+        public void finalize() {
+            if (mWakeLock != null && mWakeLock.isHeld()) {
+                Log.w(LOG_TAG, "WakeLock is being held.");
+                mWakeLock.release();
+            }
+        }
+
+        @Override
+        public void run() {
+            Log.i(LOG_TAG, "vCard cache thread starts running.");
+            if (mConnection == null) {
+                throw new NullPointerException("vCard cache thread must be launched "
+                        + "after a service connection is established");
+            }
+
+            mWakeLock.acquire();
+            try {
+                if (mCanceled == true) {
+                    Log.i(LOG_TAG, "vCard cache operation is canceled.");
+                    return;
+                }
+
+                final Context context = ImportVCardActivity.this;
+                // Uris given from caller applications may not be opened twice: consider when
+                // it is not from local storage (e.g. "file:///...") but from some special
+                // provider (e.g. "content://...").
+                // Thus we have to once copy the content of Uri into local storage, and read
+                // it after it.
+                //
+                // We may be able to read content of each vCard file during copying them
+                // to local storage, but currently vCard code does not allow us to do so.
+                int cache_index = 0;
+                ArrayList<ImportRequest> requests = new ArrayList<ImportRequest>();
+                if (mSource != null) {
+                    try {
+                        requests.add(constructImportRequest(mSource, null, mDisplayName));
+                    } catch (VCardException e) {
+                        Log.e(LOG_TAG, "Maybe the file is in wrong format", e);
+                        showFailureNotification(R.string.fail_reason_not_supported);
+                        return;
+                    }
+                } else {
+                    int i = 0;
+                    for (Uri sourceUri : mSourceUris) {
+                        if (mCanceled) {
+                            Log.i(LOG_TAG, "vCard cache operation is canceled.");
+                            break;
+                        }
+
+                        String sourceDisplayName = mSourceDisplayNames[i++];
+
+                        final ImportRequest request;
+                        try {
+                            request = constructImportRequest(null, sourceUri, sourceDisplayName);
+                        } catch (VCardException e) {
+                            Log.e(LOG_TAG, "Maybe the file is in wrong format", e);
+                            showFailureNotification(R.string.fail_reason_not_supported);
+                            return;
+                        } catch (IOException e) {
+                            Log.e(LOG_TAG, "Unexpected IOException", e);
+                            showFailureNotification(R.string.fail_reason_io_error);
+                            return;
+                        }
+                        if (mCanceled) {
+                            Log.i(LOG_TAG, "vCard cache operation is canceled.");
+                            return;
+                        }
+                        requests.add(request);
+                    }
+                }
+                if (!requests.isEmpty()) {
+                    mConnection.sendImportRequest(requests);
+                } else {
+                    Log.w(LOG_TAG, "Empty import requests. Ignore it.");
+                }
+            } catch (OutOfMemoryError e) {
+                Log.e(LOG_TAG, "OutOfMemoryError occured during caching vCard");
+                System.gc();
+                runOnUiThread(new DialogDisplayer(
+                        getString(R.string.fail_reason_low_memory_during_import)));
+            } catch (IOException e) {
+                Log.e(LOG_TAG, "IOException during caching vCard", e);
+                runOnUiThread(new DialogDisplayer(
+                        getString(R.string.fail_reason_io_error)));
+            } finally {
+                Log.i(LOG_TAG, "Finished caching vCard.");
+                mWakeLock.release();
+                unbindService(mConnection);
+                mProgressDialogForCachingVCard.dismiss();
+                mProgressDialogForCachingVCard = null;
+                finish();
+            }
+        }
+
+        /**
+         * Reads localDataUri (possibly multiple times) and constructs {@link ImportRequest} from
+         * its content.
+         *
+         * @arg localDataUri Uri actually used for the import. Should be stored in
+         * app local storage, as we cannot guarantee other types of Uris can be read
+         * multiple times. This variable populates {@link ImportRequest#uri}.
+         * @arg displayName Used for displaying information to the user. This variable populates
+         * {@link ImportRequest#displayName}.
+         */
+        private ImportRequest constructImportRequest(final byte[] data,
+                final Uri localDataUri, final String displayName)
+                throws IOException, VCardException {
+            final ContentResolver resolver = ImportVCardActivity.this.getContentResolver();
+            VCardEntryCounter counter = null;
+            VCardSourceDetector detector = null;
+            int vcardVersion = VCARD_VERSION_V21;
+            try {
+                boolean shouldUseV30 = false;
+                InputStream is;
+                if (data != null) {
+                    is = new ByteArrayInputStream(data);
+                } else {
+                    is = resolver.openInputStream(localDataUri);
+                }
+                mVCardParser = new VCardParser_V21();
+                try {
+                    counter = new VCardEntryCounter();
+                    detector = new VCardSourceDetector();
+                    mVCardParser.addInterpreter(counter);
+                    mVCardParser.addInterpreter(detector);
+                    mVCardParser.parse(is);
+                } catch (VCardVersionException e1) {
+                    try {
+                        is.close();
+                    } catch (IOException e) {
+                    }
+
+                    shouldUseV30 = true;
+                    if (data != null) {
+                        is = new ByteArrayInputStream(data);
+                    } else {
+                        is = resolver.openInputStream(localDataUri);
+                    }
+                    mVCardParser = new VCardParser_V30();
+                    try {
+                        counter = new VCardEntryCounter();
+                        detector = new VCardSourceDetector();
+                        mVCardParser.addInterpreter(counter);
+                        mVCardParser.addInterpreter(detector);
+                        mVCardParser.parse(is);
+                    } catch (VCardVersionException e2) {
+                        throw new VCardException("vCard with unspported version.");
+                    }
+                } finally {
+                    if (is != null) {
+                        try {
+                            is.close();
+                        } catch (IOException e) {
+                        }
+                    }
+                }
+
+                vcardVersion = shouldUseV30 ? VCARD_VERSION_V30 : VCARD_VERSION_V21;
+            } catch (VCardNestedException e) {
+                Log.w(LOG_TAG, "Nested Exception is found (it may be false-positive).");
+                // Go through without throwing the Exception, as we may be able to detect the
+                // version before it
+            }
+            return new ImportRequest(mAccount,
+                    data, localDataUri, displayName,
+                    detector.getEstimatedType(),
+                    detector.getEstimatedCharset(),
+                    vcardVersion, counter.getCount());
+        }
+
+        public Uri[] getSourceUris() {
+            return mSourceUris;
+        }
+
+        public void cancel() {
+            mCanceled = true;
+            if (mVCardParser != null) {
+                mVCardParser.cancel();
+            }
+        }
+
+        @Override
+        public void onCancel(DialogInterface dialog) {
+            Log.i(LOG_TAG, "Cancel request has come. Abort caching vCard.");
+            cancel();
+        }
+    }
+
+    private void importVCard(final Uri uri, final String sourceDisplayName) {
+        importVCard(new Uri[] {uri}, new String[] {sourceDisplayName});
+    }
+
+    private void importVCard(final Uri[] uris, final String[] sourceDisplayNames) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                if (!isFinishing()) {
+                    mVCardCacheThread = new VCardCacheThread(uris, sourceDisplayNames);
+                    mListener = new NotificationImportExportListener(ImportVCardActivity.this);
+                    showDialog(R.id.dialog_cache_vcard);
+                }
+            }
+        });
+    }
+
+    private String getDisplayName(Uri sourceUri) {
+        if (sourceUri == null) {
+            return null;
+        }
+        final ContentResolver resolver = ImportVCardActivity.this.getContentResolver();
+        String displayName = null;
+        Cursor cursor = null;
+        // Try to get a display name from the given Uri. If it fails, we just
+        // pick up the last part of the Uri.
+        try {
+            cursor = resolver.query(sourceUri,
+                    new String[] { OpenableColumns.DISPLAY_NAME },
+                    null, null, null);
+            if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) {
+                if (cursor.getCount() > 1) {
+                    Log.w(LOG_TAG, "Unexpected multiple rows: "
+                            + cursor.getCount());
+                }
+                int index = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
+                if (index >= 0) {
+                    displayName = cursor.getString(index);
+                }
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+        if (TextUtils.isEmpty(displayName)){
+            displayName = sourceUri.getLastPathSegment();
+        }
+        return displayName;
+    }
+
+    /**
+     * Copy the content of sourceUri to the destination.
+     */
+    private Uri copyTo(final Uri sourceUri, String filename) throws IOException {
+        Log.i(LOG_TAG, String.format("Copy a Uri to app local storage (%s -> %s)",
+                sourceUri, filename));
+        final Context context = ImportVCardActivity.this;
+        final ContentResolver resolver = context.getContentResolver();
+        ReadableByteChannel inputChannel = null;
+        WritableByteChannel outputChannel = null;
+        Uri destUri = null;
+        try {
+            inputChannel = Channels.newChannel(resolver.openInputStream(sourceUri));
+            destUri = Uri.parse(context.getFileStreamPath(filename).toURI().toString());
+            outputChannel = context.openFileOutput(filename, Context.MODE_PRIVATE).getChannel();
+            final ByteBuffer buffer = ByteBuffer.allocateDirect(8192);
+            while (inputChannel.read(buffer) != -1) {
+                buffer.flip();
+                outputChannel.write(buffer);
+                buffer.compact();
+            }
+            buffer.flip();
+            while (buffer.hasRemaining()) {
+                outputChannel.write(buffer);
+            }
+        } finally {
+            if (inputChannel != null) {
+                try {
+                    inputChannel.close();
+                } catch (IOException e) {
+                    Log.w(LOG_TAG, "Failed to close inputChannel.");
+                }
+            }
+            if (outputChannel != null) {
+                try {
+                    outputChannel.close();
+                } catch(IOException e) {
+                    Log.w(LOG_TAG, "Failed to close outputChannel");
+                }
+            }
+        }
+        return destUri;
+    }
+
+    /**
+     * Reads the file from {@param sourceUri} and copies it to local cache file.
+     * Returns the local file name which stores the file from sourceUri.
+     */
+    private String readUriToLocalFile(Uri sourceUri) {
+        // Read the uri to local first.
+        int cache_index = 0;
+        String localFilename = null;
+        // Note: caches are removed by VCardService.
+        while (true) {
+            localFilename = VCardService.CACHE_FILE_PREFIX + cache_index + ".vcf";
+            final File file = getFileStreamPath(localFilename);
+            if (!file.exists()) {
+                break;
+            } else {
+                if (cache_index == Integer.MAX_VALUE) {
+                    throw new RuntimeException("Exceeded cache limit");
+                }
+                cache_index++;
+            }
+        }
+        try {
+            copyTo(sourceUri, localFilename);
+        } catch (SecurityException e) {
+            Log.e(LOG_TAG, "SecurityException", e);
+            showFailureNotification(R.string.fail_reason_io_error);
+            return null;
+        } catch (IOException e) {
+            Log.e(LOG_TAG, "IOException during caching vCard", e);
+            showFailureNotification(R.string.fail_reason_io_error);
+            return null;
+        }
+
+        if (localFilename == null) {
+            Log.e(LOG_TAG, "Cannot load uri to local storage.");
+            showFailureNotification(R.string.fail_reason_io_error);
+            return null;
+        }
+
+        return localFilename;
+    }
+
+    private Uri readUriToLocalUri(Uri sourceUri) {
+        final String fileName = readUriToLocalFile(sourceUri);
+        if (fileName == null) {
+            return null;
+        }
+        return Uri.parse(getFileStreamPath(fileName).toURI().toString());
+    }
+
+    // Returns true if uri is from Storage.
+    private boolean isStorageUri(Uri uri) {
+        return uri != null && uri.toString().startsWith(STORAGE_VCARD_URI_PREFIX);
+    }
+
+    @Override
+    protected void onCreate(Bundle bundle) {
+        super.onCreate(bundle);
+
+        Uri sourceUri = getIntent().getData();
+
+        // Reading uris from non-storage needs the permission granted from the source intent,
+        // instead of permissions from RequestImportVCardPermissionActivity. So skipping requesting
+        // permissions from RequestImportVCardPermissionActivity for uris from non-storage source.
+        if (isStorageUri(sourceUri)
+                && RequestImportVCardPermissionsActivity.startPermissionActivity(this)) {
+            return;
+        }
+
+        String sourceDisplayName = null;
+        if (sourceUri != null) {
+            // Read the uri to local first.
+            String localTmpFileName = getIntent().getStringExtra(LOCAL_TMP_FILE_NAME_EXTRA);
+            sourceDisplayName = getIntent().getStringExtra(SOURCE_URI_DISPLAY_NAME);
+            if (TextUtils.isEmpty(localTmpFileName)) {
+                localTmpFileName = readUriToLocalFile(sourceUri);
+                sourceDisplayName = getDisplayName(sourceUri);
+                if (localTmpFileName == null) {
+                    Log.e(LOG_TAG, "Cannot load uri to local storage.");
+                    showFailureNotification(R.string.fail_reason_io_error);
+                    return;
+                }
+                getIntent().putExtra(LOCAL_TMP_FILE_NAME_EXTRA, localTmpFileName);
+                getIntent().putExtra(SOURCE_URI_DISPLAY_NAME, sourceDisplayName);
+            }
+            sourceUri = Uri.parse(getFileStreamPath(localTmpFileName).toURI().toString());
+        }
+
+        // Always request required permission for contacts before importing the vcard.
+        if (RequestImportVCardPermissionsActivity.startPermissionActivity(this)) {
+            return;
+        }
+
+        String accountName = null;
+        String accountType = null;
+        String dataSet = null;
+        final Intent intent = getIntent();
+        if (intent != null) {
+            accountName = intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME);
+            accountType = intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE);
+            dataSet = intent.getStringExtra(SelectAccountActivity.DATA_SET);
+        } else {
+            Log.e(LOG_TAG, "intent does not exist");
+        }
+
+        if (!TextUtils.isEmpty(accountName) && !TextUtils.isEmpty(accountType)) {
+            mAccount = new AccountWithDataSet(accountName, accountType, dataSet);
+        } else {
+            final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
+            final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
+            if (accountList.size() == 0) {
+                mAccount = null;
+            } else if (accountList.size() == 1) {
+                mAccount = accountList.get(0);
+            } else {
+                startActivityForResult(new Intent(this, SelectAccountActivity.class),
+                        SELECT_ACCOUNT);
+                return;
+            }
+        }
+
+        startImport(sourceUri, sourceDisplayName);
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
+        if (requestCode == SELECT_ACCOUNT) {
+            if (resultCode == Activity.RESULT_OK) {
+                mAccount = new AccountWithDataSet(
+                        intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME),
+                        intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE),
+                        intent.getStringExtra(SelectAccountActivity.DATA_SET));
+                final Uri sourceUri = getIntent().getData();
+                if (sourceUri == null) {
+                    startImport(sourceUri, /* sourceDisplayName =*/ null);
+                } else {
+                    final String sourceDisplayName = getIntent().getStringExtra(
+                            SOURCE_URI_DISPLAY_NAME);
+                    final String localFileName = getIntent().getStringExtra(
+                            LOCAL_TMP_FILE_NAME_EXTRA);
+                    final Uri localUri = Uri.parse(
+                            getFileStreamPath(localFileName).toURI().toString());
+                    startImport(localUri, sourceDisplayName);
+                }
+            } else {
+                if (resultCode != Activity.RESULT_CANCELED) {
+                    Log.w(LOG_TAG, "Result code was not OK nor CANCELED: " + resultCode);
+                }
+                finish();
+            }
+        } else if (requestCode == REQUEST_OPEN_DOCUMENT) {
+            if (resultCode == Activity.RESULT_OK) {
+                final ClipData clipData = intent.getClipData();
+                if (clipData != null) {
+                    final ArrayList<Uri> uris = new ArrayList<>();
+                    final ArrayList<String> sourceDisplayNames = new ArrayList<>();
+                    for (int i = 0; i < clipData.getItemCount(); i++) {
+                        ClipData.Item item = clipData.getItemAt(i);
+                        final Uri uri = item.getUri();
+                        if (uri != null) {
+                            final Uri localUri = readUriToLocalUri(uri);
+                            if (localUri != null) {
+                                final String sourceDisplayName = getDisplayName(uri);
+                                uris.add(localUri);
+                                sourceDisplayNames.add(sourceDisplayName);
+                            }
+                        }
+                    }
+                    if (uris.isEmpty()) {
+                        Log.w(LOG_TAG, "No vCard was selected for import");
+                        finish();
+                    } else {
+                        Log.i(LOG_TAG, "Multiple vCards selected for import: " + uris);
+                        importVCard(uris.toArray(new Uri[0]),
+                                sourceDisplayNames.toArray(new String[0]));
+                    }
+                } else {
+                    final Uri uri = intent.getData();
+                    if (uri != null) {
+                        Log.i(LOG_TAG, "vCard selected for import: " + uri);
+                        final Uri localUri = readUriToLocalUri(uri);
+                        if (localUri != null) {
+                            final String sourceDisplayName = getDisplayName(uri);
+                            importVCard(localUri, sourceDisplayName);
+                        } else {
+                            Log.w(LOG_TAG, "No local URI for vCard import");
+                            finish();
+                        }
+                    } else {
+                        Log.w(LOG_TAG, "No vCard was selected for import");
+                        finish();
+                    }
+                }
+            } else {
+                if (resultCode != Activity.RESULT_CANCELED) {
+                    Log.w(LOG_TAG, "Result code was not OK nor CANCELED" + resultCode);
+                }
+                finish();
+            }
+        }
+    }
+
+    private void startImport(Uri uri, String sourceDisplayName) {
+        // Handle inbound files
+        if (uri != null) {
+            Log.i(LOG_TAG, "Starting vCard import using Uri " + uri);
+            importVCard(uri, sourceDisplayName);
+        } else {
+            Log.i(LOG_TAG, "Start vCard without Uri. The user will select vCard manually.");
+            final Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+            intent.addCategory(Intent.CATEGORY_OPENABLE);
+            intent.setType(VCardService.X_VCARD_MIME_TYPE);
+            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
+            startActivityForResult(intent, REQUEST_OPEN_DOCUMENT);
+        }
+    }
+
+    @Override
+    protected Dialog onCreateDialog(int resId, Bundle bundle) {
+        if (resId == R.id.dialog_cache_vcard) {
+            if (mProgressDialogForCachingVCard == null) {
+                final String title = getString(R.string.caching_vcard_title);
+                final String message = getString(R.string.caching_vcard_message);
+                mProgressDialogForCachingVCard = new ProgressDialog(this);
+                mProgressDialogForCachingVCard.setTitle(title);
+                mProgressDialogForCachingVCard.setMessage(message);
+                mProgressDialogForCachingVCard.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+                mProgressDialogForCachingVCard.setOnCancelListener(mVCardCacheThread);
+                startVCardService();
+            }
+            return mProgressDialogForCachingVCard;
+        } else if (resId == R.id.dialog_error_with_message) {
+            String message = mErrorMessage;
+            if (TextUtils.isEmpty(message)) {
+                Log.e(LOG_TAG, "Error message is null while it must not.");
+                message = getString(R.string.fail_reason_unknown);
+            }
+            final AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                .setTitle(getString(R.string.reading_vcard_failed_title))
+                .setIconAttribute(android.R.attr.alertDialogIcon)
+                .setMessage(message)
+                .setOnCancelListener(mCancelListener)
+                .setPositiveButton(android.R.string.ok, mCancelListener);
+            return builder.create();
+        }
+
+        return super.onCreateDialog(resId, bundle);
+    }
+
+    /* package */ void startVCardService() {
+        mConnection = new ImportRequestConnection();
+
+        Log.i(LOG_TAG, "Bind to VCardService.");
+        // We don't want the service finishes itself just after this connection.
+        Intent intent = new Intent(this, VCardService.class);
+        startService(intent);
+        bindService(new Intent(this, VCardService.class),
+                mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedInstanceState) {
+        super.onRestoreInstanceState(savedInstanceState);
+        if (mProgressDialogForCachingVCard != null) {
+            Log.i(LOG_TAG, "Cache thread is still running. Show progress dialog again.");
+            showDialog(R.id.dialog_cache_vcard);
+        }
+    }
+
+    /* package */ void showFailureNotification(int reasonId) {
+        final NotificationManager notificationManager =
+                (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
+        final Notification notification =
+                NotificationImportExportListener.constructImportFailureNotification(
+                        ImportVCardActivity.this,
+                        getString(reasonId));
+        notificationManager.notify(NotificationImportExportListener.FAILURE_NOTIFICATION_TAG,
+                FAILURE_NOTIFICATION_ID, notification);
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(ImportVCardActivity.this,
+                        getString(R.string.vcard_import_failed), Toast.LENGTH_LONG).show();
+            }
+        });
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java b/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java
new file mode 100644
index 0000000..0634df4
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java
@@ -0,0 +1,272 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.vcard;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.net.Uri;
+import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
+import android.nfc.NfcAdapter;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.provider.ContactsContract.RawContacts;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.activity.RequestPermissionsActivity;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
+import com.android.vcard.VCardEntry;
+import com.android.vcard.VCardEntryCounter;
+import com.android.vcard.VCardParser;
+import com.android.vcard.VCardParser_V21;
+import com.android.vcard.VCardParser_V30;
+import com.android.vcard.VCardSourceDetector;
+import com.android.vcard.exception.VCardException;
+import com.android.vcard.exception.VCardNestedException;
+import com.android.vcard.exception.VCardVersionException;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class NfcImportVCardActivity extends Activity implements ServiceConnection,
+        VCardImportExportListener {
+    private static final String TAG = "NfcImportVCardActivity";
+
+    private static final int SELECT_ACCOUNT = 1;
+
+    private NdefRecord mRecord;
+    private AccountWithDataSet mAccount;
+
+    /* package */ class ImportTask extends AsyncTask<VCardService, Void, ImportRequest> {
+        @Override
+        public ImportRequest doInBackground(VCardService... services) {
+            ImportRequest request = createImportRequest();
+            if (request == null) {
+                return null;
+            }
+
+            ArrayList<ImportRequest> requests = new ArrayList<ImportRequest>();
+            requests.add(request);
+            services[0].handleImportRequest(requests, NfcImportVCardActivity.this);
+            return request;
+        }
+
+        @Override
+        public void onCancelled() {
+            unbindService(NfcImportVCardActivity.this);
+        }
+
+        @Override
+        public void onPostExecute(ImportRequest request) {
+            unbindService(NfcImportVCardActivity.this);
+        }
+    }
+
+    /* package */ ImportRequest createImportRequest() {
+        VCardParser parser;
+        VCardEntryCounter counter = null;
+        VCardSourceDetector detector = null;
+        int vcardVersion = ImportVCardActivity.VCARD_VERSION_V21;
+        try {
+            ByteArrayInputStream is = new ByteArrayInputStream(mRecord.getPayload());
+            is.mark(0);
+            parser = new VCardParser_V21();
+            try {
+                counter = new VCardEntryCounter();
+                detector = new VCardSourceDetector();
+                parser.addInterpreter(counter);
+                parser.addInterpreter(detector);
+                parser.parse(is);
+            } catch (VCardVersionException e1) {
+                is.reset();
+                vcardVersion = ImportVCardActivity.VCARD_VERSION_V30;
+                parser = new VCardParser_V30();
+                try {
+                    counter = new VCardEntryCounter();
+                    detector = new VCardSourceDetector();
+                    parser.addInterpreter(counter);
+                    parser.addInterpreter(detector);
+                    parser.parse(is);
+                } catch (VCardVersionException e2) {
+                    return null;
+                }
+            } finally {
+                try {
+                    if (is != null) is.close();
+                } catch (IOException e) {
+                }
+            }
+        } catch (IOException e) {
+            Log.e(TAG, "Failed reading vcard data", e);
+            return null;
+        } catch (VCardNestedException e) {
+            Log.w(TAG, "Nested Exception is found (it may be false-positive).");
+            // Go through without throwing the Exception, as we may be able to detect the
+            // version before it
+        } catch (VCardException e) {
+            Log.e(TAG, "Error parsing vcard", e);
+            return null;
+        }
+
+        return new ImportRequest(mAccount, mRecord.getPayload(), null,
+                getString(R.string.nfc_vcard_file_name), detector.getEstimatedType(),
+                detector.getEstimatedCharset(), vcardVersion, counter.getCount());
+    }
+
+    @Override
+    public void onServiceConnected(ComponentName name, IBinder binder) {
+        VCardService service = ((VCardService.MyBinder) binder).getService();
+        new ImportTask().execute(service);
+    }
+
+    @Override
+    public void onServiceDisconnected(ComponentName name) {
+        // Do nothing
+    }
+
+    @Override
+    protected void onCreate(Bundle bundle) {
+        super.onCreate(bundle);
+
+        if (RequestPermissionsActivity.startPermissionActivity(this)) {
+            return;
+        }
+
+        Intent intent = getIntent();
+        if (!NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
+            Log.w(TAG, "Unknowon intent " + intent);
+            finish();
+            return;
+        }
+
+        String type = intent.getType();
+        if (type == null ||
+                (!"text/x-vcard".equals(type) && !"text/vcard".equals(type))) {
+            Log.w(TAG, "Not a vcard");
+            //setStatus(getString(R.string.fail_reason_not_supported));
+            finish();
+            return;
+        }
+        NdefMessage msg = (NdefMessage) intent.getParcelableArrayExtra(
+                NfcAdapter.EXTRA_NDEF_MESSAGES)[0];
+        mRecord = msg.getRecords()[0];
+
+        final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
+        final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
+        if (accountList.size() == 0) {
+            mAccount = null;
+        } else if (accountList.size() == 1) {
+            mAccount = accountList.get(0);
+        } else {
+            startActivityForResult(new Intent(this, SelectAccountActivity.class), SELECT_ACCOUNT);
+            return;
+        }
+
+        startImport();
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
+        if (requestCode == SELECT_ACCOUNT) {
+            if (resultCode == RESULT_OK) {
+                mAccount = new AccountWithDataSet(
+                        intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME),
+                        intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE),
+                        intent.getStringExtra(SelectAccountActivity.DATA_SET));
+                startImport();
+            } else {
+                finish();
+            }
+        }
+    }
+
+    private void startImport() {
+        // We don't want the service finishes itself just after this connection.
+        Intent intent = new Intent(this, VCardService.class);
+        startService(intent);
+        bindService(intent, this, Context.BIND_AUTO_CREATE);
+    }
+
+    @Override
+    public void onImportProcessed(ImportRequest request, int jobId, int sequence) {
+        // do nothing
+    }
+
+    @Override
+    public void onImportParsed(ImportRequest request, int jobId, VCardEntry entry, int currentCount,
+            int totalCount) {
+        // do nothing
+    }
+
+    @Override
+    public void onImportFinished(ImportRequest request, int jobId, Uri uri) {
+        if (isFinishing()) {
+            Log.i(TAG, "Late import -- ignoring");
+            return;
+        }
+
+        if (uri != null) {
+            Uri contactUri = RawContacts.getContactLookupUri(getContentResolver(), uri);
+            Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
+            ImplicitIntentsUtil.startActivityInAppIfPossible(this, intent);
+            finish();
+        }
+    }
+
+    @Override
+    public void onImportFailed(ImportRequest request) {
+        if (isFinishing()) {
+            Log.i(TAG, "Late import failure -- ignoring");
+            return;
+        }
+        // TODO: report failure
+    }
+
+    @Override
+    public void onImportCanceled(ImportRequest request, int jobId) {
+        // do nothing
+    }
+
+    @Override
+    public void onExportProcessed(ExportRequest request, int jobId) {
+        // do nothing
+    }
+
+    @Override
+    public void onExportFailed(ExportRequest request) {
+        // do nothing
+    }
+
+    @Override
+    public void onCancelRequest(CancelRequest request, int type) {
+        // do nothing
+    }
+
+    @Override
+    public void onComplete() {
+        // do nothing
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/NotificationImportExportListener.java b/src/com/android/contacts/common/vcard/NotificationImportExportListener.java
new file mode 100644
index 0000000..2ac8c1c
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/NotificationImportExportListener.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.vcard;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Message;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.RawContacts;
+import android.support.v4.app.NotificationCompat;
+import android.widget.Toast;
+
+import com.android.contacts.common.R;
+import com.android.vcard.VCardEntry;
+
+import java.text.NumberFormat;
+
+public class NotificationImportExportListener implements VCardImportExportListener,
+        Handler.Callback {
+    /** The tag used by vCard-related notifications. */
+    /* package */ static final String DEFAULT_NOTIFICATION_TAG = "VCardServiceProgress";
+    /**
+     * The tag used by vCard-related failure notifications.
+     * <p>
+     * Use a different tag from {@link #DEFAULT_NOTIFICATION_TAG} so that failures do not get
+     * replaced by other notifications and vice-versa.
+     */
+    /* package */ static final String FAILURE_NOTIFICATION_TAG = "VCardServiceFailure";
+
+    private final NotificationManager mNotificationManager;
+    private final Activity mContext;
+    private final Handler mHandler;
+
+    public NotificationImportExportListener(Activity activity) {
+        mContext = activity;
+        mNotificationManager = (NotificationManager) activity.getSystemService(
+                Context.NOTIFICATION_SERVICE);
+        mHandler = new Handler(this);
+    }
+
+    @Override
+    public boolean handleMessage(Message msg) {
+        String text = (String) msg.obj;
+        Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
+        return true;
+    }
+
+    @Override
+    public void onImportProcessed(ImportRequest request, int jobId, int sequence) {
+        // Show a notification about the status
+        final String displayName;
+        final String message;
+        if (request.displayName != null) {
+            displayName = request.displayName;
+            message = mContext.getString(R.string.vcard_import_will_start_message, displayName);
+        } else {
+            displayName = mContext.getString(R.string.vcard_unknown_filename);
+            message = mContext.getString(
+                    R.string.vcard_import_will_start_message_with_default_name);
+        }
+
+        // We just want to show notification for the first vCard.
+        if (sequence == 0) {
+            // TODO: Ideally we should detect the current status of import/export and
+            // show "started" when we can import right now and show "will start" when
+            // we cannot.
+            mHandler.obtainMessage(0, message).sendToTarget();
+        }
+
+        final Notification notification = constructProgressNotification(mContext,
+                VCardService.TYPE_IMPORT, message, message, jobId, displayName, -1, 0);
+        mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, jobId, notification);
+    }
+
+    @Override
+    public void onImportParsed(ImportRequest request, int jobId, VCardEntry entry, int currentCount,
+            int totalCount) {
+        if (entry.isIgnorable()) {
+            return;
+        }
+
+        final String totalCountString = String.valueOf(totalCount);
+        final String tickerText =
+                mContext.getString(R.string.progress_notifier_message,
+                        String.valueOf(currentCount),
+                        totalCountString,
+                        entry.getDisplayName());
+        final String description = mContext.getString(R.string.importing_vcard_description,
+                entry.getDisplayName());
+
+        final Notification notification = constructProgressNotification(
+                mContext.getApplicationContext(), VCardService.TYPE_IMPORT, description, tickerText,
+                jobId, request.displayName, totalCount, currentCount);
+        mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, jobId, notification);
+    }
+
+    @Override
+    public void onImportFinished(ImportRequest request, int jobId, Uri createdUri) {
+        final String description = mContext.getString(R.string.importing_vcard_finished_title,
+                request.displayName);
+        final Intent intent;
+        if (createdUri != null) {
+            final long rawContactId = ContentUris.parseId(createdUri);
+            final Uri contactUri = RawContacts.getContactLookupUri(
+                    mContext.getContentResolver(), ContentUris.withAppendedId(
+                            RawContacts.CONTENT_URI, rawContactId));
+            intent = new Intent(Intent.ACTION_VIEW, contactUri);
+        } else {
+            intent = new Intent(Intent.ACTION_VIEW);
+            intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
+        }
+        intent.setPackage(mContext.getPackageName());
+        final Notification notification =
+                NotificationImportExportListener.constructFinishNotification(mContext,
+                description, null, intent);
+        mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
+                jobId, notification);
+    }
+
+    @Override
+    public void onImportFailed(ImportRequest request) {
+        // TODO: a little unkind to show Toast in this case, which is shown just a moment.
+        // Ideally we should show some persistent something users can notice more easily.
+        mHandler.obtainMessage(0,
+                mContext.getString(R.string.vcard_import_request_rejected_message)).sendToTarget();
+    }
+
+    @Override
+    public void onImportCanceled(ImportRequest request, int jobId) {
+        final String description = mContext.getString(R.string.importing_vcard_canceled_title,
+                request.displayName);
+        final Notification notification =
+                NotificationImportExportListener.constructCancelNotification(mContext, description);
+        mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
+                jobId, notification);
+    }
+
+    @Override
+    public void onExportProcessed(ExportRequest request, int jobId) {
+        final String displayName = ExportVCardActivity.getOpenableUriDisplayName(mContext,
+                request.destUri);
+        final String message = mContext.getString(R.string.contacts_export_will_start_message);
+
+        mHandler.obtainMessage(0, message).sendToTarget();
+        final Notification notification =
+                NotificationImportExportListener.constructProgressNotification(mContext,
+                        VCardService.TYPE_EXPORT, message, message, jobId, displayName, -1, 0);
+        mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, jobId, notification);
+    }
+
+    @Override
+    public void onExportFailed(ExportRequest request) {
+        mHandler.obtainMessage(0,
+                mContext.getString(R.string.vcard_export_request_rejected_message)).sendToTarget();
+    }
+
+    @Override
+    public void onCancelRequest(CancelRequest request, int type) {
+        final String description = type == VCardService.TYPE_IMPORT ?
+                mContext.getString(R.string.importing_vcard_canceled_title, request.displayName) :
+                mContext.getString(R.string.exporting_vcard_canceled_title, request.displayName);
+        final Notification notification = constructCancelNotification(mContext, description);
+        mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, request.jobId, notification);
+    }
+
+    /**
+     * Constructs a {@link Notification} showing the current status of import/export.
+     * Users can cancel the process with the Notification.
+     *
+     * @param context
+     * @param type import/export
+     * @param description Content of the Notification.
+     * @param tickerText
+     * @param jobId
+     * @param displayName Name to be shown to the Notification (e.g. "finished importing XXXX").
+     * Typycally a file name.
+     * @param totalCount The number of vCard entries to be imported. Used to show progress bar.
+     * -1 lets the system show the progress bar with "indeterminate" state.
+     * @param currentCount The index of current vCard. Used to show progress bar.
+     */
+    /* package */ static Notification constructProgressNotification(
+            Context context, int type, String description, String tickerText,
+            int jobId, String displayName, int totalCount, int currentCount) {
+        // Note: We cannot use extra values here (like setIntExtra()), as PendingIntent doesn't
+        // preserve them across multiple Notifications. PendingIntent preserves the first extras
+        // (when flag is not set), or update them when PendingIntent#getActivity() is called
+        // (See PendingIntent#FLAG_UPDATE_CURRENT). In either case, we cannot preserve extras as we
+        // expect (for each vCard import/export request).
+        //
+        // We use query parameter in Uri instead.
+        // Scheme and Authority is arbitorary, assuming CancelActivity never refers them.
+        final Intent intent = new Intent(context, CancelActivity.class);
+        final Uri uri = (new Uri.Builder())
+                .scheme("invalidscheme")
+                .authority("invalidauthority")
+                .appendQueryParameter(CancelActivity.JOB_ID, String.valueOf(jobId))
+                .appendQueryParameter(CancelActivity.DISPLAY_NAME, displayName)
+                .appendQueryParameter(CancelActivity.TYPE, String.valueOf(type)).build();
+        intent.setData(uri);
+
+        final NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+        builder.setOngoing(true)
+                .setProgress(totalCount, currentCount, totalCount == - 1)
+                .setTicker(tickerText)
+                .setContentTitle(description)
+                .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
+                .setSmallIcon(type == VCardService.TYPE_IMPORT
+                        ? android.R.drawable.stat_sys_download
+                        : android.R.drawable.stat_sys_upload)
+                .setContentIntent(PendingIntent.getActivity(context, 0, intent, 0));
+        if (totalCount > 0) {
+            String percentage =
+                    NumberFormat.getPercentInstance().format((double) currentCount / totalCount);
+            builder.setContentText(percentage);
+        }
+        return builder.getNotification();
+    }
+
+    /**
+     * Constructs a Notification telling users the process is canceled.
+     *
+     * @param context
+     * @param description Content of the Notification
+     */
+    /* package */ static Notification constructCancelNotification(
+            Context context, String description) {
+        return new NotificationCompat.Builder(context)
+                .setAutoCancel(true)
+                .setSmallIcon(android.R.drawable.stat_notify_error)
+                .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
+                .setContentTitle(description)
+                .setContentText(description)
+                // Launch an intent that won't resolve to anything. Restrict the intent to this
+                // app to make sure that no other app can steal this pending-intent b/19296918.
+                .setContentIntent(PendingIntent
+                        .getActivity(context, 0, new Intent(context.getPackageName(), null), 0))
+                .getNotification();
+    }
+
+    /**
+     * Constructs a Notification telling users the process is finished.
+     *
+     * @param context
+     * @param description Content of the Notification
+     * @param intent Intent to be launched when the Notification is clicked. Can be null.
+     */
+    /* package */ static Notification constructFinishNotification(
+            Context context, String title, String description, Intent intent) {
+        return constructFinishNotificationWithFlags(context, title, description, intent, 0);
+    }
+
+    /**
+     * @param flags use FLAG_ACTIVITY_NEW_TASK to set it as new task, to get rid of cached files.
+     */
+    /* package */ static Notification constructFinishNotificationWithFlags(
+            Context context, String title, String description, Intent intent, int flags) {
+        return new NotificationCompat.Builder(context)
+                .setAutoCancel(true)
+                .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
+                .setSmallIcon(R.drawable.ic_check_mark)
+                .setContentTitle(title)
+                .setContentText(description)
+                // If no intent provided, include an intent that won't resolve to anything.
+                // Restrict the intent to this app to make sure that no other app can steal this
+                // pending-intent b/19296918.
+                .setContentIntent(PendingIntent.getActivity(context, 0,
+                        (intent != null ? intent : new Intent(context.getPackageName(), null)),
+                        flags))
+                .getNotification();
+    }
+
+    /**
+     * Constructs a Notification telling the vCard import has failed.
+     *
+     * @param context
+     * @param reason The reason why the import has failed. Shown in description field.
+     */
+    /* package */ static Notification constructImportFailureNotification(
+            Context context, String reason) {
+        return new NotificationCompat.Builder(context)
+                .setAutoCancel(true)
+                .setColor(context.getResources().getColor(R.color.dialtacts_theme_color))
+                .setSmallIcon(android.R.drawable.stat_notify_error)
+                .setContentTitle(context.getString(R.string.vcard_import_failed))
+                .setContentText(reason)
+                // Launch an intent that won't resolve to anything. Restrict the intent to this
+                // app to make sure that no other app can steal this pending-intent b/19296918.
+                .setContentIntent(PendingIntent
+                        .getActivity(context, 0, new Intent(context.getPackageName(), null), 0))
+                .getNotification();
+    }
+
+    @Override
+    public void onComplete() {
+        mContext.finish();
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ProcessorBase.java b/src/com/android/contacts/common/vcard/ProcessorBase.java
new file mode 100644
index 0000000..abc859d
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ProcessorBase.java
@@ -0,0 +1,75 @@
+/*
+ * 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.contacts.common.vcard;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.RunnableFuture;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * A base processor class. One instance processes vCard one import/export request (imports a given
+ * vCard or exports a vCard). Expected to be used with {@link ExecutorService}.
+ *
+ * This instance starts itself with {@link #run()} method, and can be cancelled with
+ * {@link #cancel(boolean)}. Users can check the processor's status using {@link #isCancelled()}
+ * and {@link #isDone()} asynchronously.
+ *
+ * {@link #get()} and {@link #get(long, TimeUnit)}, which are form {@link Future}, aren't
+ * supported and {@link UnsupportedOperationException} will be just thrown when they are called.
+ */
+public abstract class ProcessorBase implements RunnableFuture<Object> {
+
+    /**
+     * @return the type of the processor. Must be {@link VCardService#TYPE_IMPORT} or
+     * {@link VCardService#TYPE_EXPORT}.
+     */
+    public abstract int getType();
+
+    @Override
+    public abstract void run();
+
+    /**
+     * Cancels this operation.
+     *
+     * @param mayInterruptIfRunning ignored. When this method is called, the instance
+     * stops processing and finish itself even if the thread is running.
+     *
+     * @see Future#cancel(boolean)
+     */
+    @Override
+    public abstract boolean cancel(boolean mayInterruptIfRunning);
+    @Override
+    public abstract boolean isCancelled();
+    @Override
+    public abstract boolean isDone();
+
+    /**
+     * Just throws {@link UnsupportedOperationException}.
+     */
+    @Override
+    public final Object get() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Just throws {@link UnsupportedOperationException}.
+     */
+    @Override
+    public final Object get(long timeout, TimeUnit unit) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/SelectAccountActivity.java b/src/com/android/contacts/common/vcard/SelectAccountActivity.java
new file mode 100644
index 0000000..387f3fb
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/SelectAccountActivity.java
@@ -0,0 +1,112 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.AccountSelectionUtil;
+
+import java.util.List;
+
+public class SelectAccountActivity extends Activity {
+    private static final String LOG_TAG = "SelectAccountActivity";
+
+    public static final String ACCOUNT_NAME = "account_name";
+    public static final String ACCOUNT_TYPE = "account_type";
+    public static final String DATA_SET = "data_set";
+
+    private class CancelListener
+            implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
+        public void onClick(DialogInterface dialog, int which) {
+            finish();
+        }
+        public void onCancel(DialogInterface dialog) {
+            finish();
+        }
+    }
+
+    private AccountSelectionUtil.AccountSelectedListener mAccountSelectionListener;
+
+    @Override
+    protected void onCreate(Bundle bundle) {
+        super.onCreate(bundle);
+
+        // There's three possibilities:
+        // - more than one accounts -> ask the user
+        // - just one account -> use the account without asking the user
+        // - no account -> use phone-local storage without asking the user
+        final int resId = R.string.import_from_vcf_file;
+        final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
+        final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
+        if (accountList.size() == 0) {
+            Log.w(LOG_TAG, "Account does not exist");
+            finish();
+            return;
+        } else if (accountList.size() == 1) {
+            final AccountWithDataSet account = accountList.get(0);
+            final Intent intent = new Intent();
+            intent.putExtra(ACCOUNT_NAME, account.name);
+            intent.putExtra(ACCOUNT_TYPE, account.type);
+            intent.putExtra(DATA_SET, account.dataSet);
+            setResult(RESULT_OK, intent);
+            finish();
+            return;
+        }
+
+        Log.i(LOG_TAG, "The number of available accounts: " + accountList.size());
+
+        // Multiple accounts. Let users to select one.
+        mAccountSelectionListener =
+                new AccountSelectionUtil.AccountSelectedListener(
+                        this, accountList, resId) {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        dialog.dismiss();
+                        final AccountWithDataSet account = mAccountList.get(which);
+                        final Intent intent = new Intent();
+                        intent.putExtra(ACCOUNT_NAME, account.name);
+                        intent.putExtra(ACCOUNT_TYPE, account.type);
+                        intent.putExtra(DATA_SET, account.dataSet);
+                        setResult(RESULT_OK, intent);
+                        finish();
+                    }
+                };
+        showDialog(resId);
+        return;
+    }
+
+    @Override
+    protected Dialog onCreateDialog(int resId, Bundle bundle) {
+        if (resId == R.string.import_from_vcf_file) {
+            if (mAccountSelectionListener == null) {
+                throw new NullPointerException(
+                        "mAccountSelectionListener must not be null.");
+            }
+            return AccountSelectionUtil.getSelectAccountDialog(this, resId,
+                    mAccountSelectionListener,
+                    new CancelListener());
+        }
+        return super.onCreateDialog(resId, bundle);
+    }
+}
diff --git a/src/com/android/contacts/common/vcard/ShareVCardActivity.java b/src/com/android/contacts/common/vcard/ShareVCardActivity.java
new file mode 100644
index 0000000..93868aa
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/ShareVCardActivity.java
@@ -0,0 +1,92 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.content.ComponentName;
+import android.net.Uri;
+import android.os.IBinder;
+import android.support.v4.content.FileProvider;
+import android.util.Log;
+
+import com.android.contacts.common.R;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * This activity connects to VCardService, creates a .vcf file in cache directory and send export
+ * request with the file URI so as to write contacts data to the file in background.
+ */
+public class ShareVCardActivity extends ExportVCardActivity {
+    private static final String LOG_TAG = "VCardShare";
+    private final String EXPORT_FILE_PREFIX = "vcards_";
+    private final long A_DAY_IN_MILLIS = 1000 * 60 * 60 * 24;
+
+    @Override
+    public synchronized void onServiceConnected(ComponentName name, IBinder binder) {
+        if (DEBUG) Log.d(LOG_TAG, "connected to service, requesting a destination file name");
+        mConnected = true;
+        mService = ((VCardService.MyBinder) binder).getService();
+
+        clearExportFiles();
+
+        final File file = getLocalFile();
+        try {
+            file.createNewFile();
+        } catch (IOException e) {
+            Log.e(LOG_TAG, "Failed to create .vcf file, because: " + e);
+            finish();
+            return;
+        }
+
+        final Uri contentUri = FileProvider.getUriForFile(this,
+                getString(R.string.contacts_file_provider_authority), file);
+        if (DEBUG) Log.d(LOG_TAG, "exporting to " + contentUri);
+
+        final ExportRequest request = new ExportRequest(contentUri);
+        // The connection object will call finish().
+        mService.handleExportRequest(request, new NotificationImportExportListener(
+                ShareVCardActivity.this));
+        finish();
+    }
+
+    /**
+     * Delete the files (that are untouched for more than 1 day) in the cache directory.
+     * We cannot rely on VCardService to delete export files because it will delete export files
+     * right after finishing writing so no files could be shared. Therefore, our approach to
+     * deleting export files is:
+     * 1. put export files in cache directory so that Android may delete them;
+     * 2. manually delete the files that are older than 1 day when service is connected.
+     */
+    private void clearExportFiles() {
+        for (File file : getCacheDir().listFiles()) {
+            final long ageInMillis = System.currentTimeMillis() - file.lastModified();
+            if (file.getName().startsWith(EXPORT_FILE_PREFIX) && ageInMillis > A_DAY_IN_MILLIS) {
+                file.delete();
+            }
+        }
+    }
+
+    private File getLocalFile() {
+        final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US);
+        final String currentDateString = dateFormat.format(new Date()).toString();
+        final String localFilename = EXPORT_FILE_PREFIX + currentDateString + ".vcf";
+        return new File(getCacheDir(), localFilename);
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/common/vcard/VCardCommonArguments.java b/src/com/android/contacts/common/vcard/VCardCommonArguments.java
new file mode 100644
index 0000000..c423ca3
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/VCardCommonArguments.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.vcard;
+
+/**
+ * Argument constants used by many activities and services.
+ */
+public class VCardCommonArguments {
+
+    // Argument used to pass calling activities to the target activity or service.
+    // The value should be a string class name (e.g. com.android.contacts.vcard.VCardCommonArgs)
+    public static final String ARG_CALLING_ACTIVITY = "CALLING_ACTIVITY";
+}
diff --git a/src/com/android/contacts/common/vcard/VCardImportExportListener.java b/src/com/android/contacts/common/vcard/VCardImportExportListener.java
new file mode 100644
index 0000000..e4e4893
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/VCardImportExportListener.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.vcard;
+
+import android.net.Uri;
+
+import com.android.vcard.VCardEntry;
+
+interface VCardImportExportListener {
+    void onImportProcessed(ImportRequest request, int jobId, int sequence);
+    void onImportParsed(ImportRequest request, int jobId, VCardEntry entry, int currentCount,
+            int totalCount);
+    void onImportFinished(ImportRequest request, int jobId, Uri uri);
+    void onImportFailed(ImportRequest request);
+    void onImportCanceled(ImportRequest request, int jobId);
+
+    void onExportProcessed(ExportRequest request, int jobId);
+    void onExportFailed(ExportRequest request);
+
+    void onCancelRequest(CancelRequest request, int type);
+    void onComplete();
+}
diff --git a/src/com/android/contacts/common/vcard/VCardService.java b/src/com/android/contacts/common/vcard/VCardService.java
new file mode 100644
index 0000000..1d7837b
--- /dev/null
+++ b/src/com/android/contacts/common/vcard/VCardService.java
@@ -0,0 +1,397 @@
+/*
+ * 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.contacts.common.vcard;
+
+import android.app.Service;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.media.MediaScannerConnection;
+import android.media.MediaScannerConnection.MediaScannerConnectionClient;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Environment;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.SparseArray;
+
+import com.android.contacts.common.R;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.RejectedExecutionException;
+
+/**
+ * The class responsible for handling vCard import/export requests.
+ *
+ * This Service creates one ImportRequest/ExportRequest object (as Runnable) per request and push
+ * it to {@link ExecutorService} with single thread executor. The executor handles each request
+ * one by one, and notifies users when needed.
+ */
+// TODO: Using IntentService looks simpler than using Service + ServiceConnection though this
+// works fine enough. Investigate the feasibility.
+public class VCardService extends Service {
+    private final static String LOG_TAG = "VCardService";
+
+    /* package */ final static boolean DEBUG = false;
+
+    /**
+     * Specifies the type of operation. Used when constructing a notification, canceling
+     * some operation, etc.
+     */
+    /* package */ static final int TYPE_IMPORT = 1;
+    /* package */ static final int TYPE_EXPORT = 2;
+
+    /* package */ static final String CACHE_FILE_PREFIX = "import_tmp_";
+
+    /* package */ static final String X_VCARD_MIME_TYPE = "text/x-vcard";
+
+    private class CustomMediaScannerConnectionClient implements MediaScannerConnectionClient {
+        final MediaScannerConnection mConnection;
+        final String mPath;
+
+        public CustomMediaScannerConnectionClient(String path) {
+            mConnection = new MediaScannerConnection(VCardService.this, this);
+            mPath = path;
+        }
+
+        public void start() {
+            mConnection.connect();
+        }
+
+        @Override
+        public void onMediaScannerConnected() {
+            if (DEBUG) { Log.d(LOG_TAG, "Connected to MediaScanner. Start scanning."); }
+            mConnection.scanFile(mPath, null);
+        }
+
+        @Override
+        public void onScanCompleted(String path, Uri uri) {
+            if (DEBUG) { Log.d(LOG_TAG, "scan completed: " + path); }
+            mConnection.disconnect();
+            removeConnectionClient(this);
+        }
+    }
+
+    // Should be single thread, as we don't want to simultaneously handle import and export
+    // requests.
+    private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor();
+
+    private int mCurrentJobId;
+
+    // Stores all unfinished import/export jobs which will be executed by mExecutorService.
+    // Key is jobId.
+    private final SparseArray<ProcessorBase> mRunningJobMap = new SparseArray<ProcessorBase>();
+    // Stores ScannerConnectionClient objects until they finish scanning requested files.
+    // Uses List class for simplicity. It's not costly as we won't have multiple objects in
+    // almost all cases.
+    private final List<CustomMediaScannerConnectionClient> mRemainingScannerConnections =
+            new ArrayList<CustomMediaScannerConnectionClient>();
+
+    private MyBinder mBinder;
+
+    private String mCallingActivity;
+
+    // File names currently reserved by some export job.
+    private final Set<String> mReservedDestination = new HashSet<String>();
+    /* ** end of vCard exporter params ** */
+
+    public class MyBinder extends Binder {
+        public VCardService getService() {
+            return VCardService.this;
+        }
+    }
+
+   @Override
+    public void onCreate() {
+        super.onCreate();
+        mBinder = new MyBinder();
+        if (DEBUG) Log.d(LOG_TAG, "vCard Service is being created.");
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int id) {
+        if (intent != null && intent.getExtras() != null) {
+            mCallingActivity = intent.getExtras().getString(
+                    VCardCommonArguments.ARG_CALLING_ACTIVITY);
+        } else {
+            mCallingActivity = null;
+        }
+        return START_STICKY;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    @Override
+    public void onDestroy() {
+        if (DEBUG) Log.d(LOG_TAG, "VCardService is being destroyed.");
+        cancelAllRequestsAndShutdown();
+        clearCache();
+        super.onDestroy();
+    }
+
+    public synchronized void handleImportRequest(List<ImportRequest> requests,
+            VCardImportExportListener listener) {
+        if (DEBUG) {
+            final ArrayList<String> uris = new ArrayList<String>();
+            final ArrayList<String> displayNames = new ArrayList<String>();
+            for (ImportRequest request : requests) {
+                uris.add(request.uri.toString());
+                displayNames.add(request.displayName);
+            }
+            Log.d(LOG_TAG,
+                    String.format("received multiple import request (uri: %s, displayName: %s)",
+                            uris.toString(), displayNames.toString()));
+        }
+        final int size = requests.size();
+        for (int i = 0; i < size; i++) {
+            ImportRequest request = requests.get(i);
+
+            if (tryExecute(new ImportProcessor(this, listener, request, mCurrentJobId))) {
+                if (listener != null) {
+                    listener.onImportProcessed(request, mCurrentJobId, i);
+                }
+                mCurrentJobId++;
+            } else {
+                if (listener != null) {
+                    listener.onImportFailed(request);
+                }
+                // A rejection means executor doesn't run any more. Exit.
+                break;
+            }
+        }
+    }
+
+    public synchronized void handleExportRequest(ExportRequest request,
+            VCardImportExportListener listener) {
+        if (tryExecute(new ExportProcessor(this, request, mCurrentJobId, mCallingActivity))) {
+            final String path = request.destUri.getEncodedPath();
+            if (DEBUG) Log.d(LOG_TAG, "Reserve the path " + path);
+            if (!mReservedDestination.add(path)) {
+                Log.w(LOG_TAG,
+                        String.format("The path %s is already reserved. Reject export request",
+                                path));
+                if (listener != null) {
+                    listener.onExportFailed(request);
+                }
+                return;
+            }
+
+            if (listener != null) {
+                listener.onExportProcessed(request, mCurrentJobId);
+            }
+            mCurrentJobId++;
+        } else {
+            if (listener != null) {
+                listener.onExportFailed(request);
+            }
+        }
+    }
+
+    /**
+     * Tries to call {@link ExecutorService#execute(Runnable)} toward a given processor.
+     * @return true when successful.
+     */
+    private synchronized boolean tryExecute(ProcessorBase processor) {
+        try {
+            if (DEBUG) {
+                Log.d(LOG_TAG, "Executor service status: shutdown: " + mExecutorService.isShutdown()
+                        + ", terminated: " + mExecutorService.isTerminated());
+            }
+            mExecutorService.execute(processor);
+            mRunningJobMap.put(mCurrentJobId, processor);
+            return true;
+        } catch (RejectedExecutionException e) {
+            Log.w(LOG_TAG, "Failed to excetute a job.", e);
+            return false;
+        }
+    }
+
+    public synchronized void handleCancelRequest(CancelRequest request,
+            VCardImportExportListener listener) {
+        final int jobId = request.jobId;
+        if (DEBUG) Log.d(LOG_TAG, String.format("Received cancel request. (id: %d)", jobId));
+
+        final ProcessorBase processor = mRunningJobMap.get(jobId);
+        mRunningJobMap.remove(jobId);
+
+        if (processor != null) {
+            processor.cancel(true);
+            final int type = processor.getType();
+            if (listener != null) {
+                listener.onCancelRequest(request, type);
+            }
+            if (type == TYPE_EXPORT) {
+                final String path =
+                        ((ExportProcessor)processor).getRequest().destUri.getEncodedPath();
+                Log.i(LOG_TAG,
+                        String.format("Cancel reservation for the path %s if appropriate", path));
+                if (!mReservedDestination.remove(path)) {
+                    Log.w(LOG_TAG, "Not reserved.");
+                }
+            }
+        } else {
+            Log.w(LOG_TAG, String.format("Tried to remove unknown job (id: %d)", jobId));
+        }
+        stopServiceIfAppropriate();
+    }
+
+    /**
+     * Checks job list and call {@link #stopSelf()} when there's no job and no scanner connection
+     * is remaining.
+     * A new job (import/export) cannot be submitted any more after this call.
+     */
+    private synchronized void stopServiceIfAppropriate() {
+        if (mRunningJobMap.size() > 0) {
+            final int size = mRunningJobMap.size();
+
+            // Check if there are processors which aren't finished yet. If we still have ones to
+            // process, we cannot stop the service yet. Also clean up already finished processors
+            // here.
+
+            // Job-ids to be removed. At first all elements in the array are invalid and will
+            // be filled with real job-ids from the array's top. When we find a not-yet-finished
+            // processor, then we start removing those finished jobs. In that case latter half of
+            // this array will be invalid.
+            final int[] toBeRemoved = new int[size];
+            for (int i = 0; i < size; i++) {
+                final int jobId = mRunningJobMap.keyAt(i);
+                final ProcessorBase processor = mRunningJobMap.valueAt(i);
+                if (!processor.isDone()) {
+                    Log.i(LOG_TAG, String.format("Found unfinished job (id: %d)", jobId));
+
+                    // Remove processors which are already "done", all of which should be before
+                    // processors which aren't done yet.
+                    for (int j = 0; j < i; j++) {
+                        mRunningJobMap.remove(toBeRemoved[j]);
+                    }
+                    return;
+                }
+
+                // Remember the finished processor.
+                toBeRemoved[i] = jobId;
+            }
+
+            // We're sure we can remove all. Instead of removing one by one, just call clear().
+            mRunningJobMap.clear();
+        }
+
+        if (!mRemainingScannerConnections.isEmpty()) {
+            Log.i(LOG_TAG, "MediaScanner update is in progress.");
+            return;
+        }
+
+        Log.i(LOG_TAG, "No unfinished job. Stop this service.");
+        mExecutorService.shutdown();
+        stopSelf();
+    }
+
+    /* package */ synchronized void updateMediaScanner(String path) {
+        if (DEBUG) {
+            Log.d(LOG_TAG, "MediaScanner is being updated: " + path);
+        }
+
+        if (mExecutorService.isShutdown()) {
+            Log.w(LOG_TAG, "MediaScanner update is requested after executor's being shut down. " +
+                    "Ignoring the update request");
+            return;
+        }
+        final CustomMediaScannerConnectionClient client =
+                new CustomMediaScannerConnectionClient(path);
+        mRemainingScannerConnections.add(client);
+        client.start();
+    }
+
+    private synchronized void removeConnectionClient(
+            CustomMediaScannerConnectionClient client) {
+        if (DEBUG) {
+            Log.d(LOG_TAG, "Removing custom MediaScannerConnectionClient.");
+        }
+        mRemainingScannerConnections.remove(client);
+        stopServiceIfAppropriate();
+    }
+
+    /* package */ synchronized void handleFinishImportNotification(
+            int jobId, boolean successful) {
+        if (DEBUG) {
+            Log.d(LOG_TAG, String.format("Received vCard import finish notification (id: %d). "
+                    + "Result: %b", jobId, (successful ? "success" : "failure")));
+        }
+        mRunningJobMap.remove(jobId);
+        stopServiceIfAppropriate();
+    }
+
+    /* package */ synchronized void handleFinishExportNotification(
+            int jobId, boolean successful) {
+        if (DEBUG) {
+            Log.d(LOG_TAG, String.format("Received vCard export finish notification (id: %d). "
+                    + "Result: %b", jobId, (successful ? "success" : "failure")));
+        }
+        final ProcessorBase job = mRunningJobMap.get(jobId);
+        mRunningJobMap.remove(jobId);
+        if (job == null) {
+            Log.w(LOG_TAG, String.format("Tried to remove unknown job (id: %d)", jobId));
+        } else if (!(job instanceof ExportProcessor)) {
+            Log.w(LOG_TAG,
+                    String.format("Removed job (id: %s) isn't ExportProcessor", jobId));
+        } else {
+            final String path = ((ExportProcessor)job).getRequest().destUri.getEncodedPath();
+            if (DEBUG) Log.d(LOG_TAG, "Remove reserved path " + path);
+            mReservedDestination.remove(path);
+        }
+
+        stopServiceIfAppropriate();
+    }
+
+    /**
+     * Cancels all the import/export requests and calls {@link ExecutorService#shutdown()}, which
+     * means this Service becomes no longer ready for import/export requests.
+     *
+     * Mainly called from onDestroy().
+     */
+    private synchronized void cancelAllRequestsAndShutdown() {
+        for (int i = 0; i < mRunningJobMap.size(); i++) {
+            mRunningJobMap.valueAt(i).cancel(true);
+        }
+        mRunningJobMap.clear();
+        mExecutorService.shutdown();
+    }
+
+    /**
+     * Removes import caches stored locally.
+     */
+    private void clearCache() {
+        for (final String fileName : fileList()) {
+            if (fileName.startsWith(CACHE_FILE_PREFIX)) {
+                // We don't want to keep all the caches so we remove cache files old enough.
+                Log.i(LOG_TAG, "Remove a temporary file: " + fileName);
+                deleteFile(fileName);
+            }
+        }
+    }
+}
diff --git a/src/com/android/contacts/common/widget/ActivityTouchLinearLayout.java b/src/com/android/contacts/common/widget/ActivityTouchLinearLayout.java
new file mode 100644
index 0000000..d81526e
--- /dev/null
+++ b/src/com/android/contacts/common/widget/ActivityTouchLinearLayout.java
@@ -0,0 +1,44 @@
+/*
+ * 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.contacts.common.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.LinearLayout;
+
+import com.android.contacts.common.interactions.TouchPointManager;
+
+/**
+ * Linear layout for an activity that listens to all touch events on the screen and saves the touch
+ * point.
+ * Typically touch events are handled by child views--this class intercepts those touch events
+ * before passing them on to the child.
+ */
+public class ActivityTouchLinearLayout extends LinearLayout {
+    public ActivityTouchLinearLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent (MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/contacts/common/widget/FloatingActionButtonController.java b/src/com/android/contacts/common/widget/FloatingActionButtonController.java
new file mode 100644
index 0000000..0e94df1
--- /dev/null
+++ b/src/com/android/contacts/common/widget/FloatingActionButtonController.java
@@ -0,0 +1,229 @@
+/*
+ * 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.contacts.common.widget;
+
+import android.app.Activity;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+import android.view.View;
+import android.widget.ImageButton;
+
+import com.android.contacts.common.util.ViewUtil;
+import com.android.contacts.common.R;
+import com.android.phone.common.animation.AnimUtils;
+
+/**
+ * Controls the movement and appearance of the FAB (Floating Action Button).
+ */
+public class FloatingActionButtonController {
+    public static final int ALIGN_MIDDLE = 0;
+    public static final int ALIGN_QUARTER_END = 1;
+    public static final int ALIGN_END = 2;
+
+    private static final int FAB_SCALE_IN_DURATION = 186;
+    private static final int FAB_SCALE_IN_FADE_IN_DELAY = 70;
+    private static final int FAB_ICON_FADE_OUT_DURATION = 46;
+
+    private final int mAnimationDuration;
+    private final int mFloatingActionButtonWidth;
+    private final int mFloatingActionButtonMarginRight;
+    private final View mFloatingActionButtonContainer;
+    private final ImageButton mFloatingActionButton;
+    private final Interpolator mFabInterpolator;
+    private int mScreenWidth;
+
+    public FloatingActionButtonController(Activity activity, View container, ImageButton button) {
+        Resources resources = activity.getResources();
+        mFabInterpolator = AnimationUtils.loadInterpolator(activity,
+                android.R.interpolator.fast_out_slow_in);
+        mFloatingActionButtonWidth = resources.getDimensionPixelSize(
+                R.dimen.floating_action_button_width);
+        mFloatingActionButtonMarginRight = resources.getDimensionPixelOffset(
+                R.dimen.floating_action_button_margin_right);
+        mAnimationDuration = resources.getInteger(
+                R.integer.floating_action_button_animation_duration);
+        mFloatingActionButtonContainer = container;
+        mFloatingActionButton = button;
+        ViewUtil.setupFloatingActionButton(mFloatingActionButtonContainer, resources);
+    }
+
+    /**
+     * Passes the screen width into the class. Necessary for translation calculations.
+     * Should be called as soon as parent View width is available.
+     *
+     * @param screenWidth The width of the screen in pixels.
+     */
+    public void setScreenWidth(int screenWidth) {
+        mScreenWidth = screenWidth;
+    }
+
+    /**
+     * Sets FAB as View.VISIBLE or View.GONE.
+     *
+     * @param visible Whether or not to make the container visible.
+     */
+    public void setVisible(boolean visible) {
+        mFloatingActionButtonContainer.setVisibility(visible ? View.VISIBLE : View.GONE);
+    }
+
+    public boolean isVisible() {
+        return mFloatingActionButtonContainer.getVisibility() == View.VISIBLE;
+    }
+
+    public void changeIcon(Drawable icon, String description) {
+        if (mFloatingActionButton.getDrawable() != icon
+                || !mFloatingActionButton.getContentDescription().equals(description)) {
+            mFloatingActionButton.setImageDrawable(icon);
+            mFloatingActionButton.setContentDescription(description);
+        }
+    }
+
+    /**
+     * Updates the FAB location (middle to right position) as the PageView scrolls.
+     *
+     * @param positionOffset A fraction used to calculate position of the FAB during page scroll.
+     */
+    public void onPageScrolled(float positionOffset) {
+        // As the page is scrolling, if we're on the first tab, update the FAB position so it
+        // moves along with it.
+        mFloatingActionButtonContainer.setTranslationX(
+                (int) (positionOffset * getTranslationXForAlignment(ALIGN_END)));
+    }
+
+    /**
+     * Aligns the FAB to the described location
+     *
+     * @param align One of ALIGN_MIDDLE, ALIGN_QUARTER_RIGHT, or ALIGN_RIGHT.
+     * @param animate Whether or not to animate the transition.
+     */
+    public void align(int align, boolean animate) {
+        align(align, 0 /*offsetX */, 0 /* offsetY */, animate);
+    }
+
+    /**
+     * Aligns the FAB to the described location plus specified additional offsets.
+     *
+     * @param align One of ALIGN_MIDDLE, ALIGN_QUARTER_RIGHT, or ALIGN_RIGHT.
+     * @param offsetX Additional offsetX to translate by.
+     * @param offsetY Additional offsetY to translate by.
+     * @param animate Whether or not to animate the transition.
+     */
+    public void align(int align, int offsetX, int offsetY, boolean animate) {
+        if (mScreenWidth == 0) {
+            return;
+        }
+
+        int translationX = getTranslationXForAlignment(align);
+
+        // Skip animation if container is not shown; animation causes container to show again.
+        if (animate && mFloatingActionButtonContainer.isShown()) {
+            mFloatingActionButtonContainer.animate()
+                    .translationX(translationX + offsetX)
+                    .translationY(offsetY)
+                    .setInterpolator(mFabInterpolator)
+                    .setDuration(mAnimationDuration)
+                    .start();
+        } else {
+            mFloatingActionButtonContainer.setTranslationX(translationX + offsetX);
+            mFloatingActionButtonContainer.setTranslationY(offsetY);
+        }
+    }
+
+    /**
+     * Resizes width and height of the floating action bar container.
+     * @param dimension The new dimensions for the width and height.
+     * @param animate Whether to animate this change.
+     */
+    public void resize(int dimension, boolean animate) {
+        if (animate) {
+            AnimUtils.changeDimensions(mFloatingActionButtonContainer, dimension, dimension);
+        } else {
+            mFloatingActionButtonContainer.getLayoutParams().width = dimension;
+            mFloatingActionButtonContainer.getLayoutParams().height = dimension;
+            mFloatingActionButtonContainer.requestLayout();
+        }
+    }
+
+    /**
+     * Scales the floating action button from no height and width to its actual dimensions. This is
+     * an animation for showing the floating action button.
+     * @param delayMs The delay for the effect, in milliseconds.
+     */
+    public void scaleIn(int delayMs) {
+        setVisible(true);
+        AnimUtils.scaleIn(mFloatingActionButtonContainer, FAB_SCALE_IN_DURATION, delayMs);
+        AnimUtils.fadeIn(mFloatingActionButton, FAB_SCALE_IN_DURATION,
+                delayMs + FAB_SCALE_IN_FADE_IN_DELAY, null);
+    }
+
+    /**
+     * Immediately remove the affects of the last call to {@link #scaleOut}.
+     */
+    public void resetIn() {
+        mFloatingActionButton.setAlpha(1f);
+        mFloatingActionButton.setVisibility(View.VISIBLE);
+        mFloatingActionButtonContainer.setScaleX(1);
+        mFloatingActionButtonContainer.setScaleY(1);
+    }
+
+    /**
+     * Scales the floating action button from its actual dimensions to no height and width. This is
+     * an animation for hiding the floating action button.
+     */
+    public void scaleOut() {
+        AnimUtils.scaleOut(mFloatingActionButtonContainer, mAnimationDuration);
+        // Fade out the icon faster than the scale out animation, so that the icon scaling is less
+        // obvious. We don't want it to scale, but the resizing the container is not as performant.
+        AnimUtils.fadeOut(mFloatingActionButton, FAB_ICON_FADE_OUT_DURATION, null);
+    }
+
+    /**
+     * Calculates the X offset of the FAB to the given alignment, adjusted for whether or not the
+     * view is in RTL mode.
+     *
+     * @param align One of ALIGN_MIDDLE, ALIGN_QUARTER_RIGHT, or ALIGN_RIGHT.
+     * @return The translationX for the given alignment.
+     */
+    public int getTranslationXForAlignment(int align) {
+        int result = 0;
+        switch (align) {
+            case ALIGN_MIDDLE:
+                // Moves the FAB to exactly center screen.
+                return 0;
+            case ALIGN_QUARTER_END:
+                // Moves the FAB a quarter of the screen width.
+                result = mScreenWidth / 4;
+                break;
+            case ALIGN_END:
+                // Moves the FAB half the screen width. Same as aligning right with a marginRight.
+                result = mScreenWidth / 2
+                        - mFloatingActionButtonWidth / 2
+                        - mFloatingActionButtonMarginRight;
+                break;
+        }
+        if (isLayoutRtl()) {
+            result *= -1;
+        }
+        return result;
+    }
+
+    private boolean isLayoutRtl() {
+        return mFloatingActionButtonContainer.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+    }
+}
diff --git a/src/com/android/contacts/common/widget/LayoutSuppressingImageView.java b/src/com/android/contacts/common/widget/LayoutSuppressingImageView.java
new file mode 100644
index 0000000..abcf786
--- /dev/null
+++ b/src/com/android/contacts/common/widget/LayoutSuppressingImageView.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+
+/**
+ * Custom {@link ImageView} that improves layouting performance.
+ *
+ * This improves the performance by not passing requestLayout() to its parent, taking advantage
+ * of knowing that image size won't change once set.
+ */
+public class LayoutSuppressingImageView extends ImageView {
+
+    public LayoutSuppressingImageView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public void requestLayout() {
+        forceLayout();
+    }
+}
diff --git a/src/com/android/contacts/common/widget/LayoutSuppressingQuickContactBadge.java b/src/com/android/contacts/common/widget/LayoutSuppressingQuickContactBadge.java
new file mode 100644
index 0000000..1f48f5d
--- /dev/null
+++ b/src/com/android/contacts/common/widget/LayoutSuppressingQuickContactBadge.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.QuickContactBadge;
+
+/**
+ * Custom {@link QuickContactBadge} that improves layouting performance.
+ *
+ * This improves the performance by not passing requestLayout() to its parent, taking advantage
+ * of knowing that image size won't change once set.
+ */
+public class LayoutSuppressingQuickContactBadge extends QuickContactBadge {
+
+    public LayoutSuppressingQuickContactBadge(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public void requestLayout() {
+        forceLayout();
+    }
+}
diff --git a/src/com/android/contacts/common/widget/ProportionalLayout.java b/src/com/android/contacts/common/widget/ProportionalLayout.java
new file mode 100644
index 0000000..5a5ac29
--- /dev/null
+++ b/src/com/android/contacts/common/widget/ProportionalLayout.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.R;
+
+/**
+ * Layout that calculates its height based on its width, or vice versa (depending on the set
+ * {@link #setDirection(Direction)}. The factor is specified in {@link #setRatio(float)}.
+ * <p>For {@link Direction#heightToWidth}: width := height * factor</p>
+ * <p>For {@link Direction#widthToHeight}: height := width * factor</p>
+ * <p>Only one child is allowed; if more are required, another ViewGroup can be used as the direct
+ * child of this layout.</p>
+ */
+public class ProportionalLayout extends ViewGroup {
+    /** Specifies whether the width should be calculated based on the height or vice-versa  */
+    public enum Direction {
+        widthToHeight("widthToHeight"),
+        heightToWidth("heightToWidth");
+
+        public final String XmlName;
+
+        private Direction(String xmlName) {
+            XmlName = xmlName;
+        }
+
+        /**
+         * Parses the given direction string and returns the Direction instance. This
+         * should be used when inflating from xml
+         */
+        public static Direction parse(String value) {
+            if (widthToHeight.XmlName.equals(value)) {
+                return Direction.widthToHeight;
+            } else if (heightToWidth.XmlName.equals(value)) {
+                return Direction.heightToWidth;
+            } else {
+                throw new IllegalStateException("direction must be either " +
+                        widthToHeight.XmlName + " or " + heightToWidth.XmlName);
+            }
+        }
+    }
+
+    private Direction mDirection;
+    private float mRatio;
+
+    public ProportionalLayout(Context context) {
+        super(context);
+    }
+
+    public ProportionalLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        initFromAttributes(context, attrs);
+    }
+
+    public ProportionalLayout(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        initFromAttributes(context, attrs);
+    }
+
+    private void initFromAttributes(Context context, AttributeSet attrs) {
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ProportionalLayout);
+
+        mDirection = Direction.parse(a.getString(R.styleable.ProportionalLayout_direction));
+        mRatio = a.getFloat(R.styleable.ProportionalLayout_ratio, 1.0f);
+
+        a.recycle();
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (getChildCount() != 1) {
+            throw new IllegalStateException("ProportionalLayout requires exactly one child");
+        }
+
+        final View child = getChildAt(0);
+
+        // Do a first pass to get the optimal size
+        measureChild(child, widthMeasureSpec, heightMeasureSpec);
+        final int childWidth = child.getMeasuredWidth();
+        final int childHeight = child.getMeasuredHeight();
+
+        final int width;
+        final int height;
+        if (mDirection == Direction.heightToWidth) {
+            width = Math.round(childHeight * mRatio);
+            height = childHeight;
+        } else {
+            width = childWidth;
+            height = Math.round(childWidth * mRatio);
+        }
+
+        // Do a second pass so that all children are informed of the new size
+        measureChild(child,
+                MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
+
+        setMeasuredDimension(
+                resolveSize(width, widthMeasureSpec), resolveSize(height, heightMeasureSpec));
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        if (getChildCount() != 1) {
+            throw new IllegalStateException("ProportionalLayout requires exactly one child");
+        }
+
+        final View child = getChildAt(0);
+        child.layout(0, 0, right-left, bottom-top);
+    }
+
+    public Direction getDirection() {
+        return mDirection;
+    }
+
+    public void setDirection(Direction direction) {
+        mDirection = direction;
+    }
+
+    public float getRatio() {
+        return mRatio;
+    }
+
+    public void setRatio(float ratio) {
+        mRatio = ratio;
+    }
+}
diff --git a/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
new file mode 100644
index 0000000..709ce41
--- /dev/null
+++ b/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -0,0 +1,281 @@
+/*
+ * 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.contacts.common.widget;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.ResultReceiver;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListAdapter;
+import android.widget.TextView;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.compat.PhoneAccountCompat;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Dialog that allows the user to select a phone accounts for a given action. Optionally provides
+ * the choice to set the phone account as default.
+ */
+public class SelectPhoneAccountDialogFragment extends DialogFragment {
+    private static final String ARG_TITLE_RES_ID = "title_res_id";
+    private static final String ARG_CAN_SET_DEFAULT = "can_set_default";
+    private static final String ARG_ACCOUNT_HANDLES = "account_handles";
+    private static final String ARG_IS_DEFAULT_CHECKED = "is_default_checked";
+    private static final String ARG_LISTENER = "listener";
+
+    private int mTitleResId;
+    private boolean mCanSetDefault;
+    private List<PhoneAccountHandle> mAccountHandles;
+    private boolean mIsSelected;
+    private boolean mIsDefaultChecked;
+    private TelecomManager mTelecomManager;
+    private SelectPhoneAccountListener mListener;
+
+    /**
+     * Create new fragment instance with default title and no option to set as default.
+     *
+     * @param accountHandles The {@code PhoneAccountHandle}s available to select from.
+     * @param listener The listener for the results of the account selection.
+     */
+    public static SelectPhoneAccountDialogFragment newInstance(
+            List<PhoneAccountHandle> accountHandles, SelectPhoneAccountListener listener) {
+        return newInstance(R.string.select_account_dialog_title, false,
+                accountHandles, listener);
+    }
+
+    /**
+     * Create new fragment instance.
+     * This method also allows specifying a custom title and "set default" checkbox.
+     *
+     * @param titleResId The resource ID for the string to use in the title of the dialog.
+     * @param canSetDefault {@code true} if the dialog should include an option to set the selection
+     * as the default. False otherwise.
+     * @param accountHandles The {@code PhoneAccountHandle}s available to select from.
+     * @param listener The listener for the results of the account selection.
+     */
+    public static SelectPhoneAccountDialogFragment newInstance(int titleResId,
+            boolean canSetDefault, List<PhoneAccountHandle> accountHandles,
+            SelectPhoneAccountListener listener) {
+        ArrayList<PhoneAccountHandle> accountHandlesCopy = new ArrayList<PhoneAccountHandle>();
+        if (accountHandles != null) {
+            accountHandlesCopy.addAll(accountHandles);
+        }
+        SelectPhoneAccountDialogFragment fragment = new SelectPhoneAccountDialogFragment();
+        final Bundle args = new Bundle();
+        args.putInt(ARG_TITLE_RES_ID, titleResId);
+        args.putBoolean(ARG_CAN_SET_DEFAULT, canSetDefault);
+        args.putParcelableArrayList(ARG_ACCOUNT_HANDLES, accountHandlesCopy);
+        args.putParcelable(ARG_LISTENER, listener);
+        fragment.setArguments(args);
+        fragment.setListener(listener);
+        return fragment;
+    }
+
+    public SelectPhoneAccountDialogFragment() {
+    }
+
+    public void setListener(SelectPhoneAccountListener listener) {
+        mListener = listener;
+    }
+
+    public static class SelectPhoneAccountListener extends ResultReceiver {
+        static final int RESULT_SELECTED = 1;
+        static final int RESULT_DISMISSED = 2;
+
+        static final String EXTRA_SELECTED_ACCOUNT_HANDLE = "extra_selected_account_handle";
+        static final String EXTRA_SET_DEFAULT = "extra_set_default";
+
+        public SelectPhoneAccountListener() {
+            super(new Handler());
+        }
+
+        @Override
+        protected void onReceiveResult(int resultCode, Bundle resultData) {
+            if (resultCode == RESULT_SELECTED) {
+                onPhoneAccountSelected(
+                        (PhoneAccountHandle) resultData.getParcelable(
+                                EXTRA_SELECTED_ACCOUNT_HANDLE),
+                        resultData.getBoolean(EXTRA_SET_DEFAULT));
+            } else if (resultCode == RESULT_DISMISSED) {
+                onDialogDismissed();
+            }
+        }
+
+        public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle,
+                boolean setDefault) {}
+
+        public void onDialogDismissed() {}
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(ARG_IS_DEFAULT_CHECKED, mIsDefaultChecked);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        mTitleResId = getArguments().getInt(ARG_TITLE_RES_ID);
+        mCanSetDefault = getArguments().getBoolean(ARG_CAN_SET_DEFAULT);
+        mAccountHandles = getArguments().getParcelableArrayList(ARG_ACCOUNT_HANDLES);
+        mListener = getArguments().getParcelable(ARG_LISTENER);
+        if (savedInstanceState != null) {
+            mIsDefaultChecked = savedInstanceState.getBoolean(ARG_IS_DEFAULT_CHECKED);
+        }
+        mIsSelected = false;
+        mTelecomManager =
+                (TelecomManager) getActivity().getSystemService(Context.TELECOM_SERVICE);
+
+        final DialogInterface.OnClickListener selectionListener =
+                new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                mIsSelected = true;
+                PhoneAccountHandle selectedAccountHandle = mAccountHandles.get(which);
+                final Bundle result = new Bundle();
+                result.putParcelable(SelectPhoneAccountListener.EXTRA_SELECTED_ACCOUNT_HANDLE,
+                        selectedAccountHandle);
+                result.putBoolean(SelectPhoneAccountListener.EXTRA_SET_DEFAULT,
+                        mIsDefaultChecked);
+                if (mListener != null) {
+                    mListener.onReceiveResult(SelectPhoneAccountListener.RESULT_SELECTED, result);
+                }
+            }
+        };
+
+        final CompoundButton.OnCheckedChangeListener checkListener =
+                new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton check, boolean isChecked) {
+                mIsDefaultChecked = isChecked;
+            }
+        };
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        ListAdapter selectAccountListAdapter = new SelectAccountListAdapter(
+                builder.getContext(),
+                R.layout.select_account_list_item,
+                mAccountHandles);
+
+        AlertDialog dialog = builder.setTitle(mTitleResId)
+                .setAdapter(selectAccountListAdapter, selectionListener)
+                .create();
+
+        if (mCanSetDefault) {
+            // Generate custom checkbox view
+            LinearLayout checkboxLayout = (LinearLayout) getActivity()
+                    .getLayoutInflater()
+                    .inflate(R.layout.default_account_checkbox, null);
+
+            CheckBox cb =
+                    (CheckBox) checkboxLayout.findViewById(R.id.default_account_checkbox_view);
+            cb.setOnCheckedChangeListener(checkListener);
+            cb.setChecked(mIsDefaultChecked);
+
+            dialog.getListView().addFooterView(checkboxLayout);
+        }
+
+        return dialog;
+    }
+
+    private class SelectAccountListAdapter extends ArrayAdapter<PhoneAccountHandle> {
+        private int mResId;
+
+        public SelectAccountListAdapter(
+                Context context, int resource, List<PhoneAccountHandle> accountHandles) {
+            super(context, resource, accountHandles);
+            mResId = resource;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            LayoutInflater inflater = (LayoutInflater)
+                    getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+            View rowView;
+            final ViewHolder holder;
+
+            if (convertView == null) {
+                // Cache views for faster scrolling
+                rowView = inflater.inflate(mResId, null);
+                holder = new ViewHolder();
+                holder.labelTextView = (TextView) rowView.findViewById(R.id.label);
+                holder.numberTextView = (TextView) rowView.findViewById(R.id.number);
+                holder.imageView = (ImageView) rowView.findViewById(R.id.icon);
+                rowView.setTag(holder);
+            }
+            else {
+                rowView = convertView;
+                holder = (ViewHolder) rowView.getTag();
+            }
+
+            PhoneAccountHandle accountHandle = getItem(position);
+            PhoneAccount account = mTelecomManager.getPhoneAccount(accountHandle);
+            if (account == null) {
+                return rowView;
+            }
+            holder.labelTextView.setText(account.getLabel());
+            if (account.getAddress() == null ||
+                    TextUtils.isEmpty(account.getAddress().getSchemeSpecificPart())) {
+                holder.numberTextView.setVisibility(View.GONE);
+            } else {
+                holder.numberTextView.setVisibility(View.VISIBLE);
+                holder.numberTextView.setText(
+                        PhoneNumberUtilsCompat.createTtsSpannable(
+                                account.getAddress().getSchemeSpecificPart()));
+            }
+            holder.imageView.setImageDrawable(PhoneAccountCompat.createIconDrawable(account,
+                    getContext()));
+            return rowView;
+        }
+
+        private class ViewHolder {
+            TextView labelTextView;
+            TextView numberTextView;
+            ImageView imageView;
+        }
+    }
+
+    @Override
+    public void onStop() {
+        if (!mIsSelected && mListener != null) {
+            mListener.onReceiveResult(SelectPhoneAccountListener.RESULT_DISMISSED, null);
+        }
+        super.onStop();
+    }
+}
diff --git a/src/com/android/contacts/commonbind/ObjectFactory.java b/src/com/android/contacts/commonbind/ObjectFactory.java
new file mode 100644
index 0000000..3bbd52d
--- /dev/null
+++ b/src/com/android/contacts/commonbind/ObjectFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.contacts.commonbind;
+
+import com.android.contacts.common.logging.Logger;
+import com.android.contacts.common.preference.PreferenceManager;
+
+import android.content.Context;
+
+/**
+ * Creates default bindings for overlays.
+ */
+public class ObjectFactory {
+
+    public static Logger getLogger() {
+        return null;
+    }
+
+    public static PreferenceManager getPreferenceManager(Context context) { return null; }
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsUtil.java b/src/com/android/contacts/commonbind/analytics/AnalyticsUtil.java
new file mode 100644
index 0000000..84420b6
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsUtil.java
@@ -0,0 +1,51 @@
+/*
+ * 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.contacts.commonbind.analytics;
+
+import android.app.Activity;
+import android.app.Application;
+import android.app.Fragment;
+import android.text.TextUtils;
+
+public class AnalyticsUtil {
+
+    /**
+     * Initialize this class and setup automatic activity tracking.
+     */
+    public static void initialize(Application application) { }
+
+    /**
+     * Log a screen view for {@param fragment}.
+     */
+    public static void sendScreenView(Fragment fragment) {}
+
+    public static void sendScreenView(Fragment fragment, Activity activity) {}
+
+    public static void sendScreenView(Fragment fragment, Activity activity, String tag) {}
+
+    public static void sendScreenView(String fragmentName, Activity activity, String tag) {}
+
+    /**
+     * Logs a event to the analytics server.
+     *
+     * @param application The application the tracker is stored in.
+     * @param category The category for the event.
+     * @param action The event action.
+     * @param label The event label.
+     * @param value The value associated with the event.
+     */
+    public static void sendEvent(Application application, String category, String action,
+            String label, long value) { }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/commonbind/experiments/Flags.java b/src/com/android/contacts/commonbind/experiments/Flags.java
new file mode 100644
index 0000000..875712f
--- /dev/null
+++ b/src/com/android/contacts/commonbind/experiments/Flags.java
@@ -0,0 +1,49 @@
+/*
+ * 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.contacts.commonbind.experiments;
+
+import android.content.Context;
+
+import com.android.contacts.common.Experiments;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Provides getters for experiment flags.
+ * This stub class is designed to be overwritten by an overlay.
+ */
+public final class Flags {
+
+    private static Flags sInstance;
+
+    private Map<String,Boolean> mMap;
+
+    public static Flags getInstance(Context context) {
+        if (sInstance == null) {
+            sInstance = new Flags();
+        }
+        return sInstance;
+    }
+
+    private Flags() {
+        mMap = new HashMap<>();
+    }
+
+    public boolean getBoolean(String flagName) {
+        return mMap.containsKey(flagName) ? mMap.get(flagName) : false;
+    }
+}
diff --git a/src/com/android/contacts/commonbind/util/UserAgentGenerator.java b/src/com/android/contacts/commonbind/util/UserAgentGenerator.java
new file mode 100644
index 0000000..13bcaca
--- /dev/null
+++ b/src/com/android/contacts/commonbind/util/UserAgentGenerator.java
@@ -0,0 +1,36 @@
+/*
+ * 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.contacts.commonbind.util;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+
+/**
+ * Generates a user agent string for the application.
+ */
+public class UserAgentGenerator {
+    /**
+     * Builds a user agent string for the current application.  No default implementation.
+     *
+     * @param context The context.
+     * @return The user agent string.
+     */
+    public static String getUserAgent(Context context) {
+       return null;
+    }
+}
diff --git a/src/com/android/contacts/editor/GroupMembershipView.java b/src/com/android/contacts/editor/GroupMembershipView.java
index d41991c..ba0c2c6 100644
--- a/src/com/android/contacts/editor/GroupMembershipView.java
+++ b/src/com/android/contacts/editor/GroupMembershipView.java
@@ -38,9 +38,9 @@
 
 import com.android.contacts.GroupMetaDataLoader;
 import com.android.contacts.R;
+import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.model.dataitem.DataKind;
-import com.android.contacts.interactions.GroupCreationDialogFragment;
-import com.android.contacts.interactions.GroupCreationDialogFragment.OnGroupCreatedListener;
+import com.android.contacts.group.GroupNameEditDialogFragment;
 import com.android.contacts.common.model.RawContactDelta;
 import com.android.contacts.common.model.ValuesDelta;
 import com.android.contacts.common.model.RawContactModifier;
@@ -56,6 +56,8 @@
 public class GroupMembershipView extends LinearLayout
         implements OnClickListener, OnItemClickListener {
 
+    public static final String TAG_CREATE_GROUP_FRAGMENT = "createGroupDialog";
+
     private static final int CREATE_NEW_GROUP_GROUP_ID = 133;
 
     public static final class GroupSelectionItem {
@@ -449,17 +451,23 @@
         UiClosables.closeQuietly(mPopup);
         mPopup = null;
 
-        GroupCreationDialogFragment.show(
+        final GroupNameEditDialogFragment dialog =
+                GroupNameEditDialogFragment.newInstanceForCreation(
+                        new AccountWithDataSet(mAccountName, mAccountType, mDataSet), null);
+
+        // If the device is rotated after the dialog is shown, the listener will become null,
+        // so that the popup from GroupMembershipView will not be shown.
+        dialog.setListener(new GroupNameEditDialogFragment.Listener() {
+            @Override
+            public void onGroupNameEditStarted(String groupName) {
+                mCreatedNewGroup = true;
+            }
+            @Override
+            public void onGroupNameEditCancelled() { }
+        });
+        dialog.show(
                 ((Activity) getContext()).getFragmentManager(),
-                mAccountType,
-                mAccountName,
-                mDataSet,
-                new OnGroupCreatedListener() {
-                    @Override
-                    public void onGroupCreated() {
-                        mCreatedNewGroup = true;
-                    }
-                });
+                TAG_CREATE_GROUP_FRAGMENT);
     }
 
 }
diff --git a/src/com/android/contacts/group/GroupNameEditDialogFragment.java b/src/com/android/contacts/group/GroupNameEditDialogFragment.java
index 235a878..b2bfd0b 100644
--- a/src/com/android/contacts/group/GroupNameEditDialogFragment.java
+++ b/src/com/android/contacts/group/GroupNameEditDialogFragment.java
@@ -17,11 +17,18 @@
 
 import android.app.Dialog;
 import android.app.DialogFragment;
-import android.app.FragmentManager;
+import android.app.LoaderManager;
 import android.content.Context;
+import android.content.CursorLoader;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
 import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.support.design.widget.TextInputLayout;
 import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.text.TextUtils;
@@ -33,60 +40,99 @@
 import android.widget.EditText;
 import android.widget.TextView;
 
+import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.google.common.base.Strings;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * Edits the name of a group.
  */
-public final class GroupNameEditDialogFragment extends DialogFragment {
+public final class GroupNameEditDialogFragment extends DialogFragment implements
+        LoaderManager.LoaderCallbacks<Cursor> {
 
-    private static final String KEY_IS_INSERT = "isInsert";
     private static final String KEY_GROUP_NAME = "groupName";
 
     private static final String ARG_IS_INSERT = "isInsert";
     private static final String ARG_GROUP_NAME = "groupName";
+    private static final String ARG_ACCOUNT = "account";
+    private static final String ARG_CALLBACK_ACTION = "callbackAction";
+    private static final String ARG_GROUP_ID = "groupId";
+
+    private static final long NO_GROUP_ID = -1;
+
 
     /** Callbacks for hosts of the {@link GroupNameEditDialogFragment}. */
     public interface Listener {
-        void onGroupNameEdit(String groupName, boolean isInsert);
+        void onGroupNameEditStarted(String name);
         void onGroupNameEditCancelled();
+
+        public static final Listener None = new Listener() {
+            @Override
+            public void onGroupNameEditStarted(String name) { }
+
+            @Override
+            public void onGroupNameEditCancelled() { }
+        };
     }
 
     private boolean mIsInsert;
     private String mGroupName;
+    private long mGroupId;
+    private Listener mListener;
+    private AccountWithDataSet mAccount;
     private EditText mGroupNameEditText;
+    private TextInputLayout mGroupNameTextLayout;
+    private Set<String> mExistingGroups = Collections.emptySet();
 
-    public static void showInsertDialog(FragmentManager fragmentManager, String tag) {
-        showDialog(fragmentManager, tag, /* isInsert */ true, /* groupName */ null);
+    public static GroupNameEditDialogFragment newInstanceForCreation(
+            AccountWithDataSet account, String callbackAction) {
+        return newInstance(account, callbackAction, NO_GROUP_ID, null);
     }
 
-    public static void showUpdateDialog(FragmentManager fragmentManager,
-            String tag, String groupName) {
-        showDialog(fragmentManager, tag, /* isInsert */ false, groupName);
+    public static GroupNameEditDialogFragment newInstanceForUpdate(
+            AccountWithDataSet account, String callbackAction, long groupId, String groupName) {
+        return newInstance(account, callbackAction, groupId, groupName);
     }
 
-    private static void showDialog(FragmentManager fragmentManager,
-            String tag, boolean isInsert, String groupName) {
+    private static GroupNameEditDialogFragment newInstance(
+            AccountWithDataSet account, String callbackAction, long groupId, String groupName) {
+        if (account == null || account.name == null || account.type == null) {
+            throw new IllegalArgumentException("Invalid account");
+        }
+        final boolean isInsert = groupId == NO_GROUP_ID;
         final Bundle args = new Bundle();
         args.putBoolean(ARG_IS_INSERT, isInsert);
+        args.putLong(ARG_GROUP_ID, groupId);
         args.putString(ARG_GROUP_NAME, groupName);
+        args.putParcelable(ARG_ACCOUNT, account);
+        args.putString(ARG_CALLBACK_ACTION, callbackAction);
 
         final GroupNameEditDialogFragment dialog = new GroupNameEditDialogFragment();
         dialog.setArguments(args);
-        dialog.show(fragmentManager, tag);
+        return dialog;
     }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        setStyle(STYLE_NORMAL, R.style.ContactsAlertDialogThemeAppCompat);
+        final Bundle args = getArguments();
         if (savedInstanceState == null) {
-            final Bundle args = getArguments();
-            mIsInsert = args.getBoolean(KEY_IS_INSERT);
             mGroupName = args.getString(KEY_GROUP_NAME);
         } else {
-            mIsInsert = savedInstanceState.getBoolean(ARG_IS_INSERT);
             mGroupName = savedInstanceState.getString(ARG_GROUP_NAME);
         }
+        mGroupId = args.getLong(ARG_GROUP_ID, NO_GROUP_ID);
+        mIsInsert = args.getBoolean(ARG_IS_INSERT, true);
+        mAccount = getArguments().getParcelable(ARG_ACCOUNT);
+
+        // There is only one loader so the id arg doesn't matter.
+        getLoaderManager().initLoader(0, null, this);
     }
 
     @Override
@@ -96,7 +142,7 @@
         title.setText(mIsInsert
                 ? R.string.group_name_dialog_insert_title
                 : R.string.group_name_dialog_update_title);
-        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), getTheme())
                 .setCustomTitle(title)
                 .setView(R.layout.group_name_edit_dialog)
                 .setNegativeButton(android.R.string.cancel, new OnClickListener() {
@@ -107,12 +153,9 @@
                         dismiss();
                     }
                 })
-                .setPositiveButton(android.R.string.ok, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        getListener().onGroupNameEdit(getGroupName(), mIsInsert);
-                    }
-                });
+                // The Positive button listener is defined below in the OnShowListener to
+                // allow for input validation
+                .setPositiveButton(android.R.string.ok, null);
 
         // Disable the create button when the name is empty
         final AlertDialog alertDialog = builder.create();
@@ -122,6 +165,8 @@
             @Override
             public void onShow(DialogInterface dialog) {
                 mGroupNameEditText = (EditText) alertDialog.findViewById(android.R.id.text1);
+                mGroupNameTextLayout =
+                        (TextInputLayout) alertDialog.findViewById(R.id.text_input_layout);
                 if (!TextUtils.isEmpty(mGroupName)) {
                     mGroupNameEditText.setText(mGroupName);
                     // Guard against already created group names that are longer than the max
@@ -134,6 +179,14 @@
 
                 final Button createButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                 createButton.setEnabled(!TextUtils.isEmpty(getGroupName()));
+
+                // Override the click listener to prevent dismissal if creating a duplicate group.
+                createButton.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        maybePersistCurrentGroupName(v);
+                    }
+                });
                 mGroupNameEditText.addTextChangedListener(new TextWatcher() {
                     @Override
                     public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -145,6 +198,7 @@
 
                     @Override
                     public void afterTextChanged(Editable s) {
+                        mGroupNameTextLayout.setError(null);
                         createButton.setEnabled(!TextUtils.isEmpty(s));
                     }
                 });
@@ -154,6 +208,56 @@
         return alertDialog;
     }
 
+    /**
+     * Sets the listener for the rename
+     *
+     * Setting a listener on a fragment is error prone since it will be lost if the fragment
+     * is recreated. This exists because it is used from a view class (GroupMembersView) which
+     * needs to modify it's state when this fragment updates the name.
+     *
+     * @param listener the listener. can be null
+     */
+    public void setListener(Listener listener) {
+        mListener = listener;
+    }
+
+    private boolean hasNameChanged() {
+        final String name = Strings.nullToEmpty(getGroupName());
+        final String originalName = getArguments().getString(ARG_GROUP_NAME);
+        return (mIsInsert && !name.isEmpty()) || !name.equals(originalName);
+    }
+
+    private void maybePersistCurrentGroupName(View button) {
+        if (!hasNameChanged()) {
+            dismiss();
+            return;
+        }
+        final String name = getGroupName();
+        // Note we don't check if the loader finished populating mExistingGroups. It's not the
+        // end of the world if the user ends up with a duplicate group and in practice it should
+        // never really happen (the query should complete much sooner than the user can edit the
+        // label)
+        if (mExistingGroups.contains(name)) {
+            mGroupNameTextLayout.setError(
+                    getString(R.string.groupExistsErrorMessage));
+            button.setEnabled(false);
+            return;
+        }
+        final String callbackAction = getArguments().getString(ARG_CALLBACK_ACTION);
+        final Intent serviceIntent;
+        if (mIsInsert) {
+            serviceIntent = ContactSaveService.createNewGroupIntent(getActivity(),
+                    new AccountWithDataSet(mAccount.name, mAccount.type, mAccount.dataSet),
+                    name, null, getActivity().getClass(), callbackAction);
+        } else {
+            serviceIntent = ContactSaveService.createGroupRenameIntent(getActivity(), mGroupId,
+                    name, getActivity().getClass(), callbackAction);
+        }
+        ContactSaveService.startService(getActivity(), serviceIntent);
+        getListener().onGroupNameEditStarted(name);
+        dismiss();
+    }
+
     @Override
     public void onCancel(DialogInterface dialog) {
         super.onCancel(dialog);
@@ -163,10 +267,61 @@
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
-        outState.putBoolean(KEY_IS_INSERT, mIsInsert);
         outState.putString(KEY_GROUP_NAME, getGroupName());
     }
 
+    @Override
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+        // Only a single loader so id is ignored.
+        return new CursorLoader(getActivity(), GroupNameQuery.URI,
+                GroupNameQuery.PROJECTION, GroupNameQuery.getSelection(mAccount),
+                GroupNameQuery.getSelectionArgs(mAccount), null);
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        mExistingGroups = new HashSet<>();
+        while (data.moveToNext()) {
+            mExistingGroups.add(data.getString(GroupNameQuery.TITLE));
+        }
+    }
+
+    @Override
+    public void onLoaderReset(Loader<Cursor> loader) {
+    }
+
+    /**
+     * Defines the structure of the query performed by the CursorLoader created by
+     * GroupNameEditDialogFragment
+     */
+    private static class GroupNameQuery {
+
+        public static final int TITLE = 0;
+        public static final Uri URI = ContactsContract.Groups.CONTENT_URI;
+        public static final String[] PROJECTION = new String[] { ContactsContract.Groups.TITLE };
+
+        public static String getSelection(AccountWithDataSet account) {
+            final StringBuilder builder = new StringBuilder();
+            builder.append(ContactsContract.Groups.ACCOUNT_NAME).append("=? AND ")
+                    .append(ContactsContract.Groups.ACCOUNT_TYPE).append("=?");
+            if (account.dataSet != null) {
+                builder.append(" AND ").append(ContactsContract.Groups.DATA_SET).append("=?");
+            }
+            return builder.toString();
+        }
+
+        public static String[] getSelectionArgs(AccountWithDataSet account) {
+            final int len = account.dataSet == null ? 2 : 3;
+            final String[] args = new String[len];
+            args[0] = account.name;
+            args[1] = account.type;
+            if (account.dataSet != null) {
+                args[2] = account.dataSet;
+            }
+            return args;
+        }
+    }
+
     private void showInputMethod(View view) {
         final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
                 Context.INPUT_METHOD_SERVICE);
@@ -184,11 +339,13 @@
     }
 
     private Listener getListener() {
-        if (!(getActivity() instanceof Listener)) {
-            throw new ClassCastException(getActivity() + " must implement " +
-                    Listener.class.getName());
+        if (mListener != null) {
+            return mListener;
+        } else if (getActivity() instanceof Listener) {
+            return (Listener) getActivity();
+        } else {
+            return Listener.None;
         }
-        return (Listener) getActivity();
     }
 
     private String getGroupName() {
diff --git a/src/com/android/contacts/group/GroupsFragment.java b/src/com/android/contacts/group/GroupsFragment.java
index be1b44a..508c184 100644
--- a/src/com/android/contacts/group/GroupsFragment.java
+++ b/src/com/android/contacts/group/GroupsFragment.java
@@ -18,7 +18,6 @@
 
 import android.app.Fragment;
 import android.app.LoaderManager;
-import android.content.Context;
 import android.content.CursorLoader;
 import android.content.Loader;
 import android.database.Cursor;
diff --git a/src/com/android/contacts/interactions/GroupCreationDialogFragment.java b/src/com/android/contacts/interactions/GroupCreationDialogFragment.java
deleted file mode 100644
index e998688..0000000
--- a/src/com/android/contacts/interactions/GroupCreationDialogFragment.java
+++ /dev/null
@@ -1,100 +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.contacts.interactions;
-
-import android.app.Activity;
-import android.app.FragmentManager;
-import android.content.Intent;
-import android.os.Bundle;
-import android.widget.EditText;
-
-import com.android.contacts.ContactSaveService;
-import com.android.contacts.R;
-import com.android.contacts.activities.ContactEditorBaseActivity;
-import com.android.contacts.common.model.account.AccountWithDataSet;
-
-/**
- * A dialog for creating a new group.
- */
-public class GroupCreationDialogFragment extends GroupNameDialogFragment {
-    private static final String ARG_ACCOUNT_TYPE = "accountType";
-    private static final String ARG_ACCOUNT_NAME = "accountName";
-    private static final String ARG_DATA_SET = "dataSet";
-
-    public static final String FRAGMENT_TAG = "createGroupDialog";
-
-    private final OnGroupCreatedListener mListener;
-
-    public interface OnGroupCreatedListener {
-        public void onGroupCreated();
-    }
-
-    public static void show(
-            FragmentManager fragmentManager, String accountType, String accountName,
-            String dataSet, OnGroupCreatedListener listener) {
-        GroupCreationDialogFragment dialog = new GroupCreationDialogFragment(listener);
-        Bundle args = new Bundle();
-        args.putString(ARG_ACCOUNT_TYPE, accountType);
-        args.putString(ARG_ACCOUNT_NAME, accountName);
-        args.putString(ARG_DATA_SET, dataSet);
-        dialog.setArguments(args);
-        dialog.show(fragmentManager, FRAGMENT_TAG);
-    }
-
-    public GroupCreationDialogFragment() {
-        super();
-        mListener = null;
-    }
-
-    private GroupCreationDialogFragment(OnGroupCreatedListener listener) {
-        super();
-        mListener = listener;
-    }
-
-    public OnGroupCreatedListener getOnGroupCreatedListener() {
-        return mListener;
-    }
-
-    @Override
-    protected void initializeGroupLabelEditText(EditText editText) {
-    }
-
-    @Override
-    protected int getTitleResourceId() {
-        return R.string.create_group_dialog_title;
-    }
-
-    @Override
-    protected void onCompleted(String groupLabel) {
-        Bundle arguments = getArguments();
-        String accountType = arguments.getString(ARG_ACCOUNT_TYPE);
-        String accountName = arguments.getString(ARG_ACCOUNT_NAME);
-        String dataSet = arguments.getString(ARG_DATA_SET);
-
-        // Indicate to the listener that a new group will be created.
-        // If the device is rotated, mListener will become null, so that the
-        // popup from GroupMembershipView will not be shown.
-        if (mListener != null) {
-            mListener.onGroupCreated();
-        }
-
-        Activity activity = getActivity();
-        activity.startService(ContactSaveService.createNewGroupIntent(activity,
-                new AccountWithDataSet(accountName, accountType, dataSet), groupLabel,
-                null /* no new members to add */,
-                activity.getClass(), ContactEditorBaseActivity.ACTION_EDIT));
-    }
-}
diff --git a/src/com/android/contacts/interactions/GroupNameDialogFragment.java b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
deleted file mode 100644
index 5efccfc..0000000
--- a/src/com/android/contacts/interactions/GroupNameDialogFragment.java
+++ /dev/null
@@ -1,101 +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.contacts.interactions;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnShowListener;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.InputFilter;
-import android.text.InputType;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.EditText;
-
-import com.android.contacts.R;
-
-/**
- * A common superclass for creating and renaming groups.
- */
-// TODO: consolidate it with GroupNameEditDialogFragment
-public abstract class GroupNameDialogFragment extends DialogFragment {
-    protected abstract int getTitleResourceId();
-    protected abstract void initializeGroupLabelEditText(EditText editText);
-    protected abstract void onCompleted(String groupLabel);
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        final LayoutInflater layoutInflater = LayoutInflater.from(builder.getContext());
-        final View view = layoutInflater.inflate(R.layout.group_name_dialog, null);
-        final EditText editText = (EditText) view.findViewById(R.id.group_label);
-        final int maxLength = getResources().getInteger(R.integer.group_name_max_length);
-        editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(maxLength) });
-        editText.setInputType(InputType.TYPE_CLASS_TEXT);
-        initializeGroupLabelEditText(editText);
-
-        builder.setTitle(getTitleResourceId());
-        builder.setView(view);
-        editText.requestFocus();
-        builder.setPositiveButton(android.R.string.ok,
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialogInterface, int whichButton) {
-                        onCompleted(editText.getText().toString().trim());
-                    }
-                }
-            );
-
-        builder.setNegativeButton(android.R.string.cancel, null);
-        final AlertDialog dialog = builder.create();
-
-        dialog.setOnShowListener(new OnShowListener() {
-            @Override
-            public void onShow(DialogInterface dialogInterface) {
-                updateOkButtonState(dialog, editText);
-            }
-        });
-        editText.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-            }
-
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-                updateOkButtonState(dialog, editText);
-            }
-        });
-        dialog.getWindow().setSoftInputMode(
-                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
-        return dialog;
-    }
-
-    /* package */ void updateOkButtonState(AlertDialog dialog, EditText editText) {
-        final Button okButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
-        okButton.setEnabled(!TextUtils.isEmpty(editText.getText().toString().trim()));
-    }
-}
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 2060068..da33b55 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -92,7 +92,7 @@
     private boolean mSelectionVerified;
     private int mLastSelectedPosition = -1;
     private boolean mRefreshingContactUri;
-    private ContactListFilter mFilter;
+    protected ContactListFilter mFilter;
     private String mPersistentSelectionPrefix = PERSISTENT_SELECTION_PREFIX;
 
     protected OnContactBrowserActionListener mListener;
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index afaafb7..32b64e1 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -15,11 +15,16 @@
  */
 package com.android.contacts.list;
 
+import android.accounts.Account;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.CursorLoader;
 import android.content.Loader;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.support.v4.widget.SwipeRefreshLayout;
 import android.provider.ContactsContract.Directory;
 import android.text.TextUtils;
 import android.view.Gravity;
@@ -35,12 +40,18 @@
 
 import com.android.contacts.R;
 import com.android.contacts.activities.PeopleActivity;
+import com.android.contacts.common.Experiments;
 import com.android.contacts.common.list.ContactListAdapter;
 import com.android.contacts.common.list.ContactListFilter;
 import com.android.contacts.common.list.ContactListItemView;
 import com.android.contacts.common.list.DefaultContactListAdapter;
 import com.android.contacts.common.list.FavoritesAndContactsLoader;
+import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.commonbind.experiments.Flags;
+import com.android.contacts.util.SyncUtil;
+
+import java.util.List;
 
 /**
  * Fragment containing a contact list used for browsing (as compared to
@@ -53,6 +64,7 @@
     private View mEmptyHomeView;
     private View mAccountFilterContainer;
     private TextView mSearchProgressText;
+    private SwipeRefreshLayout mSwipeRefreshLayout;
     private FeatureHighlightCallback mCallback;
 
     public interface FeatureHighlightCallback {
@@ -91,7 +103,9 @@
 
     private void bindListHeader(int numberOfContacts) {
         final ContactListFilter filter = getFilter();
-        if (!isSearchMode() && numberOfContacts <= 0) {
+        // If the phone has at least one Google account whose sync status is unsyncable or pending
+        // or active, we have to make mAccountFilterContainer visible.
+        if (!isSearchMode() && numberOfContacts <= 0 && shouldShowEmptyView(filter)) {
             if (filter != null && filter.isContactsFilterType()) {
                 makeViewVisible(mEmptyHomeView);
             } else {
@@ -114,6 +128,38 @@
         }
     }
 
+    /**
+     * If at least one Google account is unsyncable or its sync status is pending or active, we
+     * should not show empty view even if the number of contacts is 0. We should show sync status
+     * with empty list instead.
+     */
+    private boolean shouldShowEmptyView(ContactListFilter filter) {
+        if (filter == null) {
+            return true;
+        }
+        // TODO(samchen) : Check ContactListFilter.FILTER_TYPE_CUSTOM
+        if (ContactListFilter.FILTER_TYPE_DEFAULT == filter.filterType
+                || ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS == filter.filterType) {
+            final List<AccountWithDataSet> accounts = AccountTypeManager.getInstance(getContext())
+                    .getAccounts(/* contactsWritableOnly */ true);
+            final List<Account> syncableAccounts = filter.getSyncableAccounts(accounts);
+
+            if (syncableAccounts != null && syncableAccounts.size() > 0) {
+                for (Account account : syncableAccounts) {
+                    if (SyncUtil.isSyncStatusPendingOrActive(account)
+                            || SyncUtil.isUnsyncableGoogleAccount(account)) {
+                        return false;
+                    }
+                }
+            }
+        } else if (ContactListFilter.FILTER_TYPE_ACCOUNT == filter.filterType) {
+            final Account account = new Account(filter.accountName, filter.accountType);
+            return !(SyncUtil.isSyncStatusPendingOrActive(account)
+                    || SyncUtil.isUnsyncableGoogleAccount(account));
+        }
+        return true;
+    }
+
     // Show the view that's specified by id and hide the other two.
     private void makeViewVisible(View view) {
         mEmptyAccountView.setVisibility(view == mEmptyAccountView ? View.VISIBLE : View.GONE);
@@ -215,6 +261,10 @@
     protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
         super.onCreateView(inflater, container);
 
+        if (Flags.getInstance(getActivity()).getBoolean(Experiments.PULL_TO_REFRESH)) {
+            initSwipeRefreshLayout();
+
+        }
         // Putting the header view inside a container will allow us to make
         // it invisible later. See checkHeaderViewVisibility()
         FrameLayout headerContainer = new FrameLayout(inflater.getContext());
@@ -227,6 +277,55 @@
         mSearchProgressText = (TextView) mSearchHeaderView.findViewById(R.id.totalContactsText);
     }
 
+    private void initSwipeRefreshLayout() {
+        mSwipeRefreshLayout = (SwipeRefreshLayout) mView.findViewById(R.id.swipe_refresh);
+        if (mSwipeRefreshLayout == null) {
+            return;
+        }
+
+        mSwipeRefreshLayout.setEnabled(true);
+        // Request sync contacts
+        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+                syncContacts(mFilter);
+            }
+        });
+        mSwipeRefreshLayout.setColorSchemeResources(
+                R.color.swipe_refresh_color1,
+                R.color.swipe_refresh_color2,
+                R.color.swipe_refresh_color3,
+                R.color.swipe_refresh_color4);
+        mSwipeRefreshLayout.setDistanceToTriggerSync(
+                (int) getResources().getDimension(R.dimen.pull_to_refresh_distance));
+    }
+
+    /**
+     * Request sync for the Google accounts (not include Google+ accounts) specified by the given
+     * filter.
+     */
+    private void syncContacts(ContactListFilter filter) {
+        if (filter == null) {
+            return;
+        }
+        final Bundle bundle = new Bundle();
+        bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
+        bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
+
+        final List<AccountWithDataSet> accounts = AccountTypeManager.getInstance(
+                getActivity()).getAccounts(/* contactsWritableOnly */ true);
+        final List<Account> syncableAccounts = filter.getSyncableAccounts(accounts);
+        if (syncableAccounts != null && syncableAccounts.size() > 0) {
+            for (Account account : syncableAccounts) {
+                 // We can prioritize Contacts sync if sync is not initialized yet.
+                if (!SyncUtil.isSyncStatusPendingOrActive(account)
+                        || SyncUtil.isUnsyncableGoogleAccount(account)) {
+                    ContentResolver.requestSync(account, ContactsContract.AUTHORITY, bundle);
+                }
+            }
+        }
+    }
+
     @Override
     protected void setSearchMode(boolean flag) {
         super.setSearchMode(flag);
@@ -275,4 +374,8 @@
             }
         }
     }
-}
\ No newline at end of file
+
+    public SwipeRefreshLayout getSwipeRefreshLayout() {
+        return mSwipeRefreshLayout;
+    }
+}
diff --git a/src/com/android/contacts/util/SyncUtil.java b/src/com/android/contacts/util/SyncUtil.java
new file mode 100644
index 0000000..cef2223
--- /dev/null
+++ b/src/com/android/contacts/util/SyncUtil.java
@@ -0,0 +1,52 @@
+/*
+ * 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.contacts.util;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.provider.ContactsContract;
+
+import com.android.contacts.common.model.account.GoogleAccountType;
+
+import java.util.List;
+
+/**
+ * Utilities related to sync.
+ */
+public final class SyncUtil {
+    private static final String TAG = "SyncUtil";
+
+    private SyncUtil() {
+    }
+
+    public static final boolean isSyncStatusPendingOrActive(Account account) {
+        if (account == null) {
+            return false;
+        }
+        return ContentResolver.isSyncPending(account, ContactsContract.AUTHORITY)
+                || ContentResolver.isSyncActive(account, ContactsContract.AUTHORITY);
+    }
+
+    /**
+     * Returns true if the given Google account is not syncable.
+     */
+    public static final boolean isUnsyncableGoogleAccount(Account account) {
+        if (account == null || !GoogleAccountType.ACCOUNT_TYPE.equals(account.type)) {
+            return false;
+        }
+        return ContentResolver.getIsSyncable(account, ContactsContract.AUTHORITY) <= 0;
+    }
+}
diff --git a/tests/res-common/drawable/android.jpg b/tests/res-common/drawable/android.jpg
new file mode 100644
index 0000000..95693b2
--- /dev/null
+++ b/tests/res-common/drawable/android.jpg
Binary files differ
diff --git a/tests/res-common/drawable/default_icon.png b/tests/res-common/drawable/default_icon.png
new file mode 100644
index 0000000..cea0eb3
--- /dev/null
+++ b/tests/res-common/drawable/default_icon.png
Binary files differ
diff --git a/tests/res-common/drawable/ic_contact_picture.png b/tests/res-common/drawable/ic_contact_picture.png
new file mode 100644
index 0000000..6876777
--- /dev/null
+++ b/tests/res-common/drawable/ic_contact_picture.png
Binary files differ
diff --git a/tests/res-common/drawable/phone_icon.png b/tests/res-common/drawable/phone_icon.png
new file mode 100644
index 0000000..4e613ec
--- /dev/null
+++ b/tests/res-common/drawable/phone_icon.png
Binary files differ
diff --git a/tests/res-common/values/donottranslate_strings.xml b/tests/res-common/values/donottranslate_strings.xml
new file mode 100644
index 0000000..6c8527f
--- /dev/null
+++ b/tests/res-common/values/donottranslate_strings.xml
@@ -0,0 +1,21 @@
+<!--
+  ~ Copyright (C) 2012 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="test_string">TEST STRING</string>
+
+    <string name="authenticator_basic_label">Test adapter</string>
+</resources>
diff --git a/tests/res-common/xml/contacts_fallback.xml b/tests/res-common/xml/contacts_fallback.xml
new file mode 100644
index 0000000..7034d5e
--- /dev/null
+++ b/tests/res-common/xml/contacts_fallback.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!--
+    contacts.xml to build "fallback account type" equivalent.
+    This is directly used in ExternalAccountTypeTest to test the parser.  There's no sync adapter
+    that actually defined with this definition.
+-->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema
+        >
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+        <DataKind kind="photo" maxOccurs="1" />
+        <DataKind kind="phone" >
+            <Type type="mobile" />
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="fax_work" />
+            <Type type="fax_home" />
+            <Type type="pager" />
+            <Type type="other" />
+            <Type type="custom"/>
+            <Type type="callback" />
+            <Type type="car" />
+            <Type type="company_main" />
+            <Type type="isdn" />
+            <Type type="main" />
+            <Type type="other_fax" />
+            <Type type="radio" />
+            <Type type="telex" />
+            <Type type="tty_tdd" />
+            <Type type="work_mobile"/>
+            <Type type="work_pager" />
+            <Type type="assistant" />
+            <Type type="mms" />
+        </DataKind>
+        <DataKind kind="email" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="mobile" />
+            <Type type="custom" />
+        </DataKind>
+        <DataKind kind="nickname" maxOccurs="1" />
+        <DataKind kind="im" >
+            <Type type="aim" />
+            <Type type="msn" />
+            <Type type="yahoo" />
+            <Type type="skype" />
+            <Type type="qq" />
+            <Type type="google_talk" />
+            <Type type="icq" />
+            <Type type="jabber" />
+            <Type type="custom" />
+        </DataKind>
+        <DataKind kind="postal" needsStructured="false" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="custom" />
+        </DataKind>
+        <DataKind kind="organization" maxOccurs="1" />
+        <DataKind kind="website" />
+        <DataKind kind="sip_address" maxOccurs="1" />
+        <DataKind kind="note" maxOccurs="1" />
+        <DataKind kind="group_membership" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/contacts_readonly.xml b/tests/res-common/xml/contacts_readonly.xml
new file mode 100644
index 0000000..df8d9c0
--- /dev/null
+++ b/tests/res-common/xml/contacts_readonly.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!--
+    Contacts.xml without EditSchema.
+-->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+        <ContactsDataKind
+                android:icon="@drawable/android"
+                android:mimeType="vnd.android.cursor.item/a.b.c"
+                android:summaryColumn="data1"
+                android:detailColumn="data2"
+                android:detailSocialSummary="true"
+                >
+        </ContactsDataKind>
+        <ContactsDataKind
+                android:icon="@drawable/default_icon"
+                android:mimeType="vnd.android.cursor.item/d.e.f"
+                android:summaryColumn="data3"
+                android:detailColumn="data4"
+                android:detailSocialSummary="false"
+                >
+        </ContactsDataKind>
+        <ContactsDataKind
+                android:icon="@drawable/android"
+                android:mimeType="vnd.android.cursor.item/xyz"
+                android:summaryColumn="data5"
+                android:detailColumn="data6"
+                android:detailSocialSummary="true"
+                >
+        </ContactsDataKind>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/iconset.xml b/tests/res-common/xml/iconset.xml
new file mode 100644
index 0000000..d1207e7
--- /dev/null
+++ b/tests/res-common/xml/iconset.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+
+<icon-set
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <icon-default android:icon="@drawable/default_icon" />
+    <icon android:mimeType="vnd.android.cursor.item/phone" 
+        android:icon="@drawable/phone_icon" />
+
+</icon-set>
\ No newline at end of file
diff --git a/tests/res-common/xml/missing_contacts_base.xml b/tests/res-common/xml/missing_contacts_base.xml
new file mode 100644
index 0000000..2c9aa6d
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_base.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Base definition, which is valid. -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name.xml b/tests/res-common/xml/missing_contacts_name.xml
new file mode 100644
index 0000000..1ac26be
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing "name" kind. -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr1.xml b/tests/res-common/xml/missing_contacts_name_attr1.xml
new file mode 100644
index 0000000..b7b0f19
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr1.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr2.xml b/tests/res-common/xml/missing_contacts_name_attr2.xml
new file mode 100644
index 0000000..41be9e8
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr2.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr3.xml b/tests/res-common/xml/missing_contacts_name_attr3.xml
new file mode 100644
index 0000000..e639a76
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr3.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr4.xml b/tests/res-common/xml/missing_contacts_name_attr4.xml
new file mode 100644
index 0000000..b42cdcd
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr4.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr5.xml b/tests/res-common/xml/missing_contacts_name_attr5.xml
new file mode 100644
index 0000000..3778d2f
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr5.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr6.xml b/tests/res-common/xml/missing_contacts_name_attr6.xml
new file mode 100644
index 0000000..b3a3411
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr6.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_name_attr7.xml b/tests/res-common/xml/missing_contacts_name_attr7.xml
new file mode 100644
index 0000000..c87e4f1
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_name_attr7.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/missing_contacts_photo.xml b/tests/res-common/xml/missing_contacts_photo.xml
new file mode 100644
index 0000000..87f4fc6
--- /dev/null
+++ b/tests/res-common/xml/missing_contacts_photo.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing "photo" kind. -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/test_basic_contacts.xml b/tests/res-common/xml/test_basic_contacts.xml
new file mode 100644
index 0000000..0047204
--- /dev/null
+++ b/tests/res-common/xml/test_basic_contacts.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema
+        >
+        <!--
+            Name:
+            - maxOccurs must be 1
+            - No types.
+
+            - Currently all the supportsXxx attributes must be true, but here's the plan for the
+              future:
+              (There's some hardcoded assumptions in the contact editor, which is one reason
+              for the above restriction)
+
+                - "Family name" and "Given name" must be supported.
+                    - All sync adapters must support structured name. "display name only" is not
+                      supported.
+                      -> Supporting this would require relatively large changes to
+                         the contact editor.
+
+                - Fields are decided from the attributes:
+                    StructuredName.DISPLAY_NAME         if supportsDisplayName == true
+                    StructuredName.PREFIX               if supportsPrefix == true
+                    StructuredName.FAMILY_NAME          (always)
+                    StructuredName.MIDDLE_NAME          if supportsPrefix == true
+                    StructuredName.GIVEN_NAME           (always)
+                    StructuredName.SUFFIX               if supportsSuffix == true
+                    StructuredName.PHONETIC_FAMILY_NAME if supportsPhoneticFamilyName == true
+                    StructuredName.PHONETIC_MIDDLE_NAME if supportsPhoneticMiddleName == true
+                    StructuredName.PHONETIC_GIVEN_NAME  if supportsPhoneticGivenName == true
+
+                - DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME  is always added.
+                - DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME is added
+                  if any of supportsPhoneticXxx == true
+        -->
+        <!-- Fallback/Google definition.  Supports all. -->
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+
+        <!-- Exchange definition.  No display-name, no phonetic-middle.
+        <DataKind kind="name"
+            supportsDisplayName="false"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="false"
+            supportsPhoneticGivenName ="true"
+            >
+        </DataKind>
+        -->
+
+        <!--
+            Photo:
+            - maxOccurs must be 1
+            - No types.
+        -->
+        <DataKind kind="photo" maxOccurs="1" />
+
+        <!--
+            Phone definition.
+            - "is secondary?" is inferred from type.
+        -->
+        <!-- Fallback, Google definition.  -->
+        <DataKind kind="phone" >
+            <!-- Note: Google type doesn't have obsolete ones -->
+            <Type type="mobile" />
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="fax_work" />
+            <Type type="fax_home" />
+            <Type type="pager" />
+            <Type type="other" />
+            <Type type="custom"/>
+            <Type type="callback" />
+            <Type type="car" />
+            <Type type="company_main" />
+            <Type type="isdn" />
+            <Type type="main" />
+            <Type type="other_fax" />
+            <Type type="radio" />
+            <Type type="telex" />
+            <Type type="tty_tdd" />
+            <Type type="work_mobile"/>
+            <Type type="work_pager" />
+            <Type type="assistant" />
+            <Type type="mms" />
+        </DataKind>
+
+        <!-- Exchange definition.
+        <DataKind kind="phone" >
+            <Type type="home" maxOccurs="2" />
+            <Type type="mobile" maxOccurs="1" />
+            <Type type="work" maxOccurs="2" />
+            <Type type="fax_work" maxOccurs="1" />
+            <Type type="fax_home" maxOccurs="1" />
+            <Type type="pager" maxOccurs="1" />
+            <Type type="car" maxOccurs="1" />
+            <Type type="company_main" maxOccurs="1" />
+            <Type type="mms" maxOccurs="1" />
+            <Type type="radio" maxOccurs="1" />
+            <Type type="assistant" maxOccurs="1" />
+        </DataKind>
+        -->
+
+        <!--
+            Email
+        -->
+        <!-- Fallback/Google definition.  -->
+        <DataKind kind="email" >
+            <!-- Note: Google type doesn't have obsolete ones -->
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="mobile" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!--
+            Exchange definition.
+            - Same definition as "fallback" except for maxOccurs=3
+        <DataKind kind="email" maxOccurs="3" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="mobile" />
+            <Type type="custom" />
+        </DataKind>
+        -->
+
+        <!--
+            Nickname
+            - maxOccurs must be 1
+            - No types.
+        -->
+        <DataKind kind="nickname" maxOccurs="1" />
+
+        <!--
+            Im:
+             - The TYPE column always stores Im.TYPE_OTHER (defaultValues is always set)
+             - The user-selected type is stored in Im.PROTOCOL
+        -->
+        <!-- Fallback, Google definition.  -->
+        <DataKind kind="im" >
+            <Type type="aim" />
+            <Type type="msn" />
+            <Type type="yahoo" />
+            <Type type="skype" />
+            <Type type="qq" />
+            <Type type="google_talk" />
+            <Type type="icq" />
+            <Type type="jabber" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!-- Exchange definition.
+        <DataKind kind="im" maxOccurs="3" >
+            <Type type="aim" />
+            <Type type="msn" />
+            <Type type="yahoo" />
+            <Type type="skype" />
+            <Type type="qq" />
+            <Type type="google_talk" />
+            <Type type="icq" />
+            <Type type="jabber" />
+            <Type type="custom" />
+        </DataKind>
+        -->
+
+        <!--
+            Postal address.
+        -->
+        <!-- Fallback/Google definition.  Not structured. -->
+        <DataKind kind="postal" needsStructured="false" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!-- Exchange definition.  Structured.
+        <DataKind kind="postal" needsStructured="true" >
+            <Type type="work" />
+            <Type type="home" />
+            <Type type="other" />
+        </DataKind>
+        -->
+
+        <!--
+            Organization:
+            - Fields are fixed: COMPANY, TITLE
+            - maxOccurs must be 1
+            - No types.
+        -->
+        <DataKind kind="organization" maxOccurs="1" />
+
+        <!--
+            Website:
+            - No types.
+        -->
+        <DataKind kind="website" />
+
+        <!--
+            Below kinds have nothing configurable.
+            - No types are supported.
+            - maxOccurs must be 1
+        -->
+        <DataKind kind="sip_address" maxOccurs="1" />
+        <DataKind kind="note" maxOccurs="1" />
+
+        <!--
+            Google/Exchange supports it, but fallback doesn't.
+        <DataKind kind="group_membership" maxOccurs="1" />
+        -->
+
+        <!--
+            Event
+        -->
+        <DataKind kind="event" dateWithTime="false">
+            <Type type="birthday" maxOccurs="1" yearOptional="true" />
+            <Type type="anniversary" />
+            <Type type="other" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!--
+            Exchange definition.  dateWithTime is needed only for Exchange.
+        <DataKind kind="event" dateWithTime="true">
+            <Type type="birthday" maxOccurs="1" />
+        </DataKind>
+        -->
+
+        <!--
+            Relationship
+        -->
+        <DataKind kind="relationship" >
+            <Type type="assistant" />
+            <Type type="brother" />
+            <Type type="child" />
+            <Type type="domestic_partner" />
+            <Type type="father" />
+            <Type type="friend" />
+            <Type type="manager" />
+            <Type type="mother" />
+            <Type type="parent" />
+            <Type type="partner" />
+            <Type type="referred_by" />
+            <Type type="relative" />
+            <Type type="sister" />
+            <Type type="spouse" />
+            <Type type="custom" />
+        </DataKind>
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res-common/xml/test_basic_syncadapter.xml b/tests/res-common/xml/test_basic_syncadapter.xml
new file mode 100644
index 0000000..fecc0eb
--- /dev/null
+++ b/tests/res-common/xml/test_basic_syncadapter.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
+    android:contentAuthority="com.android.contacts"
+    android:accountType="com.android.contacts.tests.authtest.basic"
+    android:supportsUploading="true"
+    android:userVisible="true"
+/>
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
index 8f43dbf..6c8527f 100644
--- a/tests/res/values/donottranslate_strings.xml
+++ b/tests/res/values/donottranslate_strings.xml
@@ -1,108 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
+<!--
+  ~ Copyright (C) 2012 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
+  -->
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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">
-
-    <string name="applicationLabel">Contacts Test</string>
-
-    <string-array name="allIntents">
-        <!-- List modes -->
-        <item>ACTION_PICK: contact</item>
-        <item>ACTION_PICK: contact (legacy)</item>
-        <item>ACTION_PICK: phone</item>
-        <item>ACTION_PICK: phone (legacy)</item>
-        <item>ACTION_PICK: postal</item>
-        <item>ACTION_PICK: postal (legacy)</item>
-        <item>ACTION_PICK: e-mail</item>
-        <item>ACTION_CREATE_SHORTCUT: contact</item>
-        <item>ACTION_CREATE_SHORTCUT: dial</item>
-        <item>ACTION_CREATE_SHORTCUT: message</item>
-        <item>ACTION_GET_CONTENT: contact</item>
-        <item>ACTION_GET_CONTENT: contact (legacy)</item>
-        <item>ACTION_GET_CONTENT: phone</item>
-        <item>ACTION_GET_CONTENT: phone (legacy)</item>
-        <item>ACTION_GET_CONTENT: postal</item>
-        <item>ACTION_GET_CONTENT: postal (legacy)</item>
-        <item>ACTION_INSERT_OR_EDIT</item>
-        <item>ACTION_INSERT_OR_EDIT_PHONE_NUMBER</item>
-        <item>ACTION_INSERT_OR_EDIT_EMAIL_ADDRESS</item>
-        <item>ACTION_INSERT_GROUP</item>
-        <item>ACTION_SEARCH (call button)</item>
-        <item>ACTION_SEARCH: contact</item>
-        <item>ACTION_SEARCH: email</item>
-        <item>ACTION_SEARCH: phone</item>
-        <item>ACTION_SEARCH: general</item>
-        <item>SEARCH_SUGGESTION_CLICKED: contact</item>
-
-        <!-- Edit -->
-        <item>EDIT (content uri with only id)</item>
-        <item>EDIT (lookup uri without id)</item>
-        <item>EDIT (lookup uri)</item>
-        <item>EDIT (called for raw contact)</item>
-        <item>EDIT (legacy style uri)</item>
-        <item>EDIT (create new contact)</item>
-        <item>EDIT (create new contact with data)</item>
-        <item>EDIT (create new contact for account)</item>
-        <item>EDIT (create new contact for account with data)</item>
-        <item>EDIT (create new raw contact)</item>
-        <item>EDIT (create new legacy)</item>
-        <item>EDIT (group)</item>
-
-        <!-- View -->
-        <item>VIEW (content uri without any id)</item>
-        <item>VIEW PERSON (content uri without any id)</item>
-        <item>VIEW (content uri with only id)</item>
-        <item>VIEW (lookup uri without id)</item>
-        <item>VIEW (lookup uri)</item>
-        <item>VIEW (called for raw contact)</item>
-        <item>VIEW (legacy style uri)</item>
-        <item>VIEW (group)</item>
-
-        <!-- Various ways to start Contacts -->
-        <item>QuickContactTestsActivity</item>
-
-        <!-- Intents accepted by PeopleActivity -->
-        <item>LIST_DEFAULT</item>
-        <item>LIST_CONTACTS</item>
-        <item>LIST_ALL_CONTACTS</item>
-        <item>LIST_CONTACTS_WITH_PHONES</item>
-        <item>LIST_STARRED</item>
-        <item>LIST_FREQUENT</item>
-        <item>LIST_STREQUENT</item>
-    </string-array>
-
-    <string name="pickContact">Pick contact</string>
-    <string name="quickContactIntent">Start with Intent</string>
-    <string name="fillCallLogTest">Fill call log test</string>
-    <string name="addToCallLogButton">Add</string>
-    <string name="numberOfCallLogEntries">Number of call log entries to add:</string>
-    <string name="useRandomNumbers">Use random numbers</string>
-    <string name="addedLogEntriesToast">Added %1$d call log entries.</string>
-    <string name="noLogEntriesToast">No entries in the call log yet.  Need at least one record for the template.  Or use random numbers.</string>
-    <string name="exitButton">Exit</string>
-
-    <string-array name="pinnedHeaderUseCases">
-        <item>One short section - no headers</item>
-        <item>Two short sections with headers</item>
-        <item>Five short sections with headers</item>
-    </string-array>
-
-    <string name="attribution_google_plus">Google+</string>
-    <string name="attribution_google_talk">Google Talk</string>
-    <string name="attribution_flicker">Flicker</string>
-    <string name="attribution_twitter">Twitter</string>
+<resources>
+    <string name="test_string">TEST STRING</string>
 
     <string name="authenticator_basic_label">Test adapter</string>
 </resources>
diff --git a/tests/res/values/donottranslate_strings_tmp.xml b/tests/res/values/donottranslate_strings_tmp.xml
new file mode 100644
index 0000000..8f43dbf
--- /dev/null
+++ b/tests/res/values/donottranslate_strings_tmp.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <string name="applicationLabel">Contacts Test</string>
+
+    <string-array name="allIntents">
+        <!-- List modes -->
+        <item>ACTION_PICK: contact</item>
+        <item>ACTION_PICK: contact (legacy)</item>
+        <item>ACTION_PICK: phone</item>
+        <item>ACTION_PICK: phone (legacy)</item>
+        <item>ACTION_PICK: postal</item>
+        <item>ACTION_PICK: postal (legacy)</item>
+        <item>ACTION_PICK: e-mail</item>
+        <item>ACTION_CREATE_SHORTCUT: contact</item>
+        <item>ACTION_CREATE_SHORTCUT: dial</item>
+        <item>ACTION_CREATE_SHORTCUT: message</item>
+        <item>ACTION_GET_CONTENT: contact</item>
+        <item>ACTION_GET_CONTENT: contact (legacy)</item>
+        <item>ACTION_GET_CONTENT: phone</item>
+        <item>ACTION_GET_CONTENT: phone (legacy)</item>
+        <item>ACTION_GET_CONTENT: postal</item>
+        <item>ACTION_GET_CONTENT: postal (legacy)</item>
+        <item>ACTION_INSERT_OR_EDIT</item>
+        <item>ACTION_INSERT_OR_EDIT_PHONE_NUMBER</item>
+        <item>ACTION_INSERT_OR_EDIT_EMAIL_ADDRESS</item>
+        <item>ACTION_INSERT_GROUP</item>
+        <item>ACTION_SEARCH (call button)</item>
+        <item>ACTION_SEARCH: contact</item>
+        <item>ACTION_SEARCH: email</item>
+        <item>ACTION_SEARCH: phone</item>
+        <item>ACTION_SEARCH: general</item>
+        <item>SEARCH_SUGGESTION_CLICKED: contact</item>
+
+        <!-- Edit -->
+        <item>EDIT (content uri with only id)</item>
+        <item>EDIT (lookup uri without id)</item>
+        <item>EDIT (lookup uri)</item>
+        <item>EDIT (called for raw contact)</item>
+        <item>EDIT (legacy style uri)</item>
+        <item>EDIT (create new contact)</item>
+        <item>EDIT (create new contact with data)</item>
+        <item>EDIT (create new contact for account)</item>
+        <item>EDIT (create new contact for account with data)</item>
+        <item>EDIT (create new raw contact)</item>
+        <item>EDIT (create new legacy)</item>
+        <item>EDIT (group)</item>
+
+        <!-- View -->
+        <item>VIEW (content uri without any id)</item>
+        <item>VIEW PERSON (content uri without any id)</item>
+        <item>VIEW (content uri with only id)</item>
+        <item>VIEW (lookup uri without id)</item>
+        <item>VIEW (lookup uri)</item>
+        <item>VIEW (called for raw contact)</item>
+        <item>VIEW (legacy style uri)</item>
+        <item>VIEW (group)</item>
+
+        <!-- Various ways to start Contacts -->
+        <item>QuickContactTestsActivity</item>
+
+        <!-- Intents accepted by PeopleActivity -->
+        <item>LIST_DEFAULT</item>
+        <item>LIST_CONTACTS</item>
+        <item>LIST_ALL_CONTACTS</item>
+        <item>LIST_CONTACTS_WITH_PHONES</item>
+        <item>LIST_STARRED</item>
+        <item>LIST_FREQUENT</item>
+        <item>LIST_STREQUENT</item>
+    </string-array>
+
+    <string name="pickContact">Pick contact</string>
+    <string name="quickContactIntent">Start with Intent</string>
+    <string name="fillCallLogTest">Fill call log test</string>
+    <string name="addToCallLogButton">Add</string>
+    <string name="numberOfCallLogEntries">Number of call log entries to add:</string>
+    <string name="useRandomNumbers">Use random numbers</string>
+    <string name="addedLogEntriesToast">Added %1$d call log entries.</string>
+    <string name="noLogEntriesToast">No entries in the call log yet.  Need at least one record for the template.  Or use random numbers.</string>
+    <string name="exitButton">Exit</string>
+
+    <string-array name="pinnedHeaderUseCases">
+        <item>One short section - no headers</item>
+        <item>Two short sections with headers</item>
+        <item>Five short sections with headers</item>
+    </string-array>
+
+    <string name="attribution_google_plus">Google+</string>
+    <string name="attribution_google_talk">Google Talk</string>
+    <string name="attribution_flicker">Flicker</string>
+    <string name="attribution_twitter">Twitter</string>
+
+    <string name="authenticator_basic_label">Test adapter</string>
+</resources>
diff --git a/tests/res/xml/contacts_fallback.xml b/tests/res/xml/contacts_fallback.xml
new file mode 100644
index 0000000..7034d5e
--- /dev/null
+++ b/tests/res/xml/contacts_fallback.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!--
+    contacts.xml to build "fallback account type" equivalent.
+    This is directly used in ExternalAccountTypeTest to test the parser.  There's no sync adapter
+    that actually defined with this definition.
+-->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema
+        >
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+        <DataKind kind="photo" maxOccurs="1" />
+        <DataKind kind="phone" >
+            <Type type="mobile" />
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="fax_work" />
+            <Type type="fax_home" />
+            <Type type="pager" />
+            <Type type="other" />
+            <Type type="custom"/>
+            <Type type="callback" />
+            <Type type="car" />
+            <Type type="company_main" />
+            <Type type="isdn" />
+            <Type type="main" />
+            <Type type="other_fax" />
+            <Type type="radio" />
+            <Type type="telex" />
+            <Type type="tty_tdd" />
+            <Type type="work_mobile"/>
+            <Type type="work_pager" />
+            <Type type="assistant" />
+            <Type type="mms" />
+        </DataKind>
+        <DataKind kind="email" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="mobile" />
+            <Type type="custom" />
+        </DataKind>
+        <DataKind kind="nickname" maxOccurs="1" />
+        <DataKind kind="im" >
+            <Type type="aim" />
+            <Type type="msn" />
+            <Type type="yahoo" />
+            <Type type="skype" />
+            <Type type="qq" />
+            <Type type="google_talk" />
+            <Type type="icq" />
+            <Type type="jabber" />
+            <Type type="custom" />
+        </DataKind>
+        <DataKind kind="postal" needsStructured="false" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="custom" />
+        </DataKind>
+        <DataKind kind="organization" maxOccurs="1" />
+        <DataKind kind="website" />
+        <DataKind kind="sip_address" maxOccurs="1" />
+        <DataKind kind="note" maxOccurs="1" />
+        <DataKind kind="group_membership" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/contacts_readonly.xml b/tests/res/xml/contacts_readonly.xml
new file mode 100644
index 0000000..df8d9c0
--- /dev/null
+++ b/tests/res/xml/contacts_readonly.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!--
+    Contacts.xml without EditSchema.
+-->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+        <ContactsDataKind
+                android:icon="@drawable/android"
+                android:mimeType="vnd.android.cursor.item/a.b.c"
+                android:summaryColumn="data1"
+                android:detailColumn="data2"
+                android:detailSocialSummary="true"
+                >
+        </ContactsDataKind>
+        <ContactsDataKind
+                android:icon="@drawable/default_icon"
+                android:mimeType="vnd.android.cursor.item/d.e.f"
+                android:summaryColumn="data3"
+                android:detailColumn="data4"
+                android:detailSocialSummary="false"
+                >
+        </ContactsDataKind>
+        <ContactsDataKind
+                android:icon="@drawable/android"
+                android:mimeType="vnd.android.cursor.item/xyz"
+                android:summaryColumn="data5"
+                android:detailColumn="data6"
+                android:detailSocialSummary="true"
+                >
+        </ContactsDataKind>
+</ContactsAccountType>
diff --git a/tests/res/xml/iconset.xml b/tests/res/xml/iconset.xml
index b9e419d..d1207e7 100644
--- a/tests/res/xml/iconset.xml
+++ b/tests/res/xml/iconset.xml
@@ -1,25 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2012 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
-  -->
+<!-- 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.
+-->
 
 <icon-set
     xmlns:android="http://schemas.android.com/apk/res/android">
 
     <icon-default android:icon="@drawable/default_icon" />
-    <icon android:mimeType="vnd.android.cursor.item/phone"
+    <icon android:mimeType="vnd.android.cursor.item/phone" 
         android:icon="@drawable/phone_icon" />
 
-</icon-set>
+</icon-set>
\ No newline at end of file
diff --git a/tests/res/xml/missing_contacts_base.xml b/tests/res/xml/missing_contacts_base.xml
new file mode 100644
index 0000000..2c9aa6d
--- /dev/null
+++ b/tests/res/xml/missing_contacts_base.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Base definition, which is valid. -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name.xml b/tests/res/xml/missing_contacts_name.xml
new file mode 100644
index 0000000..1ac26be
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing "name" kind. -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr1.xml b/tests/res/xml/missing_contacts_name_attr1.xml
new file mode 100644
index 0000000..b7b0f19
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr1.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr2.xml b/tests/res/xml/missing_contacts_name_attr2.xml
new file mode 100644
index 0000000..41be9e8
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr2.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr3.xml b/tests/res/xml/missing_contacts_name_attr3.xml
new file mode 100644
index 0000000..e639a76
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr3.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr4.xml b/tests/res/xml/missing_contacts_name_attr4.xml
new file mode 100644
index 0000000..b42cdcd
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr4.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr5.xml b/tests/res/xml/missing_contacts_name_attr5.xml
new file mode 100644
index 0000000..3778d2f
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr5.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr6.xml b/tests/res/xml/missing_contacts_name_attr6.xml
new file mode 100644
index 0000000..b3a3411
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr6.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticGivenName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr7.xml b/tests/res/xml/missing_contacts_name_attr7.xml
new file mode 100644
index 0000000..c87e4f1
--- /dev/null
+++ b/tests/res/xml/missing_contacts_name_attr7.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing one of the "support*" attributes". -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            />
+        <DataKind kind="photo" maxOccurs="1" />
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_photo.xml b/tests/res/xml/missing_contacts_photo.xml
new file mode 100644
index 0000000..87f4fc6
--- /dev/null
+++ b/tests/res/xml/missing_contacts_photo.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<!-- XML for must-have checks.  Missing "photo" kind. -->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema>
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/test_basic_contacts.xml b/tests/res/xml/test_basic_contacts.xml
new file mode 100644
index 0000000..0047204
--- /dev/null
+++ b/tests/res/xml/test_basic_contacts.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<ContactsAccountType
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    >
+    <EditSchema
+        >
+        <!--
+            Name:
+            - maxOccurs must be 1
+            - No types.
+
+            - Currently all the supportsXxx attributes must be true, but here's the plan for the
+              future:
+              (There's some hardcoded assumptions in the contact editor, which is one reason
+              for the above restriction)
+
+                - "Family name" and "Given name" must be supported.
+                    - All sync adapters must support structured name. "display name only" is not
+                      supported.
+                      -> Supporting this would require relatively large changes to
+                         the contact editor.
+
+                - Fields are decided from the attributes:
+                    StructuredName.DISPLAY_NAME         if supportsDisplayName == true
+                    StructuredName.PREFIX               if supportsPrefix == true
+                    StructuredName.FAMILY_NAME          (always)
+                    StructuredName.MIDDLE_NAME          if supportsPrefix == true
+                    StructuredName.GIVEN_NAME           (always)
+                    StructuredName.SUFFIX               if supportsSuffix == true
+                    StructuredName.PHONETIC_FAMILY_NAME if supportsPhoneticFamilyName == true
+                    StructuredName.PHONETIC_MIDDLE_NAME if supportsPhoneticMiddleName == true
+                    StructuredName.PHONETIC_GIVEN_NAME  if supportsPhoneticGivenName == true
+
+                - DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME  is always added.
+                - DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME is added
+                  if any of supportsPhoneticXxx == true
+        -->
+        <!-- Fallback/Google definition.  Supports all. -->
+        <DataKind kind="name"
+            maxOccurs="1"
+            supportsDisplayName="true"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="true"
+            supportsPhoneticGivenName="true"
+            >
+        </DataKind>
+
+        <!-- Exchange definition.  No display-name, no phonetic-middle.
+        <DataKind kind="name"
+            supportsDisplayName="false"
+            supportsPrefix="true"
+            supportsMiddleName="true"
+            supportsSuffix="true"
+            supportsPhoneticFamilyName="true"
+            supportsPhoneticMiddleName="false"
+            supportsPhoneticGivenName ="true"
+            >
+        </DataKind>
+        -->
+
+        <!--
+            Photo:
+            - maxOccurs must be 1
+            - No types.
+        -->
+        <DataKind kind="photo" maxOccurs="1" />
+
+        <!--
+            Phone definition.
+            - "is secondary?" is inferred from type.
+        -->
+        <!-- Fallback, Google definition.  -->
+        <DataKind kind="phone" >
+            <!-- Note: Google type doesn't have obsolete ones -->
+            <Type type="mobile" />
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="fax_work" />
+            <Type type="fax_home" />
+            <Type type="pager" />
+            <Type type="other" />
+            <Type type="custom"/>
+            <Type type="callback" />
+            <Type type="car" />
+            <Type type="company_main" />
+            <Type type="isdn" />
+            <Type type="main" />
+            <Type type="other_fax" />
+            <Type type="radio" />
+            <Type type="telex" />
+            <Type type="tty_tdd" />
+            <Type type="work_mobile"/>
+            <Type type="work_pager" />
+            <Type type="assistant" />
+            <Type type="mms" />
+        </DataKind>
+
+        <!-- Exchange definition.
+        <DataKind kind="phone" >
+            <Type type="home" maxOccurs="2" />
+            <Type type="mobile" maxOccurs="1" />
+            <Type type="work" maxOccurs="2" />
+            <Type type="fax_work" maxOccurs="1" />
+            <Type type="fax_home" maxOccurs="1" />
+            <Type type="pager" maxOccurs="1" />
+            <Type type="car" maxOccurs="1" />
+            <Type type="company_main" maxOccurs="1" />
+            <Type type="mms" maxOccurs="1" />
+            <Type type="radio" maxOccurs="1" />
+            <Type type="assistant" maxOccurs="1" />
+        </DataKind>
+        -->
+
+        <!--
+            Email
+        -->
+        <!-- Fallback/Google definition.  -->
+        <DataKind kind="email" >
+            <!-- Note: Google type doesn't have obsolete ones -->
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="mobile" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!--
+            Exchange definition.
+            - Same definition as "fallback" except for maxOccurs=3
+        <DataKind kind="email" maxOccurs="3" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="mobile" />
+            <Type type="custom" />
+        </DataKind>
+        -->
+
+        <!--
+            Nickname
+            - maxOccurs must be 1
+            - No types.
+        -->
+        <DataKind kind="nickname" maxOccurs="1" />
+
+        <!--
+            Im:
+             - The TYPE column always stores Im.TYPE_OTHER (defaultValues is always set)
+             - The user-selected type is stored in Im.PROTOCOL
+        -->
+        <!-- Fallback, Google definition.  -->
+        <DataKind kind="im" >
+            <Type type="aim" />
+            <Type type="msn" />
+            <Type type="yahoo" />
+            <Type type="skype" />
+            <Type type="qq" />
+            <Type type="google_talk" />
+            <Type type="icq" />
+            <Type type="jabber" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!-- Exchange definition.
+        <DataKind kind="im" maxOccurs="3" >
+            <Type type="aim" />
+            <Type type="msn" />
+            <Type type="yahoo" />
+            <Type type="skype" />
+            <Type type="qq" />
+            <Type type="google_talk" />
+            <Type type="icq" />
+            <Type type="jabber" />
+            <Type type="custom" />
+        </DataKind>
+        -->
+
+        <!--
+            Postal address.
+        -->
+        <!-- Fallback/Google definition.  Not structured. -->
+        <DataKind kind="postal" needsStructured="false" >
+            <Type type="home" />
+            <Type type="work" />
+            <Type type="other" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!-- Exchange definition.  Structured.
+        <DataKind kind="postal" needsStructured="true" >
+            <Type type="work" />
+            <Type type="home" />
+            <Type type="other" />
+        </DataKind>
+        -->
+
+        <!--
+            Organization:
+            - Fields are fixed: COMPANY, TITLE
+            - maxOccurs must be 1
+            - No types.
+        -->
+        <DataKind kind="organization" maxOccurs="1" />
+
+        <!--
+            Website:
+            - No types.
+        -->
+        <DataKind kind="website" />
+
+        <!--
+            Below kinds have nothing configurable.
+            - No types are supported.
+            - maxOccurs must be 1
+        -->
+        <DataKind kind="sip_address" maxOccurs="1" />
+        <DataKind kind="note" maxOccurs="1" />
+
+        <!--
+            Google/Exchange supports it, but fallback doesn't.
+        <DataKind kind="group_membership" maxOccurs="1" />
+        -->
+
+        <!--
+            Event
+        -->
+        <DataKind kind="event" dateWithTime="false">
+            <Type type="birthday" maxOccurs="1" yearOptional="true" />
+            <Type type="anniversary" />
+            <Type type="other" />
+            <Type type="custom" />
+        </DataKind>
+
+        <!--
+            Exchange definition.  dateWithTime is needed only for Exchange.
+        <DataKind kind="event" dateWithTime="true">
+            <Type type="birthday" maxOccurs="1" />
+        </DataKind>
+        -->
+
+        <!--
+            Relationship
+        -->
+        <DataKind kind="relationship" >
+            <Type type="assistant" />
+            <Type type="brother" />
+            <Type type="child" />
+            <Type type="domestic_partner" />
+            <Type type="father" />
+            <Type type="friend" />
+            <Type type="manager" />
+            <Type type="mother" />
+            <Type type="parent" />
+            <Type type="partner" />
+            <Type type="referred_by" />
+            <Type type="relative" />
+            <Type type="sister" />
+            <Type type="spouse" />
+            <Type type="custom" />
+        </DataKind>
+    </EditSchema>
+</ContactsAccountType>
diff --git a/tests/res/xml/test_basic_syncadapter.xml b/tests/res/xml/test_basic_syncadapter.xml
new file mode 100644
index 0000000..fecc0eb
--- /dev/null
+++ b/tests/res/xml/test_basic_syncadapter.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+
+<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
+    android:contentAuthority="com.android.contacts"
+    android:accountType="com.android.contacts.tests.authtest.basic"
+    android:supportsUploading="true"
+    android:userVisible="true"
+/>
diff --git a/tests/src/com/android/contacts/common/ContactsUtilsTests.java b/tests/src/com/android/contacts/common/ContactsUtilsTests.java
new file mode 100644
index 0000000..a209fb2
--- /dev/null
+++ b/tests/src/com/android/contacts/common/ContactsUtilsTests.java
@@ -0,0 +1,188 @@
+/*
+ * 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.contacts.common;
+
+import android.content.ContentValues;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Pair;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.model.dataitem.DataItem;
+import com.android.contacts.common.model.dataitem.EmailDataItem;
+import com.android.contacts.common.model.dataitem.ImDataItem;
+
+/**
+ * Tests for {@link ContactsUtils}.
+ */
+@SmallTest
+public class ContactsUtilsTests extends AndroidTestCase {
+
+    private static final String TEST_ADDRESS = "user@example.org";
+    private static final String TEST_PROTOCOL = "prot%col";
+
+    public void testIsGraphicNull() throws Exception {
+        assertFalse(ContactsUtils.isGraphic(null));
+    }
+
+    public void testIsGraphicEmpty() throws Exception {
+        assertFalse(ContactsUtils.isGraphic(""));
+    }
+
+    public void testIsGraphicSpaces() throws Exception {
+        assertFalse(ContactsUtils.isGraphic("  "));
+    }
+
+    public void testIsGraphicPunctuation() throws Exception {
+        assertTrue(ContactsUtils.isGraphic("."));
+    }
+
+    public void testAreObjectsEqual() throws Exception {
+        assertTrue("null:null", ContactsUtils.areObjectsEqual(null, null));
+        assertTrue("1:1", ContactsUtils.areObjectsEqual(1, 1));
+
+        assertFalse("null:1", ContactsUtils.areObjectsEqual(null, 1));
+        assertFalse("1:null", ContactsUtils.areObjectsEqual(1, null));
+        assertFalse("1:2", ContactsUtils.areObjectsEqual(1, 2));
+    }
+
+    public void testAreIntentActionEqual() throws Exception {
+        assertTrue("1", ContactsUtils.areIntentActionEqual(null, null));
+        assertTrue("1", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent("a")));
+
+        assertFalse("11", ContactsUtils.areIntentActionEqual(new Intent("a"), null));
+        assertFalse("12", ContactsUtils.areIntentActionEqual(null, new Intent("a")));
+
+        assertFalse("21", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent()));
+        assertFalse("22", ContactsUtils.areIntentActionEqual(new Intent(), new Intent("b")));
+        assertFalse("23", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent("b")));
+    }
+
+    public void testImIntentCustom() throws Exception {
+        // Custom IM types have encoded authority. We send the imto Intent here, because
+        // legacy third party apps might not accept xmpp yet
+        final ContentValues values = new ContentValues();
+        values.put(Im.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        values.put(Im.TYPE, Im.TYPE_HOME);
+        values.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM);
+        values.put(Im.CUSTOM_PROTOCOL, TEST_PROTOCOL);
+        values.put(Im.DATA, TEST_ADDRESS);
+        final ImDataItem im = (ImDataItem) DataItem.createFrom(values);
+
+        final Pair<Intent, Intent> intents = ContactsUtils.buildImIntent(getContext(), im);
+        final Intent imIntent = intents.first;
+
+        assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
+
+        final Uri data = imIntent.getData();
+        assertEquals("imto", data.getScheme());
+        assertEquals(TEST_PROTOCOL, data.getAuthority());
+        assertEquals(TEST_ADDRESS, data.getPathSegments().get(0));
+
+        assertNull(intents.second);
+    }
+
+    public void testImIntent() throws Exception {
+        // Test GTalk XMPP URI. No chat capabilities provided
+        final ContentValues values = new ContentValues();
+        values.put(Im.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        values.put(Im.TYPE, Im.TYPE_HOME);
+        values.put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
+        values.put(Im.DATA, TEST_ADDRESS);
+        final ImDataItem im = (ImDataItem) DataItem.createFrom(values);
+
+        final Pair<Intent, Intent> intents = ContactsUtils.buildImIntent(getContext(), im);
+        final Intent imIntent = intents.first;
+
+        assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?message", imIntent.getData().toString());
+
+        assertNull(intents.second);
+    }
+
+    public void testImIntentWithAudio() throws Exception {
+        // Test GTalk XMPP URI. Audio chat capabilities provided
+        final ContentValues values = new ContentValues();
+        values.put(Im.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        values.put(Im.TYPE, Im.TYPE_HOME);
+        values.put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
+        values.put(Im.DATA, TEST_ADDRESS);
+        values.put(Im.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO);
+        final ImDataItem im = (ImDataItem) DataItem.createFrom(values);
+
+        final Pair<Intent, Intent> intents = ContactsUtils.buildImIntent(getContext(), im);
+        final Intent imIntent = intents.first;
+
+        assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?message", imIntent.getData().toString());
+
+        final Intent secondaryIntent = intents.second;
+        assertEquals(Intent.ACTION_SENDTO, secondaryIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?call", secondaryIntent.getData().toString());
+    }
+
+    public void testImIntentWithVideo() throws Exception {
+        // Test GTalk XMPP URI. Video chat capabilities provided
+        final ContentValues values = new ContentValues();
+        values.put(Im.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        values.put(Im.TYPE, Im.TYPE_HOME);
+        values.put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
+        values.put(Im.DATA, TEST_ADDRESS);
+        values.put(Im.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO |
+                Im.CAPABILITY_HAS_VOICE);
+        final ImDataItem im = (ImDataItem) DataItem.createFrom(values);
+
+        final Pair<Intent, Intent> intents = ContactsUtils.buildImIntent(getContext(), im);
+        final Intent imIntent = intents.first;
+
+        assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?message", imIntent.getData().toString());
+
+        final Intent secondaryIntent = intents.second;
+        assertEquals(Intent.ACTION_SENDTO, secondaryIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?call", secondaryIntent.getData().toString());
+    }
+
+
+    public void testImEmailIntent() throws Exception {
+        // Email addresses are treated as Google Talk entries
+        // This test only tests the VIDEO+CAMERA case. The other cases have been addressed by the
+        // Im tests
+        final ContentValues values = new ContentValues();
+        values.put(Email.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        values.put(Email.TYPE, Email.TYPE_HOME);
+        values.put(Email.DATA, TEST_ADDRESS);
+        values.put(Email.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO |
+                Im.CAPABILITY_HAS_VOICE);
+        final ImDataItem im = ImDataItem.createFromEmail(
+                (EmailDataItem) DataItem.createFrom(values));
+
+        final Pair<Intent, Intent> intents = ContactsUtils.buildImIntent(getContext(), im);
+        final Intent imIntent = intents.first;
+
+        assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?message", imIntent.getData().toString());
+
+        final Intent secondaryIntent = intents.second;
+        assertEquals(Intent.ACTION_SENDTO, secondaryIntent.getAction());
+        assertEquals("xmpp:" + TEST_ADDRESS + "?call", secondaryIntent.getData().toString());
+    }
+}
diff --git a/tests/src/com/android/contacts/common/MoreContactUtilsTest.java b/tests/src/com/android/contacts/common/MoreContactUtilsTest.java
new file mode 100644
index 0000000..8d74455
--- /dev/null
+++ b/tests/src/com/android/contacts/common/MoreContactUtilsTest.java
@@ -0,0 +1,176 @@
+package com.android.contacts.common;
+
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for MoreContactsUtils.
+ */
+@SmallTest
+public class MoreContactUtilsTest extends TestCase {
+
+    public void testShouldCollapse() throws Exception {
+        assertCollapses("1", true, null, null, null, null);
+        assertCollapses("2", true, "a", "b", "a", "b");
+
+        assertCollapses("11", false, "a", null, null, null);
+        assertCollapses("12", false, null, "a", null, null);
+        assertCollapses("13", false, null, null, "a", null);
+        assertCollapses("14", false, null, null, null, "a");
+
+        assertCollapses("21", false, "a", "b", null, null);
+        assertCollapses("22", false, "a", "b", "a", null);
+        assertCollapses("23", false, "a", "b", null, "b");
+        assertCollapses("24", false, "a", "b", "a", "x");
+        assertCollapses("25", false, "a", "b", "x", "b");
+
+        assertCollapses("31", false, null, null, "a", "b");
+        assertCollapses("32", false, "a", null, "a", "b");
+        assertCollapses("33", false, null, "b", "a", "b");
+        assertCollapses("34", false, "a", "x", "a", "b");
+        assertCollapses("35", false, "x", "b", "a", "b");
+
+        assertCollapses("41", true, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE, null);
+        assertCollapses("42", true, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "1");
+
+        assertCollapses("51", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "2");
+        assertCollapses("52", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, null);
+        assertCollapses("53", false, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE, "2");
+
+        // Test phone numbers
+        assertCollapses("60", true, Phone.CONTENT_ITEM_TYPE, "1234567", Phone.CONTENT_ITEM_TYPE,
+                "1234567");
+        assertCollapses("61", false, Phone.CONTENT_ITEM_TYPE, "1234567", Phone.CONTENT_ITEM_TYPE,
+                "1234568");
+        assertCollapses("62", true, Phone.CONTENT_ITEM_TYPE, "1234567;0", Phone.CONTENT_ITEM_TYPE,
+                "1234567;0");
+        assertCollapses("63", false, Phone.CONTENT_ITEM_TYPE, "1234567;89321",
+                Phone.CONTENT_ITEM_TYPE, "1234567;89322");
+        assertCollapses("64", true, Phone.CONTENT_ITEM_TYPE, "1234567;89321",
+                Phone.CONTENT_ITEM_TYPE, "1234567;89321");
+        assertCollapses("65", false, Phone.CONTENT_ITEM_TYPE, "1234567;0111111111",
+                Phone.CONTENT_ITEM_TYPE, "1234567;");
+        assertCollapses("66", false, Phone.CONTENT_ITEM_TYPE, "12345675426;91970xxxxx",
+                Phone.CONTENT_ITEM_TYPE, "12345675426");
+        assertCollapses("67", false, Phone.CONTENT_ITEM_TYPE, "12345675426;23456xxxxx",
+                Phone.CONTENT_ITEM_TYPE, "12345675426;234567xxxx");
+        assertCollapses("68", true, Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567",
+                Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567");
+        assertCollapses("69", false, Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567",
+                Phone.CONTENT_ITEM_TYPE, "1234567;1234567");
+
+        // test some numbers with country and area code
+        assertCollapses("70", true, Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
+                Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678");
+        assertCollapses("71", true, Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
+                Phone.CONTENT_ITEM_TYPE, "+49 (89)12345678");
+        assertCollapses("72", true, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234",
+                Phone.CONTENT_ITEM_TYPE, "+49 (8092)1234");
+        assertCollapses("73", false, Phone.CONTENT_ITEM_TYPE, "0049 (8092) 1234",
+                Phone.CONTENT_ITEM_TYPE, "+49/80921234");
+        assertCollapses("74", false, Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
+                Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345679");
+
+        // test special handling of collapsing country code for NANP region only
+        // This is non symmetrical, because we prefer the number with the +1.
+        assertEquals("100", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "+1 (415) 555-1212", Phone.CONTENT_ITEM_TYPE, "(415) 555-1212"));
+        assertEquals("101", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "+14155551212", Phone.CONTENT_ITEM_TYPE, "4155551212"));
+        assertEquals("102", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "(415) 555-1212", Phone.CONTENT_ITEM_TYPE, "+1 (415) 555-1212"));
+        assertEquals("103", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "4155551212", Phone.CONTENT_ITEM_TYPE, "+14155551212"));
+        // Require explicit +1 country code declaration to collapse
+        assertEquals("104", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "1-415-555-1212", Phone.CONTENT_ITEM_TYPE, "415-555-1212"));
+        assertEquals("105", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "14155551212", Phone.CONTENT_ITEM_TYPE, "4155551212"));
+        assertEquals("106", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "+1 (415) 555-1212", Phone.CONTENT_ITEM_TYPE, " 1 (415) 555-1212"));
+        assertEquals("107", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "+14155551212", Phone.CONTENT_ITEM_TYPE, " 14155551212"));
+        assertEquals("108", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "1 (415) 555-1212", Phone.CONTENT_ITEM_TYPE, "+1 (415) 555-1212"));
+        assertEquals("109", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "14155551212", Phone.CONTENT_ITEM_TYPE, "+14155551212"));
+
+        // test some numbers with wait symbol and area code
+        assertCollapses("200", true, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321",
+                Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321");
+        assertCollapses("201", false, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321",
+                Phone.CONTENT_ITEM_TYPE, "+49/80921235;89321");
+        assertCollapses("202", false, Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89322",
+                Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321");
+        assertCollapses("203", true, Phone.CONTENT_ITEM_TYPE, "1234567;+49 (8092) 1234",
+                Phone.CONTENT_ITEM_TYPE, "1234567;+49/80921234");
+
+        assertCollapses("300", true, Phone.CONTENT_ITEM_TYPE, "", Phone.CONTENT_ITEM_TYPE, "");
+
+        assertCollapses("301", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "");
+
+        assertCollapses("302", false, Phone.CONTENT_ITEM_TYPE, "", Phone.CONTENT_ITEM_TYPE, "1");
+
+        assertCollapses("303", true, Phone.CONTENT_ITEM_TYPE, "---", Phone.CONTENT_ITEM_TYPE, "---");
+
+        assertCollapses("304", false, Phone.CONTENT_ITEM_TYPE, "1-/().", Phone.CONTENT_ITEM_TYPE,
+                "--$%1");
+
+        // Test numbers using keypad letters. This is non-symmetrical, because we prefer
+        // the version with letters.
+        assertEquals("400", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "abcdefghijklmnopqrstuvwxyz", Phone.CONTENT_ITEM_TYPE,
+                "22233344455566677778889999"));
+        assertEquals("401", false, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "22233344455566677778889999", Phone.CONTENT_ITEM_TYPE,
+                "abcdefghijklmnopqrstuvwxyz"));
+
+        assertCollapses("402", false, Phone.CONTENT_ITEM_TYPE, "1;2", Phone.CONTENT_ITEM_TYPE,
+                "12");
+
+        assertCollapses("403", false, Phone.CONTENT_ITEM_TYPE, "1,2", Phone.CONTENT_ITEM_TYPE,
+                "12");
+    }
+
+    public void testShouldCollapse_collapsesSameNumberWithDifferentFormats() {
+        assertEquals("1", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "555-1212", Phone.CONTENT_ITEM_TYPE, "5551212"));
+        assertEquals("1", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "415-555-1212", Phone.CONTENT_ITEM_TYPE, "(415) 555-1212"));
+        assertEquals("2", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "4155551212", Phone.CONTENT_ITEM_TYPE, "(415) 555-1212"));
+        assertEquals("3", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "1-415-555-1212", Phone.CONTENT_ITEM_TYPE, "1 (415) 555-1212"));
+        assertEquals("4", true, MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE,
+                "14155551212", Phone.CONTENT_ITEM_TYPE, "1 (415) 555-1212"));
+    }
+
+    private void assertCollapses(String message, boolean expected, CharSequence mimetype1,
+            CharSequence data1, CharSequence mimetype2, CharSequence data2) {
+        assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype1, data1, mimetype2,
+                data2));
+        assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype2, data2, mimetype1,
+                data1));
+
+        // If data1 and data2 are the same instance, make sure the same test passes with different
+        // instances.
+        if (data1 == data2 && data1 != null) {
+            // Create a different instance
+            final CharSequence data2_newref = new StringBuilder(data2).append("").toString();
+
+            if (data1 == data2_newref) {
+                // In some cases no matter what we do the runtime reuses the same instance, so
+                // we can't do the "different instance" test.
+                return;
+            }
+
+            // we have two different instances, now make sure we get the same result as before
+            assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype1, data1,
+                    mimetype2, data2_newref));
+            assertEquals(message, expected, MoreContactUtils.shouldCollapse(mimetype2, data2_newref,
+                    mimetype1, data1));
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/RawContactDeltaListTests.java b/tests/src/com/android/contacts/common/RawContactDeltaListTests.java
new file mode 100644
index 0000000..77acb98
--- /dev/null
+++ b/tests/src/com/android/contacts/common/RawContactDeltaListTests.java
@@ -0,0 +1,608 @@
+/*
+ * 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.contacts.common;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentValues;
+import android.content.Context;
+import android.net.Uri;
+import android.provider.BaseColumns;
+import android.provider.ContactsContract.AggregationExceptions;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.contacts.common.RawContactModifierTests.MockContactsSource;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.CPOWrapper;
+import com.android.contacts.common.model.RawContact;
+import com.android.contacts.common.model.RawContactDelta;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.RawContactDeltaList;
+import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.common.model.account.AccountType;
+import com.google.common.collect.Lists;
+
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+
+/**
+ * Tests for {@link RawContactDeltaList} which focus on "diff" operations that should
+ * create {@link AggregationExceptions} in certain cases.
+ */
+@LargeTest
+public class RawContactDeltaListTests extends AndroidTestCase {
+    public static final String TAG = RawContactDeltaListTests.class.getSimpleName();
+
+    // From android.content.ContentProviderOperation
+    public static final int TYPE_INSERT = 1;
+    public static final int TYPE_UPDATE = 2;
+    public static final int TYPE_DELETE = 3;
+    public static final int TYPE_ASSERT = 4;
+
+    private static final long CONTACT_FIRST = 1;
+    private static final long CONTACT_SECOND = 2;
+
+    public static final long CONTACT_BOB = 10;
+    public static final long CONTACT_MARY = 11;
+
+    public static final long PHONE_RED = 20;
+    public static final long PHONE_GREEN = 21;
+    public static final long PHONE_BLUE = 22;
+
+    public static final long EMAIL_YELLOW = 25;
+
+    public static final long VER_FIRST = 100;
+    public static final long VER_SECOND = 200;
+
+    public static final String TEST_PHONE = "555-1212";
+    public static final String TEST_ACCOUNT = "org.example.test";
+
+    public RawContactDeltaListTests() {
+        super();
+    }
+
+    @Override
+    public void setUp() {
+        mContext = getContext();
+    }
+
+    /**
+     * Build a {@link AccountType} that has various odd constraints for
+     * testing purposes.
+     */
+    protected AccountType getAccountType() {
+        return new MockContactsSource();
+    }
+
+    static ContentValues getValues(ContentProviderOperation operation)
+            throws NoSuchFieldException, IllegalAccessException {
+        final Field field = ContentProviderOperation.class.getDeclaredField("mValues");
+        field.setAccessible(true);
+        return (ContentValues) field.get(operation);
+    }
+
+    static RawContactDelta getUpdate(Context context, long rawContactId) {
+        final RawContact before = RawContactDeltaTests.getRawContact(context, rawContactId,
+                RawContactDeltaTests.TEST_PHONE_ID);
+        return RawContactDelta.fromBefore(before);
+    }
+
+    static RawContactDelta getInsert() {
+        final ContentValues after = new ContentValues();
+        after.put(RawContacts.ACCOUNT_NAME, RawContactDeltaTests.TEST_ACCOUNT_NAME);
+        after.put(RawContacts.SEND_TO_VOICEMAIL, 1);
+
+        final ValuesDelta values = ValuesDelta.fromAfter(after);
+        return new RawContactDelta(values);
+    }
+
+    static RawContactDeltaList buildSet(RawContactDelta... deltas) {
+        final RawContactDeltaList set = new RawContactDeltaList();
+        Collections.addAll(set, deltas);
+        return set;
+    }
+
+    static RawContactDelta buildBeforeEntity(Context context, long rawContactId, long version,
+            ContentValues... entries) {
+        // Build an existing contact read from database
+        final ContentValues contact = new ContentValues();
+        contact.put(RawContacts.VERSION, version);
+        contact.put(RawContacts._ID, rawContactId);
+        final RawContact before = new RawContact(contact);
+        for (ContentValues entry : entries) {
+            before.addDataItemValues(entry);
+        }
+        return RawContactDelta.fromBefore(before);
+    }
+
+    static RawContactDelta buildAfterEntity(ContentValues... entries) {
+        // Build an existing contact read from database
+        final ContentValues contact = new ContentValues();
+        contact.put(RawContacts.ACCOUNT_TYPE, TEST_ACCOUNT);
+        final RawContactDelta after = new RawContactDelta(ValuesDelta.fromAfter(contact));
+        for (ContentValues entry : entries) {
+            after.addEntry(ValuesDelta.fromAfter(entry));
+        }
+        return after;
+    }
+
+    static ContentValues buildPhone(long phoneId) {
+        return buildPhone(phoneId, Long.toString(phoneId));
+    }
+
+    static ContentValues buildPhone(long phoneId, String value) {
+        final ContentValues values = new ContentValues();
+        values.put(Data._ID, phoneId);
+        values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        values.put(Phone.NUMBER, value);
+        values.put(Phone.TYPE, Phone.TYPE_HOME);
+        return values;
+    }
+
+    static ContentValues buildEmail(long emailId) {
+        final ContentValues values = new ContentValues();
+        values.put(Data._ID, emailId);
+        values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        values.put(Email.DATA, Long.toString(emailId));
+        values.put(Email.TYPE, Email.TYPE_HOME);
+        return values;
+    }
+
+    static void insertPhone(RawContactDeltaList set, long rawContactId, ContentValues values) {
+        final RawContactDelta match = set.getByRawContactId(rawContactId);
+        match.addEntry(ValuesDelta.fromAfter(values));
+    }
+
+    static ValuesDelta getPhone(RawContactDeltaList set, long rawContactId, long dataId) {
+        final RawContactDelta match = set.getByRawContactId(rawContactId);
+        return match.getEntry(dataId);
+    }
+
+    static void assertDiffPattern(RawContactDelta delta, CPOWrapper... pattern) {
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        delta.buildAssertWrapper(diff);
+        delta.buildDiffWrapper(diff);
+        assertDiffPattern(diff, pattern);
+    }
+
+    static void assertDiffPattern(RawContactDeltaList set, CPOWrapper... pattern) {
+        assertDiffPattern(set.buildDiffWrapper(), pattern);
+    }
+
+    static void assertDiffPattern(ArrayList<CPOWrapper> diff, CPOWrapper... pattern) {
+        assertEquals("Unexpected operations", pattern.length, diff.size());
+        for (int i = 0; i < pattern.length; i++) {
+            final CPOWrapper expected = pattern[i];
+            final CPOWrapper found = diff.get(i);
+
+            assertEquals("Unexpected uri",
+                    expected.getOperation().getUri(), found.getOperation().getUri());
+
+            final String expectedType = getTypeString(expected);
+            final String foundType = getTypeString(found);
+            assertEquals("Unexpected type", expectedType, foundType);
+
+            if (CompatUtils.isDeleteCompat(expected)) continue;
+
+            try {
+                final ContentValues expectedValues = getValues(expected.getOperation());
+                final ContentValues foundValues = getValues(found.getOperation());
+
+                expectedValues.remove(BaseColumns._ID);
+                foundValues.remove(BaseColumns._ID);
+
+                assertEquals("Unexpected values", expectedValues, foundValues);
+            } catch (NoSuchFieldException e) {
+                fail(e.toString());
+            } catch (IllegalAccessException e) {
+                fail(e.toString());
+            }
+        }
+    }
+
+    static String getTypeString(CPOWrapper cpoWrapper) {
+        if (CompatUtils.isAssertQueryCompat(cpoWrapper)) {
+            return "TYPE_ASSERT";
+        } else if (CompatUtils.isInsertCompat(cpoWrapper)) {
+            return "TYPE_INSERT";
+        } else if (CompatUtils.isUpdateCompat(cpoWrapper)) {
+            return "TYPE_UPDATE";
+        } else if (CompatUtils.isDeleteCompat(cpoWrapper)) {
+            return "TYPE_DELETE";
+        }
+        return "TYPE_UNKNOWN";
+    }
+
+    static CPOWrapper buildAssertVersion(long version) {
+        final ContentValues values = new ContentValues();
+        values.put(RawContacts.VERSION, version);
+        return buildCPOWrapper(RawContacts.CONTENT_URI, TYPE_ASSERT, values);
+    }
+
+    static CPOWrapper buildAggregationModeUpdate(int mode) {
+        final ContentValues values = new ContentValues();
+        values.put(RawContacts.AGGREGATION_MODE, mode);
+        return buildCPOWrapper(RawContacts.CONTENT_URI, TYPE_UPDATE, values);
+    }
+
+    static CPOWrapper buildUpdateAggregationSuspended() {
+        return buildAggregationModeUpdate(RawContacts.AGGREGATION_MODE_SUSPENDED);
+    }
+
+    static CPOWrapper buildUpdateAggregationDefault() {
+        return buildAggregationModeUpdate(RawContacts.AGGREGATION_MODE_DEFAULT);
+    }
+
+    static CPOWrapper buildUpdateAggregationKeepTogether(long rawContactId) {
+        final ContentValues values = new ContentValues();
+        values.put(AggregationExceptions.RAW_CONTACT_ID1, rawContactId);
+        values.put(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER);
+        return buildCPOWrapper(AggregationExceptions.CONTENT_URI, TYPE_UPDATE, values);
+    }
+
+    static ContentValues buildDataInsert(ValuesDelta values, long rawContactId) {
+        final ContentValues insertValues = values.getCompleteValues();
+        insertValues.put(Data.RAW_CONTACT_ID, rawContactId);
+        return insertValues;
+    }
+
+    static CPOWrapper buildDelete(Uri uri) {
+        return buildCPOWrapper(uri, TYPE_DELETE, (ContentValues) null);
+    }
+
+    static ContentProviderOperation buildOper(Uri uri, int type, ValuesDelta values) {
+        return buildOper(uri, type, values.getCompleteValues());
+    }
+
+    static ContentProviderOperation buildOper(Uri uri, int type, ContentValues values) {
+        switch (type) {
+            case TYPE_ASSERT:
+                return ContentProviderOperation.newAssertQuery(uri).withValues(values).build();
+            case TYPE_INSERT:
+                return ContentProviderOperation.newInsert(uri).withValues(values).build();
+            case TYPE_UPDATE:
+                return ContentProviderOperation.newUpdate(uri).withValues(values).build();
+            case TYPE_DELETE:
+                return ContentProviderOperation.newDelete(uri).build();
+        }
+        return null;
+    }
+
+    static CPOWrapper buildCPOWrapper(Uri uri, int type, ContentValues values) {
+        if (type == TYPE_ASSERT || type == TYPE_INSERT || type == TYPE_UPDATE
+                || type == TYPE_DELETE) {
+            return new CPOWrapper(buildOper(uri, type, values), type);
+        }
+        return null;
+    }
+
+    static Long getVersion(RawContactDeltaList set, Long rawContactId) {
+        return set.getByRawContactId(rawContactId).getValues().getAsLong(RawContacts.VERSION);
+    }
+
+    /**
+     * Count number of {@link AggregationExceptions} updates contained in the
+     * given list of {@link CPOWrapper}.
+     */
+    static int countExceptionUpdates(ArrayList<CPOWrapper> diff) {
+        int updateCount = 0;
+        for (CPOWrapper cpoWrapper : diff) {
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            if (AggregationExceptions.CONTENT_URI.equals(oper.getUri())
+                    && CompatUtils.isUpdateCompat(cpoWrapper)) {
+                updateCount++;
+            }
+        }
+        return updateCount;
+    }
+
+    public void testInsert() {
+        final RawContactDelta insert = getInsert();
+        final RawContactDeltaList set = buildSet(insert);
+
+        // Inserting single shouldn't create rules
+        final ArrayList<CPOWrapper> diff = set.buildDiffWrapper();
+        final int exceptionCount = countExceptionUpdates(diff);
+        assertEquals("Unexpected exception updates", 0, exceptionCount);
+    }
+
+    public void testUpdateUpdate() {
+        final RawContactDelta updateFirst = getUpdate(mContext, CONTACT_FIRST);
+        final RawContactDelta updateSecond = getUpdate(mContext, CONTACT_SECOND);
+        final RawContactDeltaList set = buildSet(updateFirst, updateSecond);
+
+        // Updating two existing shouldn't create rules
+        final ArrayList<CPOWrapper> diff = set.buildDiffWrapper();
+        final int exceptionCount = countExceptionUpdates(diff);
+        assertEquals("Unexpected exception updates", 0, exceptionCount);
+    }
+
+    public void testUpdateInsert() {
+        final RawContactDelta update = getUpdate(mContext, CONTACT_FIRST);
+        final RawContactDelta insert = getInsert();
+        final RawContactDeltaList set = buildSet(update, insert);
+
+        // New insert should only create one rule
+        final ArrayList<CPOWrapper> diff = set.buildDiffWrapper();
+        final int exceptionCount = countExceptionUpdates(diff);
+        assertEquals("Unexpected exception updates", 1, exceptionCount);
+    }
+
+    public void testInsertUpdateInsert() {
+        final RawContactDelta insertFirst = getInsert();
+        final RawContactDelta update = getUpdate(mContext, CONTACT_FIRST);
+        final RawContactDelta insertSecond = getInsert();
+        final RawContactDeltaList set = buildSet(insertFirst, update, insertSecond);
+
+        // Two inserts should create two rules to bind against single existing
+        final ArrayList<CPOWrapper> diff = set.buildDiffWrapper();
+        final int exceptionCount = countExceptionUpdates(diff);
+        assertEquals("Unexpected exception updates", 2, exceptionCount);
+    }
+
+    public void testInsertInsertInsert() {
+        final RawContactDelta insertFirst = getInsert();
+        final RawContactDelta insertSecond = getInsert();
+        final RawContactDelta insertThird = getInsert();
+        final RawContactDeltaList set = buildSet(insertFirst, insertSecond, insertThird);
+
+        // Three new inserts should create only two binding rules
+        final ArrayList<CPOWrapper> diff = set.buildDiffWrapper();
+        final int exceptionCount = countExceptionUpdates(diff);
+        assertEquals("Unexpected exception updates", 2, exceptionCount);
+    }
+
+    public void testMergeDataRemoteInsert() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_RED), buildPhone(PHONE_GREEN)));
+
+        // Merge in second version, verify they match
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertEquals("Unexpected change when merging", second, merged);
+    }
+
+    public void testMergeDataLocalUpdateRemoteInsert() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_RED), buildPhone(PHONE_GREEN)));
+
+        // Change the local number to trigger update
+        final ValuesDelta phone = getPhone(first, CONTACT_BOB, PHONE_RED);
+        phone.put(Phone.NUMBER, TEST_PHONE);
+
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_UPDATE, phone.getAfter()),
+                buildUpdateAggregationDefault());
+
+        // Merge in the second version, verify diff matches
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged,
+                buildAssertVersion(VER_SECOND),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_UPDATE, phone.getAfter()),
+                buildUpdateAggregationDefault());
+    }
+
+    public void testMergeDataLocalUpdateRemoteDelete() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_GREEN)));
+
+        // Change the local number to trigger update
+        final ValuesDelta phone = getPhone(first, CONTACT_BOB, PHONE_RED);
+        phone.put(Phone.NUMBER, TEST_PHONE);
+
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_UPDATE, phone.getAfter()),
+                buildUpdateAggregationDefault());
+
+        // Merge in the second version, verify that our update changed to
+        // insert, since RED was deleted on remote side
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged,
+                buildAssertVersion(VER_SECOND),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, buildDataInsert(phone, CONTACT_BOB)),
+                buildUpdateAggregationDefault());
+    }
+
+    public void testMergeDataLocalDeleteRemoteUpdate() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_RED, TEST_PHONE)));
+
+        // Delete phone locally
+        final ValuesDelta phone = getPhone(first, CONTACT_BOB, PHONE_RED);
+        phone.markDeleted();
+
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildUpdateAggregationSuspended(),
+                buildDelete(Data.CONTENT_URI),
+                buildUpdateAggregationDefault());
+
+        // Merge in the second version, verify that our delete remains
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged,
+                buildAssertVersion(VER_SECOND),
+                buildUpdateAggregationSuspended(),
+                buildDelete(Data.CONTENT_URI),
+                buildUpdateAggregationDefault());
+    }
+
+    public void testMergeDataLocalInsertRemoteInsert() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_RED), buildPhone(PHONE_GREEN)));
+
+        // Insert new phone locally
+        final ValuesDelta bluePhone = ValuesDelta.fromAfter(buildPhone(PHONE_BLUE));
+        first.getByRawContactId(CONTACT_BOB).addEntry(bluePhone);
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, buildDataInsert(bluePhone, CONTACT_BOB)),
+                buildUpdateAggregationDefault());
+
+        // Merge in the second version, verify that our insert remains
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged,
+                buildAssertVersion(VER_SECOND),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, buildDataInsert(bluePhone, CONTACT_BOB)),
+                buildUpdateAggregationDefault());
+    }
+
+    public void testMergeRawContactLocalInsertRemoteInsert() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_RED)), buildBeforeEntity(mContext, CONTACT_MARY,
+                        VER_SECOND, buildPhone(PHONE_RED)));
+
+        // Add new contact locally, should remain insert
+        final ContentValues joePhoneInsert = buildPhone(PHONE_BLUE);
+        final RawContactDelta joeContact = buildAfterEntity(joePhoneInsert);
+        final ContentValues joeContactInsert = joeContact.getValues().getCompleteValues();
+        joeContactInsert.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_SUSPENDED);
+        first.add(joeContact);
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildCPOWrapper(RawContacts.CONTENT_URI, TYPE_INSERT, joeContactInsert),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, joePhoneInsert),
+                buildAggregationModeUpdate(RawContacts.AGGREGATION_MODE_DEFAULT),
+                buildUpdateAggregationKeepTogether(CONTACT_BOB));
+
+        // Merge in the second version, verify that our insert remains
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged,
+                buildAssertVersion(VER_SECOND),
+                buildAssertVersion(VER_SECOND),
+                buildCPOWrapper(RawContacts.CONTENT_URI, TYPE_INSERT, joeContactInsert),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, joePhoneInsert),
+                buildAggregationModeUpdate(RawContacts.AGGREGATION_MODE_DEFAULT),
+                buildUpdateAggregationKeepTogether(CONTACT_BOB));
+    }
+
+    public void testMergeRawContactLocalDeleteRemoteDelete() {
+        final RawContactDeltaList first = buildSet(
+                buildBeforeEntity(mContext, CONTACT_BOB, VER_FIRST, buildPhone(PHONE_RED)),
+                buildBeforeEntity(mContext, CONTACT_MARY, VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(
+                buildBeforeEntity(mContext, CONTACT_BOB, VER_SECOND, buildPhone(PHONE_RED)));
+
+        // Remove contact locally
+        first.getByRawContactId(CONTACT_MARY).markDeleted();
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildAssertVersion(VER_FIRST),
+                buildDelete(RawContacts.CONTENT_URI));
+
+        // Merge in the second version, verify that our delete isn't needed
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged);
+    }
+
+    public void testMergeRawContactLocalUpdateRemoteDelete() {
+        final RawContactDeltaList first = buildSet(
+                buildBeforeEntity(mContext, CONTACT_BOB, VER_FIRST, buildPhone(PHONE_RED)),
+                buildBeforeEntity(mContext, CONTACT_MARY, VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(
+                buildBeforeEntity(mContext, CONTACT_BOB, VER_SECOND, buildPhone(PHONE_RED)));
+
+        // Perform local update
+        final ValuesDelta phone = getPhone(first, CONTACT_MARY, PHONE_RED);
+        phone.put(Phone.NUMBER, TEST_PHONE);
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildAssertVersion(VER_FIRST),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_UPDATE, phone.getAfter()),
+                buildUpdateAggregationDefault());
+
+        final ContentValues phoneInsert = phone.getCompleteValues();
+        final ContentValues contactInsert = first.getByRawContactId(CONTACT_MARY).getValues()
+                .getCompleteValues();
+        contactInsert.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_SUSPENDED);
+
+        // Merge and verify that update turned into insert
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged,
+                buildAssertVersion(VER_SECOND),
+                buildCPOWrapper(RawContacts.CONTENT_URI, TYPE_INSERT, contactInsert),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, phoneInsert),
+                buildAggregationModeUpdate(RawContacts.AGGREGATION_MODE_DEFAULT),
+                buildUpdateAggregationKeepTogether(CONTACT_BOB));
+    }
+
+    public void testMergeUsesNewVersion() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildPhone(PHONE_RED)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildPhone(PHONE_RED)));
+
+        assertEquals((Long)VER_FIRST, getVersion(first, CONTACT_BOB));
+        assertEquals((Long)VER_SECOND, getVersion(second, CONTACT_BOB));
+
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertEquals((Long)VER_SECOND, getVersion(merged, CONTACT_BOB));
+    }
+
+    public void testMergeAfterEnsureAndTrim() {
+        final RawContactDeltaList first = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_FIRST, buildEmail(EMAIL_YELLOW)));
+        final RawContactDeltaList second = buildSet(buildBeforeEntity(mContext, CONTACT_BOB,
+                VER_SECOND, buildEmail(EMAIL_YELLOW)));
+
+        // Ensure we have at least one phone
+        final AccountType source = getAccountType();
+        final RawContactDelta bobContact = first.getByRawContactId(CONTACT_BOB);
+        RawContactModifier.ensureKindExists(bobContact, source, Phone.CONTENT_ITEM_TYPE);
+        final ValuesDelta bobPhone = bobContact.getSuperPrimaryEntry(Phone.CONTENT_ITEM_TYPE, true);
+
+        // Make sure the update would insert a row
+        assertDiffPattern(first,
+                buildAssertVersion(VER_FIRST),
+                buildUpdateAggregationSuspended(),
+                buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT, buildDataInsert(bobPhone, CONTACT_BOB)),
+                buildUpdateAggregationDefault());
+
+        // Trim values and ensure that we don't insert things
+        RawContactModifier.trimEmpty(bobContact, source);
+        assertDiffPattern(first);
+
+        // Now re-parent the change, which should remain no-op
+        final RawContactDeltaList merged = RawContactDeltaList.mergeAfter(second, first);
+        assertDiffPattern(merged);
+    }
+}
diff --git a/tests/src/com/android/contacts/common/RawContactDeltaTests.java b/tests/src/com/android/contacts/common/RawContactDeltaTests.java
new file mode 100644
index 0000000..e4690d9
--- /dev/null
+++ b/tests/src/com/android/contacts/common/RawContactDeltaTests.java
@@ -0,0 +1,383 @@
+/*
+ * 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.contacts.common;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentValues;
+import android.content.Context;
+import android.os.Build;
+import android.os.Parcel;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.BuilderWrapper;
+import com.android.contacts.common.model.CPOWrapper;
+import com.android.contacts.common.model.RawContact;
+import com.android.contacts.common.model.RawContactDelta;
+import com.android.contacts.common.model.ValuesDelta;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * Tests for {@link RawContactDelta} and {@link ValuesDelta}. These tests
+ * focus on passing changes across {@link Parcel}, and verifying that they
+ * correctly build expected "diff" operations.
+ */
+@LargeTest
+public class RawContactDeltaTests extends AndroidTestCase {
+    public static final String TAG = "EntityDeltaTests";
+
+    public static final long TEST_CONTACT_ID = 12;
+    public static final long TEST_PHONE_ID = 24;
+
+    public static final String TEST_PHONE_NUMBER_1 = "218-555-1111";
+    public static final String TEST_PHONE_NUMBER_2 = "218-555-2222";
+
+    public static final String TEST_ACCOUNT_NAME = "TEST";
+
+    public RawContactDeltaTests() {
+        super();
+    }
+
+    @Override
+    public void setUp() {
+        mContext = getContext();
+    }
+
+    public static RawContact getRawContact(Context context, long contactId, long phoneId) {
+        // Build an existing contact read from database
+        final ContentValues contact = new ContentValues();
+        contact.put(RawContacts.VERSION, 43);
+        contact.put(RawContacts._ID, contactId);
+
+        final ContentValues phone = new ContentValues();
+        phone.put(Data._ID, phoneId);
+        phone.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        phone.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
+        phone.put(Phone.TYPE, Phone.TYPE_HOME);
+
+        final RawContact before = new RawContact(contact);
+        before.addDataItemValues(phone);
+        return before;
+    }
+
+    /**
+     * Test that {@link RawContactDelta#mergeAfter(RawContactDelta)} correctly passes
+     * any changes through the {@link Parcel} object. This enforces that
+     * {@link RawContactDelta} should be identical when serialized against the same
+     * "before" {@link RawContact}.
+     */
+    public void testParcelChangesNone() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+        final RawContactDelta dest = RawContactDelta.fromBefore(before);
+
+        // Merge modified values and assert they match
+        final RawContactDelta merged = RawContactDelta.mergeAfter(dest, source);
+        assertEquals("Unexpected change when merging", source, merged);
+    }
+
+    public void testParcelChangesInsert() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+        final RawContactDelta dest = RawContactDelta.fromBefore(before);
+
+        // Add a new row and pass across parcel, should be same
+        final ContentValues phone = new ContentValues();
+        phone.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        phone.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+        phone.put(Phone.TYPE, Phone.TYPE_WORK);
+        source.addEntry(ValuesDelta.fromAfter(phone));
+
+        // Merge modified values and assert they match
+        final RawContactDelta merged = RawContactDelta.mergeAfter(dest, source);
+        assertEquals("Unexpected change when merging", source, merged);
+    }
+
+    public void testParcelChangesUpdate() {
+        // Update existing row and pass across parcel, should be same
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+        final RawContactDelta dest = RawContactDelta.fromBefore(before);
+
+        final ValuesDelta child = source.getEntry(TEST_PHONE_ID);
+        child.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+
+        // Merge modified values and assert they match
+        final RawContactDelta merged = RawContactDelta.mergeAfter(dest, source);
+        assertEquals("Unexpected change when merging", source, merged);
+    }
+
+    public void testParcelChangesDelete() {
+        // Delete a row and pass across parcel, should be same
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+        final RawContactDelta dest = RawContactDelta.fromBefore(before);
+
+        final ValuesDelta child = source.getEntry(TEST_PHONE_ID);
+        child.markDeleted();
+
+        // Merge modified values and assert they match
+        final RawContactDelta merged = RawContactDelta.mergeAfter(dest, source);
+        assertEquals("Unexpected change when merging", source, merged);
+    }
+
+    public void testValuesDiffDelete() {
+        final ContentValues before = new ContentValues();
+        before.put(Data._ID, TEST_PHONE_ID);
+        before.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
+
+        final ValuesDelta values = ValuesDelta.fromBefore(before);
+        values.markDeleted();
+
+        // Should produce a delete action
+        final BuilderWrapper builderWrapper = values.buildDiffWrapper(Data.CONTENT_URI);
+        final boolean isDelete = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
+                ? builderWrapper.getBuilder().build().isDelete()
+                : builderWrapper.getType() == CompatUtils.TYPE_DELETE;
+        assertTrue("Didn't produce delete action", isDelete);
+    }
+
+    /**
+     * Test that {@link RawContactDelta#buildDiffWrapper(ArrayList)} is correctly built for
+     * insert, update, and delete cases. This only tests a subset of possible
+     * {@link Data} row changes.
+     */
+    public void testEntityDiffNone() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+
+        // Assert that writing unchanged produces few operations
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildDiffWrapper(diff);
+
+        assertTrue("Created changes when none needed", (diff.size() == 0));
+    }
+
+    public void testEntityDiffNoneInsert() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+
+        // Insert a new phone number
+        final ContentValues phone = new ContentValues();
+        phone.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        phone.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+        phone.put(Phone.TYPE, Phone.TYPE_WORK);
+        source.addEntry(ValuesDelta.fromAfter(phone));
+
+        // Assert two operations: insert Data row and enforce version
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildAssertWrapper(diff);
+        source.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 4, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            assertTrue("Expected version enforcement", CompatUtils.isAssertQueryCompat(cpoWrapper));
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(3);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testEntityDiffUpdateInsert() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+
+        // Update parent contact values
+        source.getValues().put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED);
+
+        // Insert a new phone number
+        final ContentValues phone = new ContentValues();
+        phone.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        phone.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+        phone.put(Phone.TYPE, Phone.TYPE_WORK);
+        source.addEntry(ValuesDelta.fromAfter(phone));
+
+        // Assert three operations: update Contact, insert Data row, enforce version
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildAssertWrapper(diff);
+        source.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 5, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            assertTrue("Expected version enforcement", CompatUtils.isAssertQueryCompat(cpoWrapper));
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(3);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(4);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testEntityDiffNoneUpdate() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+
+        // Update existing phone number
+        final ValuesDelta child = source.getEntry(TEST_PHONE_ID);
+        child.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+
+        // Assert that version is enforced
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildAssertWrapper(diff);
+        source.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 4, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            assertTrue("Expected version enforcement", CompatUtils.isAssertQueryCompat(cpoWrapper));
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(3);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testEntityDiffDelete() {
+        final RawContact before = getRawContact(mContext, TEST_CONTACT_ID, TEST_PHONE_ID);
+        final RawContactDelta source = RawContactDelta.fromBefore(before);
+
+        // Delete entire entity
+        source.getValues().markDeleted();
+
+        // Assert two operations: delete Contact and enforce version
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildAssertWrapper(diff);
+        source.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 2, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            assertTrue("Expected version enforcement", CompatUtils.isAssertQueryCompat(cpoWrapper));
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isDeleteCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testEntityDiffInsert() {
+        // Insert a RawContact
+        final ContentValues after = new ContentValues();
+        after.put(RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME);
+        after.put(RawContacts.SEND_TO_VOICEMAIL, 1);
+
+        final ValuesDelta values = ValuesDelta.fromAfter(after);
+        final RawContactDelta source = new RawContactDelta(values);
+
+        // Assert two operations: insert Contact and enforce version
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildAssertWrapper(diff);
+        source.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 2, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testEntityDiffInsertInsert() {
+        // Insert a RawContact
+        final ContentValues after = new ContentValues();
+        after.put(RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME);
+        after.put(RawContacts.SEND_TO_VOICEMAIL, 1);
+
+        final ValuesDelta values = ValuesDelta.fromAfter(after);
+        final RawContactDelta source = new RawContactDelta(values);
+
+        // Insert a new phone number
+        final ContentValues phone = new ContentValues();
+        phone.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        phone.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+        phone.put(Phone.TYPE, Phone.TYPE_WORK);
+        source.addEntry(ValuesDelta.fromAfter(phone));
+
+        // Assert two operations: delete Contact and enforce version
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        source.buildAssertWrapper(diff);
+        source.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/RawContactModifierTests.java b/tests/src/com/android/contacts/common/RawContactModifierTests.java
new file mode 100644
index 0000000..755838b
--- /dev/null
+++ b/tests/src/com/android/contacts/common/RawContactModifierTests.java
@@ -0,0 +1,1293 @@
+/*
+ * 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.contacts.common;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentValues;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Intents.Insert;
+import android.provider.ContactsContract.RawContacts;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.CPOWrapper;
+import com.android.contacts.common.model.RawContact;
+import com.android.contacts.common.model.RawContactDelta;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.RawContactDeltaList;
+import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.ExchangeAccountType;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockAccountTypeManager;
+import com.android.contacts.common.test.mocks.MockContentProvider;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests for {@link RawContactModifier} to verify that {@link AccountType}
+ * constraints are being enforced correctly.
+ */
+@LargeTest
+public class RawContactModifierTests extends AndroidTestCase {
+    public static final String TAG = "EntityModifierTests";
+
+    // From android.content.ContentProviderOperation
+    public static final int TYPE_INSERT = 1;
+
+    public static final long VER_FIRST = 100;
+
+    private static final long TEST_ID = 4;
+    private static final String TEST_PHONE = "218-555-1212";
+    private static final String TEST_NAME = "Adam Young";
+    private static final String TEST_NAME2 = "Breanne Duren";
+    private static final String TEST_IM = "example@example.com";
+    private static final String TEST_POSTAL = "1600 Amphitheatre Parkway";
+
+    private static final String TEST_ACCOUNT_NAME = "unittest@example.com";
+    private static final String TEST_ACCOUNT_TYPE = "com.example.unittest";
+
+    private static final String EXCHANGE_ACCT_TYPE = "com.android.exchange";
+
+    @Override
+    public void setUp() {
+        mContext = getContext();
+    }
+
+    public static class MockContactsSource extends AccountType {
+
+        MockContactsSource() {
+            try {
+                this.accountType = TEST_ACCOUNT_TYPE;
+
+                final DataKind nameKind = new DataKind(StructuredName.CONTENT_ITEM_TYPE,
+                        R.string.nameLabelsGroup, -1, true);
+                nameKind.typeOverallMax = 1;
+                addKind(nameKind);
+
+                // Phone allows maximum 2 home, 1 work, and unlimited other, with
+                // constraint of 5 numbers maximum.
+                final DataKind phoneKind = new DataKind(
+                        Phone.CONTENT_ITEM_TYPE, -1, 10, true);
+
+                phoneKind.typeOverallMax = 5;
+                phoneKind.typeColumn = Phone.TYPE;
+                phoneKind.typeList = Lists.newArrayList();
+                phoneKind.typeList.add(new EditType(Phone.TYPE_HOME, -1).setSpecificMax(2));
+                phoneKind.typeList.add(new EditType(Phone.TYPE_WORK, -1).setSpecificMax(1));
+                phoneKind.typeList.add(new EditType(Phone.TYPE_FAX_WORK, -1).setSecondary(true));
+                phoneKind.typeList.add(new EditType(Phone.TYPE_OTHER, -1));
+
+                phoneKind.fieldList = Lists.newArrayList();
+                phoneKind.fieldList.add(new EditField(Phone.NUMBER, -1, -1));
+                phoneKind.fieldList.add(new EditField(Phone.LABEL, -1, -1));
+
+                addKind(phoneKind);
+
+                // Email is unlimited
+                final DataKind emailKind = new DataKind(Email.CONTENT_ITEM_TYPE, -1, 10, true);
+                emailKind.typeOverallMax = -1;
+                emailKind.fieldList = Lists.newArrayList();
+                emailKind.fieldList.add(new EditField(Email.DATA, -1, -1));
+                addKind(emailKind);
+
+                // IM is only one
+                final DataKind imKind = new DataKind(Im.CONTENT_ITEM_TYPE, -1, 10, true);
+                imKind.typeOverallMax = 1;
+                imKind.fieldList = Lists.newArrayList();
+                imKind.fieldList.add(new EditField(Im.DATA, -1, -1));
+                addKind(imKind);
+
+                // Organization is only one
+                final DataKind orgKind = new DataKind(Organization.CONTENT_ITEM_TYPE, -1, 10, true);
+                orgKind.typeOverallMax = 1;
+                orgKind.fieldList = Lists.newArrayList();
+                orgKind.fieldList.add(new EditField(Organization.COMPANY, -1, -1));
+                orgKind.fieldList.add(new EditField(Organization.TITLE, -1, -1));
+                addKind(orgKind);
+            } catch (DefinitionException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        @Override
+        public boolean isGroupMembershipEditable() {
+            return false;
+        }
+
+        @Override
+        public boolean areContactsWritable() {
+            return true;
+        }
+    }
+
+    /**
+     * Build a {@link AccountType} that has various odd constraints for
+     * testing purposes.
+     */
+    protected AccountType getAccountType() {
+        return new MockContactsSource();
+    }
+
+    /**
+     * Build {@link AccountTypeManager} instance.
+     */
+    protected AccountTypeManager getAccountTypes(AccountType... types) {
+        return new MockAccountTypeManager(types, null);
+    }
+
+    /**
+     * Build an {@link RawContact} with the requested set of phone numbers.
+     */
+    protected RawContactDelta getRawContact(Long existingId, ContentValues... entries) {
+        final ContentValues contact = new ContentValues();
+        if (existingId != null) {
+            contact.put(RawContacts._ID, existingId);
+        }
+        contact.put(RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME);
+        contact.put(RawContacts.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE);
+
+        final RawContact before = new RawContact(contact);
+        for (ContentValues values : entries) {
+            before.addDataItemValues(values);
+        }
+        return RawContactDelta.fromBefore(before);
+    }
+
+    /**
+     * Assert this {@link List} contains the given {@link Object}.
+     */
+    protected void assertContains(List<?> list, Object object) {
+        assertTrue("Missing expected value", list.contains(object));
+    }
+
+    /**
+     * Assert this {@link List} does not contain the given {@link Object}.
+     */
+    protected void assertNotContains(List<?> list, Object object) {
+        assertFalse("Contained unexpected value", list.contains(object));
+    }
+
+    /**
+     * Insert various rows to test
+     * {@link RawContactModifier#getValidTypes(RawContactDelta, DataKind, EditType)}
+     */
+    public void testValidTypes() {
+        // Build a source and pull specific types
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+        final EditType typeWork = RawContactModifier.getType(kindPhone, Phone.TYPE_WORK);
+        final EditType typeOther = RawContactModifier.getType(kindPhone, Phone.TYPE_OTHER);
+
+        List<EditType> validTypes;
+
+        // Add first home, first work
+        final RawContactDelta state = getRawContact(TEST_ID);
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        RawContactModifier.insertChild(state, kindPhone, typeWork);
+
+        // Expecting home, other
+        validTypes = RawContactModifier.getValidTypes(state, kindPhone, null, true, null, true);
+        assertContains(validTypes, typeHome);
+        assertNotContains(validTypes, typeWork);
+        assertContains(validTypes, typeOther);
+
+        // Add second home
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+
+        // Expecting other
+        validTypes = RawContactModifier.getValidTypes(state, kindPhone, null, true, null, true);
+        assertNotContains(validTypes, typeHome);
+        assertNotContains(validTypes, typeWork);
+        assertContains(validTypes, typeOther);
+
+        // Add third and fourth home (invalid, but possible)
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+
+        // Expecting none
+        validTypes = RawContactModifier.getValidTypes(state, kindPhone, null, true, null, true);
+        assertNotContains(validTypes, typeHome);
+        assertNotContains(validTypes, typeWork);
+        assertNotContains(validTypes, typeOther);
+    }
+
+    /**
+     * Test which valid types there are when trying to update the editor type.
+     * {@link RawContactModifier#getValidTypes(RawContactDelta, DataKind, EditType, Boolean)}
+     */
+    public void testValidTypesWhenUpdating() {
+        // Build a source and pull specific types
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+        final EditType typeWork = RawContactModifier.getType(kindPhone, Phone.TYPE_WORK);
+        final EditType typeOther = RawContactModifier.getType(kindPhone, Phone.TYPE_OTHER);
+
+        List<EditType> validTypes;
+
+        // Add first home, first work
+        final RawContactDelta state = getRawContact(TEST_ID);
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        RawContactModifier.insertChild(state, kindPhone, typeWork);
+
+        // Update editor type for home.
+        validTypes = RawContactModifier.getValidTypes(state, kindPhone, null, true, null, false);
+        assertContains(validTypes, typeHome);
+        assertNotContains(validTypes, typeWork);
+        assertContains(validTypes, typeOther);
+
+        // Add another 3 types. Overall limit is 5.
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        RawContactModifier.insertChild(state, kindPhone, typeOther);
+        RawContactModifier.insertChild(state, kindPhone, typeOther);
+
+        // "Other" is valid when updating the editor type.
+        validTypes = RawContactModifier.getValidTypes(state, kindPhone, null, true, null, false);
+        assertNotContains(validTypes, typeHome);
+        assertNotContains(validTypes, typeWork);
+        assertContains(validTypes, typeOther);
+    }
+
+    /**
+     * Test {@link RawContactModifier#canInsert(RawContactDelta, DataKind)} by
+     * inserting various rows.
+     */
+    public void testCanInsert() {
+        // Build a source and pull specific types
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+        final EditType typeWork = RawContactModifier.getType(kindPhone, Phone.TYPE_WORK);
+        final EditType typeOther = RawContactModifier.getType(kindPhone, Phone.TYPE_OTHER);
+
+        // Add first home, first work
+        final RawContactDelta state = getRawContact(TEST_ID);
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        RawContactModifier.insertChild(state, kindPhone, typeWork);
+        assertTrue("Unable to insert", RawContactModifier.canInsert(state, kindPhone));
+
+        // Add two other, which puts us just under "5" overall limit
+        RawContactModifier.insertChild(state, kindPhone, typeOther);
+        RawContactModifier.insertChild(state, kindPhone, typeOther);
+        assertTrue("Unable to insert", RawContactModifier.canInsert(state, kindPhone));
+
+        // Add second home, which should push to snug limit
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        assertFalse("Able to insert", RawContactModifier.canInsert(state, kindPhone));
+    }
+
+    /**
+     * Test
+     * {@link RawContactModifier#getBestValidType(RawContactDelta, DataKind, boolean, int)}
+     * by asserting expected best options in various states.
+     */
+    public void testBestValidType() {
+        // Build a source and pull specific types
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+        final EditType typeWork = RawContactModifier.getType(kindPhone, Phone.TYPE_WORK);
+        final EditType typeFaxWork = RawContactModifier.getType(kindPhone, Phone.TYPE_FAX_WORK);
+        final EditType typeOther = RawContactModifier.getType(kindPhone, Phone.TYPE_OTHER);
+
+        EditType suggested;
+
+        // Default suggestion should be home
+        final RawContactDelta state = getRawContact(TEST_ID);
+        suggested = RawContactModifier.getBestValidType(state, kindPhone, false, Integer.MIN_VALUE);
+        assertEquals("Unexpected suggestion", typeHome, suggested);
+
+        // Add first home, should now suggest work
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        suggested = RawContactModifier.getBestValidType(state, kindPhone, false, Integer.MIN_VALUE);
+        assertEquals("Unexpected suggestion", typeWork, suggested);
+
+        // Add work fax, should still suggest work
+        RawContactModifier.insertChild(state, kindPhone, typeFaxWork);
+        suggested = RawContactModifier.getBestValidType(state, kindPhone, false, Integer.MIN_VALUE);
+        assertEquals("Unexpected suggestion", typeWork, suggested);
+
+        // Add other, should still suggest work
+        RawContactModifier.insertChild(state, kindPhone, typeOther);
+        suggested = RawContactModifier.getBestValidType(state, kindPhone, false, Integer.MIN_VALUE);
+        assertEquals("Unexpected suggestion", typeWork, suggested);
+
+        // Add work, now should suggest other
+        RawContactModifier.insertChild(state, kindPhone, typeWork);
+        suggested = RawContactModifier.getBestValidType(state, kindPhone, false, Integer.MIN_VALUE);
+        assertEquals("Unexpected suggestion", typeOther, suggested);
+    }
+
+    public void testIsEmptyEmpty() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+
+        // Test entirely empty row
+        final ContentValues after = new ContentValues();
+        final ValuesDelta values = ValuesDelta.fromAfter(after);
+
+        assertTrue("Expected empty", RawContactModifier.isEmpty(values, kindPhone));
+    }
+
+    public void testIsEmptyDirectFields() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Test row that has type values, but core fields are empty
+        final RawContactDelta state = getRawContact(TEST_ID);
+        final ValuesDelta values = RawContactModifier.insertChild(state, kindPhone, typeHome);
+
+        assertTrue("Expected empty", RawContactModifier.isEmpty(values, kindPhone));
+
+        // Insert some data to trigger non-empty state
+        values.put(Phone.NUMBER, TEST_PHONE);
+
+        assertFalse("Expected non-empty", RawContactModifier.isEmpty(values, kindPhone));
+    }
+
+    public void testTrimEmptySingle() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Test row that has type values, but core fields are empty
+        final RawContactDelta state = getRawContact(TEST_ID);
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+
+        // Build diff, expecting insert for data row and update enforcement
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+
+        // Trim empty rows and try again, expecting delete of overall contact
+        RawContactModifier.trimEmpty(state, source);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 1, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isDeleteCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testTrimEmptySpaces() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Test row that has type values, but values are spaces
+        final RawContactDelta state = RawContactDeltaListTests.buildBeforeEntity(mContext, TEST_ID,
+                VER_FIRST);
+        final ValuesDelta values = RawContactModifier.insertChild(state, kindPhone, typeHome);
+        values.put(Phone.NUMBER, "   ");
+
+        // Build diff, expecting insert for data row and update enforcement
+        RawContactDeltaListTests.assertDiffPattern(state,
+                RawContactDeltaListTests.buildAssertVersion(VER_FIRST),
+                RawContactDeltaListTests.buildUpdateAggregationSuspended(),
+                RawContactDeltaListTests.buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT,
+                        RawContactDeltaListTests.buildDataInsert(values, TEST_ID)),
+                RawContactDeltaListTests.buildUpdateAggregationDefault());
+
+        // Trim empty rows and try again, expecting delete of overall contact
+        RawContactModifier.trimEmpty(state, source);
+        RawContactDeltaListTests.assertDiffPattern(state,
+                RawContactDeltaListTests.buildAssertVersion(VER_FIRST),
+                RawContactDeltaListTests.buildDelete(RawContacts.CONTENT_URI));
+    }
+
+    public void testTrimLeaveValid() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Test row that has type values with valid number
+        final RawContactDelta state = RawContactDeltaListTests.buildBeforeEntity(mContext, TEST_ID,
+                VER_FIRST);
+        final ValuesDelta values = RawContactModifier.insertChild(state, kindPhone, typeHome);
+        values.put(Phone.NUMBER, TEST_PHONE);
+
+        // Build diff, expecting insert for data row and update enforcement
+        RawContactDeltaListTests.assertDiffPattern(state,
+                RawContactDeltaListTests.buildAssertVersion(VER_FIRST),
+                RawContactDeltaListTests.buildUpdateAggregationSuspended(),
+                RawContactDeltaListTests.buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT,
+                        RawContactDeltaListTests.buildDataInsert(values, TEST_ID)),
+                RawContactDeltaListTests.buildUpdateAggregationDefault());
+
+        // Trim empty rows and try again, expecting no differences
+        RawContactModifier.trimEmpty(state, source);
+        RawContactDeltaListTests.assertDiffPattern(state,
+                RawContactDeltaListTests.buildAssertVersion(VER_FIRST),
+                RawContactDeltaListTests.buildUpdateAggregationSuspended(),
+                RawContactDeltaListTests.buildCPOWrapper(Data.CONTENT_URI, TYPE_INSERT,
+                        RawContactDeltaListTests.buildDataInsert(values, TEST_ID)),
+                RawContactDeltaListTests.buildUpdateAggregationDefault());
+    }
+
+    public void testTrimEmptyUntouched() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Build "before" that has empty row
+        final RawContactDelta state = getRawContact(TEST_ID);
+        final ContentValues before = new ContentValues();
+        before.put(Data._ID, TEST_ID);
+        before.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        state.addEntry(ValuesDelta.fromBefore(before));
+
+        // Build diff, expecting no changes
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+
+        // Try trimming existing empty, which we shouldn't touch
+        RawContactModifier.trimEmpty(state, source);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+    }
+
+    public void testTrimEmptyAfterUpdate() {
+        final AccountType source = getAccountType();
+        final DataKind kindPhone = source.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Build "before" that has row with some phone number
+        final ContentValues before = new ContentValues();
+        before.put(Data._ID, TEST_ID);
+        before.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        before.put(kindPhone.typeColumn, typeHome.rawValue);
+        before.put(Phone.NUMBER, TEST_PHONE);
+        final RawContactDelta state = getRawContact(TEST_ID, before);
+
+        // Build diff, expecting no changes
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+
+        // Now update row by changing number to empty string, expecting single update
+        final ValuesDelta child = state.getEntry(TEST_ID);
+        child.put(Phone.NUMBER, "");
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+
+        // Now run trim, which should turn that update into delete
+        RawContactModifier.trimEmpty(state, source);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 1, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isDeleteCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testTrimInsertEmpty() {
+        final AccountType accountType = getAccountType();
+        final AccountTypeManager accountTypes = getAccountTypes(accountType);
+        final DataKind kindPhone = accountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Try creating a contact without any child entries
+        final RawContactDelta state = getRawContact(null);
+        final RawContactDeltaList set = new RawContactDeltaList();
+        set.add(state);
+
+        // Build diff, expecting single insert
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 2, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+
+        // Trim empty rows and try again, expecting no insert
+        RawContactModifier.trimEmpty(set, accountTypes);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+    }
+
+    public void testTrimInsertInsert() {
+        final AccountType accountType = getAccountType();
+        final AccountTypeManager accountTypes = getAccountTypes(accountType);
+        final DataKind kindPhone = accountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Try creating a contact with single empty entry
+        final RawContactDelta state = getRawContact(null);
+        RawContactModifier.insertChild(state, kindPhone, typeHome);
+        final RawContactDeltaList set = new RawContactDeltaList();
+        set.add(state);
+
+        // Build diff, expecting two insert operations
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isInsertCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+
+        // Trim empty rows and try again, expecting silence
+        RawContactModifier.trimEmpty(set, accountTypes);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+    }
+
+    public void testTrimUpdateRemain() {
+        final AccountType accountType = getAccountType();
+        final AccountTypeManager accountTypes = getAccountTypes(accountType);
+        final DataKind kindPhone = accountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Build "before" with two phone numbers
+        final ContentValues first = new ContentValues();
+        first.put(Data._ID, TEST_ID);
+        first.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        first.put(kindPhone.typeColumn, typeHome.rawValue);
+        first.put(Phone.NUMBER, TEST_PHONE);
+
+        final ContentValues second = new ContentValues();
+        second.put(Data._ID, TEST_ID);
+        second.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        second.put(kindPhone.typeColumn, typeHome.rawValue);
+        second.put(Phone.NUMBER, TEST_PHONE);
+
+        final RawContactDelta state = getRawContact(TEST_ID, first, second);
+        final RawContactDeltaList set = new RawContactDeltaList();
+        set.add(state);
+
+        // Build diff, expecting no changes
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+
+        // Now update row by changing number to empty string, expecting single update
+        final ValuesDelta child = state.getEntry(TEST_ID);
+        child.put(Phone.NUMBER, "");
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+
+        // Now run trim, which should turn that update into delete
+        RawContactModifier.trimEmpty(set, accountTypes);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isDeleteCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testTrimUpdateUpdate() {
+        final AccountType accountType = getAccountType();
+        final AccountTypeManager accountTypes = getAccountTypes(accountType);
+        final DataKind kindPhone = accountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+        final EditType typeHome = RawContactModifier.getType(kindPhone, Phone.TYPE_HOME);
+
+        // Build "before" with two phone numbers
+        final ContentValues first = new ContentValues();
+        first.put(Data._ID, TEST_ID);
+        first.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        first.put(kindPhone.typeColumn, typeHome.rawValue);
+        first.put(Phone.NUMBER, TEST_PHONE);
+
+        final RawContactDelta state = getRawContact(TEST_ID, first);
+        final RawContactDeltaList set = new RawContactDeltaList();
+        set.add(state);
+
+        // Build diff, expecting no changes
+        final ArrayList<CPOWrapper> diff = Lists.newArrayList();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 0, diff.size());
+
+        // Now update row by changing number to empty string, expecting single update
+        final ValuesDelta child = state.getEntry(TEST_ID);
+        child.put(Phone.NUMBER, "");
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 3, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(1);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", Data.CONTENT_URI, oper.getUri());
+        }
+        {
+            final CPOWrapper cpoWrapper = diff.get(2);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Expected aggregation mode change", CompatUtils.isUpdateCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+
+        // Now run trim, which should turn into deleting the whole contact
+        RawContactModifier.trimEmpty(set, accountTypes);
+        diff.clear();
+        state.buildDiffWrapper(diff);
+        assertEquals("Unexpected operations", 1, diff.size());
+        {
+            final CPOWrapper cpoWrapper = diff.get(0);
+            final ContentProviderOperation oper = cpoWrapper.getOperation();
+            assertTrue("Incorrect type", CompatUtils.isDeleteCompat(cpoWrapper));
+            assertEquals("Incorrect target", RawContacts.CONTENT_URI, oper.getUri());
+        }
+    }
+
+    public void testParseExtrasExistingName() {
+        final AccountType accountType = getAccountType();
+
+        // Build "before" name
+        final ContentValues first = new ContentValues();
+        first.put(Data._ID, TEST_ID);
+        first.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+        first.put(StructuredName.GIVEN_NAME, TEST_NAME);
+
+        // Parse extras, making sure we keep single name
+        final RawContactDelta state = getRawContact(TEST_ID, first);
+        final Bundle extras = new Bundle();
+        extras.putString(Insert.NAME, TEST_NAME2);
+        RawContactModifier.parseExtras(mContext, accountType, state, extras);
+
+        final int nameCount = state.getMimeEntriesCount(StructuredName.CONTENT_ITEM_TYPE, true);
+        assertEquals("Unexpected names", 1, nameCount);
+    }
+
+    public void testParseExtrasIgnoreLimit() {
+        final AccountType accountType = getAccountType();
+
+        // Build "before" IM
+        final ContentValues first = new ContentValues();
+        first.put(Data._ID, TEST_ID);
+        first.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        first.put(Im.DATA, TEST_IM);
+
+        final RawContactDelta state = getRawContact(TEST_ID, first);
+        final int beforeCount = state.getMimeEntries(Im.CONTENT_ITEM_TYPE).size();
+
+        // We should ignore data that doesn't fit account type rules, since account type
+        // only allows single Im
+        final Bundle extras = new Bundle();
+        extras.putInt(Insert.IM_PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
+        extras.putString(Insert.IM_HANDLE, TEST_IM);
+        RawContactModifier.parseExtras(mContext, accountType, state, extras);
+
+        final int afterCount = state.getMimeEntries(Im.CONTENT_ITEM_TYPE).size();
+        assertEquals("Broke account type rules", beforeCount, afterCount);
+    }
+
+    public void testParseExtrasIgnoreUnhandled() {
+        final AccountType accountType = getAccountType();
+        final RawContactDelta state = getRawContact(TEST_ID);
+
+        // We should silently ignore types unsupported by account type
+        final Bundle extras = new Bundle();
+        extras.putString(Insert.POSTAL, TEST_POSTAL);
+        RawContactModifier.parseExtras(mContext, accountType, state, extras);
+
+        assertNull("Broke accoun type rules",
+                state.getMimeEntries(StructuredPostal.CONTENT_ITEM_TYPE));
+    }
+
+    public void testParseExtrasJobTitle() {
+        final AccountType accountType = getAccountType();
+        final RawContactDelta state = getRawContact(TEST_ID);
+
+        // Make sure that we create partial Organizations
+        final Bundle extras = new Bundle();
+        extras.putString(Insert.JOB_TITLE, TEST_NAME);
+        RawContactModifier.parseExtras(mContext, accountType, state, extras);
+
+        final int count = state.getMimeEntries(Organization.CONTENT_ITEM_TYPE).size();
+        assertEquals("Expected to create organization", 1, count);
+    }
+
+    public void testMigrateWithDisplayNameFromGoogleToExchange1() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE);
+
+        ContactsMockContext context = new ContactsMockContext(getContext());
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+        mockNameValues.put(StructuredName.PREFIX, "prefix");
+        mockNameValues.put(StructuredName.GIVEN_NAME, "given");
+        mockNameValues.put(StructuredName.MIDDLE_NAME, "middle");
+        mockNameValues.put(StructuredName.FAMILY_NAME, "family");
+        mockNameValues.put(StructuredName.SUFFIX, "suffix");
+        mockNameValues.put(StructuredName.PHONETIC_FAMILY_NAME, "PHONETIC_FAMILY");
+        mockNameValues.put(StructuredName.PHONETIC_MIDDLE_NAME, "PHONETIC_MIDDLE");
+        mockNameValues.put(StructuredName.PHONETIC_GIVEN_NAME, "PHONETIC_GIVEN");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateStructuredName(context, oldState, newState, kind);
+        List<ValuesDelta> list = newState.getMimeEntries(StructuredName.CONTENT_ITEM_TYPE);
+        assertEquals(1, list.size());
+
+        ContentValues output = list.get(0).getAfter();
+        assertEquals("prefix", output.getAsString(StructuredName.PREFIX));
+        assertEquals("given", output.getAsString(StructuredName.GIVEN_NAME));
+        assertEquals("middle", output.getAsString(StructuredName.MIDDLE_NAME));
+        assertEquals("family", output.getAsString(StructuredName.FAMILY_NAME));
+        assertEquals("suffix", output.getAsString(StructuredName.SUFFIX));
+        // Phonetic middle name isn't supported by Exchange.
+        assertEquals("PHONETIC_FAMILY", output.getAsString(StructuredName.PHONETIC_FAMILY_NAME));
+        assertEquals("PHONETIC_GIVEN", output.getAsString(StructuredName.PHONETIC_GIVEN_NAME));
+    }
+
+    public void testMigrateWithDisplayNameFromGoogleToExchange2() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE);
+
+        ContactsMockContext context = new ContactsMockContext(getContext());
+        MockContentProvider provider = context.getContactsProvider();
+
+        String inputDisplayName = "prefix given middle family suffix";
+        // The method will ask the provider to split/join StructuredName.
+        Uri uriForBuildDisplayName =
+                ContactsContract.AUTHORITY_URI
+                        .buildUpon()
+                        .appendPath("complete_name")
+                        .appendQueryParameter(StructuredName.DISPLAY_NAME, inputDisplayName)
+                        .build();
+        provider.expectQuery(uriForBuildDisplayName)
+                .returnRow("prefix", "given", "middle", "family", "suffix")
+                .withProjection(StructuredName.PREFIX, StructuredName.GIVEN_NAME,
+                        StructuredName.MIDDLE_NAME, StructuredName.FAMILY_NAME,
+                        StructuredName.SUFFIX);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+        mockNameValues.put(StructuredName.DISPLAY_NAME, inputDisplayName);
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateStructuredName(context, oldState, newState, kind);
+        List<ValuesDelta> list = newState.getMimeEntries(StructuredName.CONTENT_ITEM_TYPE);
+        assertEquals(1, list.size());
+
+        ContentValues outputValues = list.get(0).getAfter();
+        assertEquals("prefix", outputValues.getAsString(StructuredName.PREFIX));
+        assertEquals("given", outputValues.getAsString(StructuredName.GIVEN_NAME));
+        assertEquals("middle", outputValues.getAsString(StructuredName.MIDDLE_NAME));
+        assertEquals("family", outputValues.getAsString(StructuredName.FAMILY_NAME));
+        assertEquals("suffix", outputValues.getAsString(StructuredName.SUFFIX));
+    }
+
+    public void testMigrateWithStructuredNameFromExchangeToGoogle() {
+        AccountType oldAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        AccountType newAccountType = new GoogleAccountType(getContext(), "");
+        DataKind kind = newAccountType.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE);
+
+        ContactsMockContext context = new ContactsMockContext(getContext());
+        MockContentProvider provider = context.getContactsProvider();
+
+        // The method will ask the provider to split/join StructuredName.
+        Uri uriForBuildDisplayName =
+                ContactsContract.AUTHORITY_URI
+                        .buildUpon()
+                        .appendPath("complete_name")
+                        .appendQueryParameter(StructuredName.PREFIX, "prefix")
+                        .appendQueryParameter(StructuredName.GIVEN_NAME, "given")
+                        .appendQueryParameter(StructuredName.MIDDLE_NAME, "middle")
+                        .appendQueryParameter(StructuredName.FAMILY_NAME, "family")
+                        .appendQueryParameter(StructuredName.SUFFIX, "suffix")
+                        .build();
+        provider.expectQuery(uriForBuildDisplayName)
+                .returnRow("prefix given middle family suffix")
+                .withProjection(StructuredName.DISPLAY_NAME);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+        mockNameValues.put(StructuredName.PREFIX, "prefix");
+        mockNameValues.put(StructuredName.GIVEN_NAME, "given");
+        mockNameValues.put(StructuredName.MIDDLE_NAME, "middle");
+        mockNameValues.put(StructuredName.FAMILY_NAME, "family");
+        mockNameValues.put(StructuredName.SUFFIX, "suffix");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateStructuredName(context, oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(StructuredName.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(1, list.size());
+        ContentValues outputValues = list.get(0).getAfter();
+        assertEquals("prefix given middle family suffix",
+                outputValues.getAsString(StructuredName.DISPLAY_NAME));
+    }
+
+    public void testMigratePostalFromGoogleToExchange() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
+        mockNameValues.put(StructuredPostal.FORMATTED_ADDRESS, "formatted_address");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migratePostal(oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(StructuredPostal.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(1, list.size());
+        ContentValues outputValues = list.get(0).getAfter();
+        // FORMATTED_ADDRESS isn't supported by Exchange.
+        assertNull(outputValues.getAsString(StructuredPostal.FORMATTED_ADDRESS));
+        assertEquals("formatted_address", outputValues.getAsString(StructuredPostal.STREET));
+    }
+
+    public void testMigratePostalFromExchangeToGoogle() {
+        AccountType oldAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        AccountType newAccountType = new GoogleAccountType(getContext(), "");
+        DataKind kind = newAccountType.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
+        mockNameValues.put(StructuredPostal.COUNTRY, "country");
+        mockNameValues.put(StructuredPostal.POSTCODE, "postcode");
+        mockNameValues.put(StructuredPostal.REGION, "region");
+        mockNameValues.put(StructuredPostal.CITY, "city");
+        mockNameValues.put(StructuredPostal.STREET, "street");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migratePostal(oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(StructuredPostal.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(1, list.size());
+        ContentValues outputValues = list.get(0).getAfter();
+
+        // Check FORMATTED_ADDRESS contains all info.
+        String formattedAddress = outputValues.getAsString(StructuredPostal.FORMATTED_ADDRESS);
+        assertNotNull(formattedAddress);
+        assertTrue(formattedAddress.contains("country"));
+        assertTrue(formattedAddress.contains("postcode"));
+        assertTrue(formattedAddress.contains("region"));
+        assertTrue(formattedAddress.contains("postcode"));
+        assertTrue(formattedAddress.contains("city"));
+        assertTrue(formattedAddress.contains("street"));
+    }
+
+    public void testMigrateEventFromGoogleToExchange1() {
+        testMigrateEventCommon(new GoogleAccountType(getContext(), ""),
+                new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE));
+    }
+
+    public void testMigrateEventFromExchangeToGoogle() {
+        testMigrateEventCommon(new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE),
+                new GoogleAccountType(getContext(), ""));
+    }
+
+    private void testMigrateEventCommon(AccountType oldAccountType, AccountType newAccountType) {
+        DataKind kind = newAccountType.getKindForMimetype(Event.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Event.START_DATE, "1972-02-08");
+        mockNameValues.put(Event.TYPE, Event.TYPE_BIRTHDAY);
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateEvent(oldState, newState, kind, 1990);
+
+        List<ValuesDelta> list = newState.getMimeEntries(Event.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(1, list.size());  // Anniversary should be dropped.
+        ContentValues outputValues = list.get(0).getAfter();
+
+        assertEquals("1972-02-08", outputValues.getAsString(Event.START_DATE));
+        assertEquals(Event.TYPE_BIRTHDAY, outputValues.getAsInteger(Event.TYPE).intValue());
+    }
+
+    public void testMigrateEventFromGoogleToExchange2() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(Event.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+        // No year format is not supported by Exchange.
+        mockNameValues.put(Event.START_DATE, "--06-01");
+        mockNameValues.put(Event.TYPE, Event.TYPE_BIRTHDAY);
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Event.START_DATE, "1980-08-02");
+        // Anniversary is not supported by Exchange
+        mockNameValues.put(Event.TYPE, Event.TYPE_ANNIVERSARY);
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateEvent(oldState, newState, kind, 1990);
+
+        List<ValuesDelta> list = newState.getMimeEntries(Event.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(1, list.size());  // Anniversary should be dropped.
+        ContentValues outputValues = list.get(0).getAfter();
+
+        // Default year should be used.
+        assertEquals("1990-06-01", outputValues.getAsString(Event.START_DATE));
+        assertEquals(Event.TYPE_BIRTHDAY, outputValues.getAsInteger(Event.TYPE).intValue());
+    }
+
+    public void testMigrateEmailFromGoogleToExchange() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(Email.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Email.TYPE, Email.TYPE_CUSTOM);
+        mockNameValues.put(Email.LABEL, "custom_type");
+        mockNameValues.put(Email.ADDRESS, "address1");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Email.TYPE, Email.TYPE_HOME);
+        mockNameValues.put(Email.ADDRESS, "address2");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Email.TYPE, Email.TYPE_WORK);
+        mockNameValues.put(Email.ADDRESS, "address3");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        // Exchange can have up to 3 email entries. This 4th entry should be dropped.
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Email.TYPE, Email.TYPE_OTHER);
+        mockNameValues.put(Email.ADDRESS, "address4");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateGenericWithTypeColumn(oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(Email.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(3, list.size());
+
+        ContentValues outputValues = list.get(0).getAfter();
+        assertEquals(Email.TYPE_CUSTOM, outputValues.getAsInteger(Email.TYPE).intValue());
+        assertEquals("custom_type", outputValues.getAsString(Email.LABEL));
+        assertEquals("address1", outputValues.getAsString(Email.ADDRESS));
+
+        outputValues = list.get(1).getAfter();
+        assertEquals(Email.TYPE_HOME, outputValues.getAsInteger(Email.TYPE).intValue());
+        assertEquals("address2", outputValues.getAsString(Email.ADDRESS));
+
+        outputValues = list.get(2).getAfter();
+        assertEquals(Email.TYPE_WORK, outputValues.getAsInteger(Email.TYPE).intValue());
+        assertEquals("address3", outputValues.getAsString(Email.ADDRESS));
+    }
+
+    public void testMigrateImFromGoogleToExchange() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(Im.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        // Exchange doesn't support TYPE_HOME
+        mockNameValues.put(Im.TYPE, Im.TYPE_HOME);
+        mockNameValues.put(Im.PROTOCOL, Im.PROTOCOL_JABBER);
+        mockNameValues.put(Im.DATA, "im1");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        // Exchange doesn't support TYPE_WORK
+        mockNameValues.put(Im.TYPE, Im.TYPE_WORK);
+        mockNameValues.put(Im.PROTOCOL, Im.PROTOCOL_YAHOO);
+        mockNameValues.put(Im.DATA, "im2");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Im.TYPE, Im.TYPE_OTHER);
+        mockNameValues.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM);
+        mockNameValues.put(Im.CUSTOM_PROTOCOL, "custom_protocol");
+        mockNameValues.put(Im.DATA, "im3");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        // Exchange can have up to 3 IM entries. This 4th entry should be dropped.
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Im.TYPE, Im.TYPE_OTHER);
+        mockNameValues.put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
+        mockNameValues.put(Im.DATA, "im4");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateGenericWithTypeColumn(oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(Im.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(3, list.size());
+
+        assertNotNull(kind.defaultValues.getAsInteger(Im.TYPE));
+
+        int defaultType = kind.defaultValues.getAsInteger(Im.TYPE);
+
+        ContentValues outputValues = list.get(0).getAfter();
+        // HOME should become default type.
+        assertEquals(defaultType, outputValues.getAsInteger(Im.TYPE).intValue());
+        assertEquals(Im.PROTOCOL_JABBER, outputValues.getAsInteger(Im.PROTOCOL).intValue());
+        assertEquals("im1", outputValues.getAsString(Im.DATA));
+
+        outputValues = list.get(1).getAfter();
+        assertEquals(defaultType, outputValues.getAsInteger(Im.TYPE).intValue());
+        assertEquals(Im.PROTOCOL_YAHOO, outputValues.getAsInteger(Im.PROTOCOL).intValue());
+        assertEquals("im2", outputValues.getAsString(Im.DATA));
+
+        outputValues = list.get(2).getAfter();
+        assertEquals(defaultType, outputValues.getAsInteger(Im.TYPE).intValue());
+        assertEquals(Im.PROTOCOL_CUSTOM, outputValues.getAsInteger(Im.PROTOCOL).intValue());
+        assertEquals("custom_protocol", outputValues.getAsString(Im.CUSTOM_PROTOCOL));
+        assertEquals("im3", outputValues.getAsString(Im.DATA));
+    }
+
+    public void testMigratePhoneFromGoogleToExchange() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+
+        // Create 5 numbers.
+        // - "1" -- HOME
+        // - "2" -- WORK
+        // - "3" -- CUSTOM
+        // - "4" -- WORK
+        // - "5" -- WORK_MOBILE
+        // Then we convert it to Exchange account type.
+        // - "1" -- HOME
+        // - "2" -- WORK
+        // - "3" -- Because CUSTOM is not supported, it'll be changed to the default, MOBILE
+        // - "4" -- WORK
+        // - "5" -- WORK_MOBILE not suppoted again, so will be MOBILE.
+        // But then, Exchange doesn't support multiple MOBILE numbers, so "5" will be removed.
+        // i.e. the result will be:
+        // - "1" -- HOME
+        // - "2" -- WORK
+        // - "3" -- MOBILE
+        // - "4" -- WORK
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Phone.TYPE, Phone.TYPE_HOME);
+        mockNameValues.put(Phone.NUMBER, "1");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Phone.TYPE, Phone.TYPE_WORK);
+        mockNameValues.put(Phone.NUMBER, "2");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        // Exchange doesn't support this type. Default to MOBILE
+        mockNameValues.put(Phone.TYPE, Phone.TYPE_CUSTOM);
+        mockNameValues.put(Phone.LABEL, "custom_type");
+        mockNameValues.put(Phone.NUMBER, "3");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Phone.TYPE, Phone.TYPE_WORK);
+        mockNameValues.put(Phone.NUMBER, "4");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+        mockNameValues = new ContentValues();
+
+        mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Phone.TYPE, Phone.TYPE_WORK_MOBILE);
+        mockNameValues.put(Phone.NUMBER, "5");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateGenericWithTypeColumn(oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(Phone.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(4, list.size());
+
+        int defaultType = Phone.TYPE_MOBILE;
+
+        ContentValues outputValues = list.get(0).getAfter();
+        assertEquals(Phone.TYPE_HOME, outputValues.getAsInteger(Phone.TYPE).intValue());
+        assertEquals("1", outputValues.getAsString(Phone.NUMBER));
+        outputValues = list.get(1).getAfter();
+        assertEquals(Phone.TYPE_WORK, outputValues.getAsInteger(Phone.TYPE).intValue());
+        assertEquals("2", outputValues.getAsString(Phone.NUMBER));
+        outputValues = list.get(2).getAfter();
+        assertEquals(defaultType, outputValues.getAsInteger(Phone.TYPE).intValue());
+        assertNull(outputValues.getAsInteger(Phone.LABEL));
+        assertEquals("3", outputValues.getAsString(Phone.NUMBER));
+        outputValues = list.get(3).getAfter();
+        assertEquals(Phone.TYPE_WORK, outputValues.getAsInteger(Phone.TYPE).intValue());
+        assertEquals("4", outputValues.getAsString(Phone.NUMBER));
+    }
+
+    public void testMigrateOrganizationFromGoogleToExchange() {
+        AccountType oldAccountType = new GoogleAccountType(getContext(), "");
+        AccountType newAccountType = new ExchangeAccountType(getContext(), "", EXCHANGE_ACCT_TYPE);
+        DataKind kind = newAccountType.getKindForMimetype(Organization.CONTENT_ITEM_TYPE);
+
+        RawContactDelta oldState = new RawContactDelta();
+        ContentValues mockNameValues = new ContentValues();
+        mockNameValues.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
+        mockNameValues.put(Organization.COMPANY, "company1");
+        mockNameValues.put(Organization.DEPARTMENT, "department1");
+        oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
+
+        RawContactDelta newState = new RawContactDelta();
+        RawContactModifier.migrateGenericWithoutTypeColumn(oldState, newState, kind);
+
+        List<ValuesDelta> list = newState.getMimeEntries(Organization.CONTENT_ITEM_TYPE);
+        assertNotNull(list);
+        assertEquals(1, list.size());
+
+        ContentValues outputValues = list.get(0).getAfter();
+        assertEquals("company1", outputValues.getAsString(Organization.COMPANY));
+        assertEquals("department1", outputValues.getAsString(Organization.DEPARTMENT));
+    }
+}
diff --git a/tests/src/com/android/contacts/common/compat/CompatUtilsTest.java b/tests/src/com/android/contacts/common/compat/CompatUtilsTest.java
new file mode 100644
index 0000000..3386a00
--- /dev/null
+++ b/tests/src/com/android/contacts/common/compat/CompatUtilsTest.java
@@ -0,0 +1,137 @@
+/*
+ * 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.contacts.common.compat;
+
+import android.test.AndroidTestCase;
+
+public class CompatUtilsTest extends AndroidTestCase {
+
+    public void testIsClassAvailable_NullClassName() {
+        assertFalse(CompatUtils.isClassAvailable(null));
+    }
+
+    public void testIsClassAvailable_EmptyClassName() {
+        assertFalse(CompatUtils.isClassAvailable(""));
+    }
+
+    public void testIsClassAvailable_NonexistentClass() {
+        assertFalse(CompatUtils.isClassAvailable("com.android.contacts.common.NonexistentClass"));
+    }
+
+    public void testIsClassAvailable() {
+        assertTrue(CompatUtils.isClassAvailable(BaseClass.class.getName()));
+    }
+
+    public void testIsMethodAvailable_NullClassName() {
+        assertFalse(CompatUtils.isMethodAvailable(null, "methodName"));
+    }
+
+    public void testIsMethodAvailable_EmptyClassName() {
+        assertFalse(CompatUtils.isMethodAvailable("", "methodName"));
+    }
+
+    public void testIsMethodAvailable_NullMethodName() {
+        assertFalse(CompatUtils.isMethodAvailable("className", null));
+    }
+
+    public void testIsMethodAvailable_EmptyMethodName() {
+        assertFalse(CompatUtils.isMethodAvailable("className", ""));
+    }
+
+    public void testIsMethodAvailable_NonexistentClass() {
+        assertFalse(CompatUtils.isMethodAvailable("com.android.contacts.common.NonexistentClass",
+                ""));
+    }
+
+    public void testIsMethodAvailable_NonexistentMethod() {
+        assertFalse(CompatUtils.isMethodAvailable(BaseClass.class.getName(), "derivedMethod"));
+    }
+
+    public void testIsMethodAvailable() {
+        assertTrue(CompatUtils.isMethodAvailable(BaseClass.class.getName(), "baseMethod"));
+    }
+
+    public void testIsMethodAvailable_InheritedMethod() {
+        assertTrue(CompatUtils.isMethodAvailable(DerivedClass.class.getName(), "baseMethod"));
+    }
+
+    public void testIsMethodAvailable_OverloadedMethod() {
+        assertTrue(CompatUtils.isMethodAvailable(DerivedClass.class.getName(), "overloadedMethod"));
+        assertTrue(CompatUtils.isMethodAvailable(DerivedClass.class.getName(), "overloadedMethod",
+                Integer.TYPE));
+    }
+
+    public void testIsMethodAvailable_NonexistentOverload() {
+        assertFalse(CompatUtils.isMethodAvailable(DerivedClass.class.getName(), "overloadedMethod",
+                Boolean.TYPE));
+    }
+
+    public void testInvokeMethod_NullMethodName() {
+        assertNull(CompatUtils.invokeMethod(new BaseClass(), null, null, null));
+    }
+
+    public void testInvokeMethod_EmptyMethodName() {
+        assertNull(CompatUtils.invokeMethod(new BaseClass(), "", null, null));
+    }
+
+    public void testInvokeMethod_NullClassInstance() {
+        assertNull(CompatUtils.invokeMethod(null, "", null, null));
+    }
+
+    public void testInvokeMethod_NonexistentMethod() {
+        assertNull(CompatUtils.invokeMethod(new BaseClass(), "derivedMethod", null, null));
+    }
+
+    public void testInvokeMethod_MethodWithNoParameters() {
+        assertEquals(1, CompatUtils.invokeMethod(new DerivedClass(), "overloadedMethod", null, null));
+    }
+
+    public void testInvokeMethod_MethodWithNoParameters_WithParameters() {
+        assertNull(CompatUtils.invokeMethod(new DerivedClass(), "derivedMethod",
+                new Class<?>[] {Integer.TYPE}, new Object[] {1}));
+    }
+
+    public void testInvokeMethod_MethodWithParameters_WithEmptyParameterList() {
+        assertNull(CompatUtils.invokeMethod(new DerivedClass(), "overloadedMethod",
+                new Class<?>[] {Integer.TYPE}, new Object[] {}));
+    }
+
+    public void testInvokeMethod_InvokeSimpleMethod() {
+        assertEquals(2, CompatUtils.invokeMethod(new DerivedClass(), "overloadedMethod",
+                new Class<?>[] {Integer.TYPE}, new Object[] {2}));
+    }
+
+    private class BaseClass {
+        public void baseMethod() {}
+    }
+
+    private class DerivedClass extends BaseClass {
+        public int derivedMethod() {
+            // This method needs to return something to differentiate a successful invocation from
+            // an unsuccessful one.
+            return 0;
+        }
+
+        public int overloadedMethod() {
+            return 1;
+        }
+
+        public int overloadedMethod(int i) {
+            return i;
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/database/NoNullCursorAsyncQueryHandlerTest.java b/tests/src/com/android/contacts/common/database/NoNullCursorAsyncQueryHandlerTest.java
new file mode 100644
index 0000000..a2b635d
--- /dev/null
+++ b/tests/src/com/android/contacts/common/database/NoNullCursorAsyncQueryHandlerTest.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.database;
+
+import android.database.Cursor;
+import android.net.Uri;
+import android.test.InstrumentationTestCase;
+import android.test.mock.MockContentProvider;
+import android.test.mock.MockContentResolver;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Unit test for {@link NoNullCursorAsyncQueryHandler}
+ */
+public class NoNullCursorAsyncQueryHandlerTest extends InstrumentationTestCase {
+
+    private MockContentResolver mMockContentResolver;
+
+    private static final String AUTHORITY = "com.android.contacts.common.unittest";
+    private static final Uri URI = Uri.parse("content://" + AUTHORITY);
+    private static final String[] PROJECTION = new String[]{"column1", "column2"};
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mMockContentResolver = new MockContentResolver();
+        final MockContentProvider mMockContentProvider = new MockContentProvider() {
+            @Override
+            public Cursor query(Uri uri, String[] projection, String selection,
+                    String[] selectionArgs,
+                    String sortOrder) {
+                return null;
+            }
+        };
+
+        mMockContentResolver.addProvider(AUTHORITY, mMockContentProvider);
+    }
+
+    public void testCursorIsNotNull() throws Throwable {
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ObjectHolder<Cursor> cursorHolder = ObjectHolder.newInstance();
+        final ObjectHolder<Boolean> ranHolder = ObjectHolder.newInstance(false);
+
+        runTestOnUiThread(new Runnable() {
+
+            @Override
+            public void run() {
+
+                NoNullCursorAsyncQueryHandler handler = new NoNullCursorAsyncQueryHandler(
+                        mMockContentResolver) {
+                    @Override
+                    protected void onNotNullableQueryComplete(int token, Object cookie,
+                            Cursor cursor) {
+                        cursorHolder.obj = cursor;
+                        ranHolder.obj = true;
+                        latch.countDown();
+                    }
+                };
+                handler.startQuery(1, null, URI, PROJECTION, null, null, null);
+            }
+        });
+
+        latch.await(5, TimeUnit.SECONDS);
+        assertFalse(cursorHolder.obj == null);
+        assertTrue(ranHolder.obj);
+    }
+
+    public void testCursorContainsCorrectCookies() throws Throwable {
+        final ObjectHolder<Boolean> ranHolder = ObjectHolder.newInstance(false);
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ObjectHolder<Object> cookieHolder = ObjectHolder.newInstance();
+        final String cookie = "TEST COOKIE";
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                final NoNullCursorAsyncQueryHandler handler = new NoNullCursorAsyncQueryHandler(
+                        mMockContentResolver) {
+                    @Override
+                    protected void onNotNullableQueryComplete(int token, Object cookie,
+                            Cursor cursor) {
+                        ranHolder.obj = true;
+                        cookieHolder.obj = cookie;
+                        latch.countDown();
+                    }
+                };
+                handler.startQuery(1, cookie, URI, PROJECTION, null, null, null);
+            }
+        });
+
+        latch.await(5, TimeUnit.SECONDS);
+        assertSame(cookie, cookieHolder.obj);
+        assertTrue(ranHolder.obj);
+    }
+
+    public void testCursorContainsCorrectColumns() throws Throwable {
+        final ObjectHolder<Boolean> ranHolder = ObjectHolder.newInstance(false);
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ObjectHolder<Cursor> cursorHolder = ObjectHolder.newInstance();
+        final String cookie = "TEST COOKIE";
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                final NoNullCursorAsyncQueryHandler handler = new NoNullCursorAsyncQueryHandler(
+                        mMockContentResolver) {
+                    @Override
+                    protected void onNotNullableQueryComplete(int token, Object cookie,
+                            Cursor cursor) {
+                        ranHolder.obj = true;
+                        cursorHolder.obj = cursor;
+                        latch.countDown();
+                    }
+                };
+                handler.startQuery(1, cookie, URI, PROJECTION, null, null, null);
+            }
+        });
+
+        latch.await(5, TimeUnit.SECONDS);
+        assertSame(PROJECTION, cursorHolder.obj.getColumnNames());
+        assertTrue(ranHolder.obj);
+    }
+
+    private static class ObjectHolder<T> {
+        public T obj;
+
+        public static <E> ObjectHolder<E> newInstance() {
+            return new ObjectHolder<E>();
+        }
+
+        public static <E> ObjectHolder<E> newInstance(E value) {
+            ObjectHolder<E> holder = new ObjectHolder<E>();
+            holder.obj = value;
+            return holder;
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/format/FormatUtilsTests.java b/tests/src/com/android/contacts/common/format/FormatUtilsTests.java
new file mode 100644
index 0000000..8f4f772
--- /dev/null
+++ b/tests/src/com/android/contacts/common/format/FormatUtilsTests.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.format;
+
+import android.database.CharArrayBuffer;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Test cases for format utility methods.
+ */
+@SmallTest
+public class FormatUtilsTests extends AndroidTestCase {
+
+    public void testOverlapPoint() throws Exception {
+        assertEquals(2, FormatUtils.overlapPoint("abcde", "cdefg"));
+        assertEquals(-1, FormatUtils.overlapPoint("John Doe", "John Doe"));
+        assertEquals(5, FormatUtils.overlapPoint("John Doe", "Doe, John"));
+        assertEquals(-1, FormatUtils.overlapPoint("Mr. John Doe", "Mr. Doe, John"));
+        assertEquals(13, FormatUtils.overlapPoint("John Herbert Doe", "Doe, John Herbert"));
+    }
+
+    public void testCopyToCharArrayBuffer() {
+        CharArrayBuffer charArrayBuffer = new CharArrayBuffer(20);
+        checkCopyToCharArrayBuffer(charArrayBuffer, null, 0);
+        checkCopyToCharArrayBuffer(charArrayBuffer, "", 0);
+        checkCopyToCharArrayBuffer(charArrayBuffer, "test", 4);
+        // Check that it works after copying something into it.
+        checkCopyToCharArrayBuffer(charArrayBuffer, "", 0);
+        checkCopyToCharArrayBuffer(charArrayBuffer, "test", 4);
+        checkCopyToCharArrayBuffer(charArrayBuffer, null, 0);
+        // This requires a resize of the actual buffer.
+        checkCopyToCharArrayBuffer(charArrayBuffer, "test test test test test", 24);
+    }
+
+    public void testCharArrayBufferToString() {
+        checkCharArrayBufferToString("");
+        checkCharArrayBufferToString("test");
+        checkCharArrayBufferToString("test test test test test");
+    }
+
+    /** Checks that copying a string into a {@link CharArrayBuffer} and back works correctly. */
+    private void checkCharArrayBufferToString(String text) {
+        CharArrayBuffer buffer = new CharArrayBuffer(20);
+        FormatUtils.copyToCharArrayBuffer(text, buffer);
+        assertEquals(text, FormatUtils.charArrayBufferToString(buffer));
+    }
+
+    /**
+     * Checks that copying into the char array buffer copies the values correctly.
+     */
+    private void checkCopyToCharArrayBuffer(CharArrayBuffer buffer, String value, int length) {
+        FormatUtils.copyToCharArrayBuffer(value, buffer);
+        assertEquals(length, buffer.sizeCopied);
+        for (int index = 0; index < length; ++index) {
+            assertEquals(value.charAt(index), buffer.data[index]);
+        }
+    }
+
+    public void testIndexOfWordPrefix_NullPrefix() {
+        assertEquals(-1, FormatUtils.indexOfWordPrefix("test", null));
+    }
+
+    public void testIndexOfWordPrefix_NullText() {
+        assertEquals(-1, FormatUtils.indexOfWordPrefix(null, "TE"));
+    }
+
+    public void testIndexOfWordPrefix_MatchingPrefix() {
+        checkIndexOfWordPrefix("test", "TE", 0);
+        checkIndexOfWordPrefix("Test", "TE", 0);
+        checkIndexOfWordPrefix("TEst", "TE", 0);
+        checkIndexOfWordPrefix("TEST", "TE", 0);
+        checkIndexOfWordPrefix("a test", "TE", 2);
+        checkIndexOfWordPrefix("test test", "TE", 0);
+        checkIndexOfWordPrefix("a test test", "TE", 2);
+    }
+
+    public void testIndexOfWordPrefix_NotMatchingPrefix() {
+        checkIndexOfWordPrefix("test", "TA", -1);
+        checkIndexOfWordPrefix("test type theme", "TA", -1);
+        checkIndexOfWordPrefix("atest retest pretest", "TEST", -1);
+        checkIndexOfWordPrefix("tes", "TEST", -1);
+    }
+
+    public void testIndexOfWordPrefix_LowerCase() {
+        // The prefix match only works if the prefix is un upper case.
+        checkIndexOfWordPrefix("test", "te", -1);
+    }
+
+    /**
+     * Checks that getting the index of a word prefix in the given text returns the expected index.
+     *
+     * @param text the text in which to look for the word
+     * @param wordPrefix the word prefix to look for
+     * @param expectedIndex the expected value to be returned by the function
+     */
+    private void checkIndexOfWordPrefix(String text, String wordPrefix, int expectedIndex) {
+        assertEquals(expectedIndex, FormatUtils.indexOfWordPrefix(text, wordPrefix));
+    }
+}
diff --git a/tests/src/com/android/contacts/common/format/TextHighlighterTest.java b/tests/src/com/android/contacts/common/format/TextHighlighterTest.java
new file mode 100644
index 0000000..8450697
--- /dev/null
+++ b/tests/src/com/android/contacts/common/format/TextHighlighterTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2011 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 src.com.android.contacts.common.format;
+
+import android.graphics.Typeface;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.SpannableString;
+
+import com.android.contacts.common.format.SpannedTestUtils;
+import com.android.contacts.common.format.TextHighlighter;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit tests for {@link TextHighlighter}.
+ */
+@SmallTest
+public class TextHighlighterTest extends TestCase {
+    private static final int TEST_PREFIX_HIGHLIGHT_COLOR = 0xFF0000;
+
+    /** The object under test. */
+    private TextHighlighter mTextHighlighter;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mTextHighlighter = new TextHighlighter(Typeface.BOLD);
+    }
+
+    public void testApply_EmptyPrefix() {
+        CharSequence seq = mTextHighlighter.applyPrefixHighlight("", "");
+        SpannedTestUtils.assertNotSpanned(seq, "");
+
+        seq = mTextHighlighter.applyPrefixHighlight("test", "");
+        SpannedTestUtils.assertNotSpanned(seq, "test");
+    }
+
+    public void testSetText_MatchingPrefix() {
+        final String prefix = "TE";
+
+        CharSequence seq = mTextHighlighter.applyPrefixHighlight("test", prefix);
+        SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
+
+        seq = mTextHighlighter.applyPrefixHighlight("Test", prefix);
+        SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
+
+        seq = mTextHighlighter.applyPrefixHighlight("TEst", prefix);
+        SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
+
+        seq = mTextHighlighter.applyPrefixHighlight("a test", prefix);
+        SpannedTestUtils.assertPrefixSpan(seq, 2, 3);
+    }
+
+    public void testSetText_NotMatchingPrefix() {
+        final CharSequence seq = mTextHighlighter.applyPrefixHighlight("test", "TA");
+        SpannedTestUtils.assertNotSpanned(seq, "test");
+    }
+
+    public void testSetText_FirstMatch() {
+        final CharSequence seq = mTextHighlighter.applyPrefixHighlight(
+                "a test's tests are not tests", "TE");
+        SpannedTestUtils.assertPrefixSpan(seq, 2, 3);
+    }
+
+    public void testSetText_NoMatchingMiddleOfWord() {
+        final String prefix = "TE";
+        CharSequence seq = mTextHighlighter.applyPrefixHighlight("atest", prefix);
+        SpannedTestUtils.assertNotSpanned(seq, "atest");
+
+        seq = mTextHighlighter.applyPrefixHighlight("atest otest", prefix);
+        SpannedTestUtils.assertNotSpanned(seq, "atest otest");
+
+        seq = mTextHighlighter.applyPrefixHighlight("atest test", prefix);
+        SpannedTestUtils.assertPrefixSpan(seq, 6, 7);
+    }
+
+    public void testSetMask_Highlight() {
+        final SpannableString testString1 = new SpannableString("alongtest");
+        mTextHighlighter.applyMaskingHighlight(testString1, 2, 4);
+        assertEquals(2, SpannedTestUtils.getNextTransition(testString1, 0));
+        assertEquals(4, SpannedTestUtils.getNextTransition(testString1, 2));
+
+        mTextHighlighter.applyMaskingHighlight(testString1, 3, 6);
+        assertEquals(2, SpannedTestUtils.getNextTransition(testString1, 0));
+        assertEquals(4, SpannedTestUtils.getNextTransition(testString1, 3));
+
+        mTextHighlighter.applyMaskingHighlight(testString1, 4, 5);
+        assertEquals(3, SpannedTestUtils.getNextTransition(testString1, 2));
+
+        mTextHighlighter.applyMaskingHighlight(testString1, 7, 8);
+        assertEquals(6, SpannedTestUtils.getNextTransition(testString1, 5));
+        assertEquals(7, SpannedTestUtils.getNextTransition(testString1, 6));
+        assertEquals(8, SpannedTestUtils.getNextTransition(testString1, 7));
+    }
+}
diff --git a/tests/src/com/android/contacts/common/list/ContactListItemViewTest.java b/tests/src/com/android/contacts/common/list/ContactListItemViewTest.java
new file mode 100644
index 0000000..c9b2e6d
--- /dev/null
+++ b/tests/src/com/android/contacts/common/list/ContactListItemViewTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.list;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.provider.ContactsContract;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.widget.TextView;
+
+import com.android.contacts.common.format.SpannedTestUtils;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+/**
+ * Unit tests for {@link com.android.contacts.common.list.ContactListItemView}.
+ *
+ * It uses an {@link ActivityInstrumentationTestCase2} for {@link PeopleActivity} because we need
+ * to have the style properly setup.
+ */
+@LargeTest
+public class ContactListItemViewTest extends AndroidTestCase {
+
+    //private IntegrationTestUtils mUtils;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // This test requires that the screen be turned on.
+        //mUtils = new IntegrationTestUtils(getInstrumentation());
+        //mUtils.acquireScreenWakeLock(getInstrumentation().getTargetContext());
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        //mUtils.releaseScreenWakeLock();
+        super.tearDown();
+    }
+
+    public void testShowDisplayName_Simple() {
+        Cursor cursor = createCursor("John Doe", "Doe John");
+        ContactListItemView view = createView();
+
+        view.showDisplayName(cursor, 0, ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+        assertEquals(view.getNameTextView().getText().toString(), "John Doe");
+    }
+
+    public void testShowDisplayName_Unknown() {
+        Cursor cursor = createCursor("", "");
+        ContactListItemView view = createView();
+
+        view.setUnknownNameText("unknown");
+        view.showDisplayName(cursor, 0, ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+        assertEquals(view.getNameTextView().getText().toString(), "unknown");
+    }
+
+    public void testShowDisplayName_WithPrefix() {
+        Cursor cursor = createCursor("John Doe", "Doe John");
+        ContactListItemView view = createView();
+
+        view.setHighlightedPrefix("DOE");
+        view.showDisplayName(cursor, 0, ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+        CharSequence seq = view.getNameTextView().getText();
+        assertEquals("John Doe", seq.toString());
+        SpannedTestUtils.assertPrefixSpan(seq, 5, 7);
+        // Talback should be without span tags.
+        assertEquals("John Doe", view.getNameTextView().getContentDescription());
+        assertFalse("John Doe".equals(seq));
+    }
+
+    public void testShowDisplayName_WithPrefixReversed() {
+        Cursor cursor = createCursor("John Doe", "Doe John");
+        ContactListItemView view = createView();
+
+        view.setHighlightedPrefix("DOE");
+        view.showDisplayName(cursor, 0, ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+
+        CharSequence seq = view.getNameTextView().getText();
+        assertEquals("John Doe", seq.toString());
+        SpannedTestUtils.assertPrefixSpan(seq, 5, 7);
+    }
+
+    public void testSetSnippet_Prefix() {
+        ContactListItemView view = createView();
+        view.setHighlightedPrefix("TEST");
+        view.setSnippet("This is a test");
+
+        CharSequence seq = view.getSnippetView().getText();
+
+        assertEquals("This is a test", seq.toString());
+        SpannedTestUtils.assertPrefixSpan(seq, 10, 13);
+    }
+
+    /** Creates the view to be tested. */
+    private ContactListItemView createView() {
+        ContactListItemView view = new ContactListItemView(getContext());
+        // Set the name view to use a Spannable to represent its content.
+        view.getNameTextView().setText("", TextView.BufferType.SPANNABLE);
+        return view;
+    }
+
+    /**
+     * Creates a cursor containing a pair of values.
+     *
+     * @param name the name to insert in the first column of the cursor
+     * @param alternateName the alternate name to insert in the second column of the cursor
+     * @return the newly created cursor
+     */
+    private Cursor createCursor(String name, String alternateName) {
+        MatrixCursor cursor = new MatrixCursor(new String[]{"Name", "AlternateName"});
+        cursor.moveToFirst();
+        cursor.addRow(new Object[]{name, alternateName});
+        return cursor;
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/AccountTypeManagerTest.java b/tests/src/com/android/contacts/common/model/AccountTypeManagerTest.java
new file mode 100644
index 0000000..b8ebdd2
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/AccountTypeManagerTest.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model;
+
+import android.content.Context;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Test case for {@link com.android.contacts.common.model.AccountTypeManager}.
+ *
+ * adb shell am instrument -w -e class com.android.contacts.model.AccountTypeManagerTest \
+       com.android.contacts.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class AccountTypeManagerTest extends AndroidTestCase {
+    public void testFindAllInvitableAccountTypes() {
+        final Context c = getContext();
+
+        // Define account types.
+        final AccountType typeA = new MockAccountType("type1", null, null);
+        final AccountType typeB = new MockAccountType("type1", "minus", null);
+        final AccountType typeC = new MockAccountType("type2", null, "c");
+        final AccountType typeD = new MockAccountType("type2", "minus", "d");
+
+        // Define users
+        final AccountWithDataSet accountA1 = createAccountWithDataSet("a1", typeA);
+        final AccountWithDataSet accountC1 = createAccountWithDataSet("c1", typeC);
+        final AccountWithDataSet accountC2 = createAccountWithDataSet("c2", typeC);
+        final AccountWithDataSet accountD1 = createAccountWithDataSet("d1", typeD);
+
+        // empty - empty
+        Map<AccountTypeWithDataSet, AccountType> types =
+                AccountTypeManagerImpl.findAllInvitableAccountTypes(c,
+                        buildAccounts(), buildAccountTypes());
+        assertEquals(0, types.size());
+        try {
+            types.clear();
+            fail("Returned Map should be unmodifiable.");
+        } catch (UnsupportedOperationException ok) {
+        }
+
+        // No invite support, no accounts
+        verifyAccountTypes(
+                buildAccounts(),
+                buildAccountTypes(typeA, typeB)
+                /* empty */
+                );
+
+        // No invite support, with accounts
+        verifyAccountTypes(
+                buildAccounts(accountA1),
+                buildAccountTypes(typeA)
+                /* empty */
+                );
+
+        // With invite support, no accounts
+        verifyAccountTypes(
+                buildAccounts(),
+                buildAccountTypes(typeC)
+                /* empty */
+                );
+
+        // With invite support, 1 account
+        verifyAccountTypes(
+                buildAccounts(accountC1),
+                buildAccountTypes(typeC),
+                typeC
+                );
+
+        // With invite support, 2 account
+        verifyAccountTypes(
+                buildAccounts(accountC1, accountC2),
+                buildAccountTypes(typeC),
+                typeC
+                );
+
+        // Combinations...
+        verifyAccountTypes(
+                buildAccounts(accountA1),
+                buildAccountTypes(typeA, typeC)
+                /* empty */
+                );
+
+        verifyAccountTypes(
+                buildAccounts(accountC1, accountA1),
+                buildAccountTypes(typeA, typeC),
+                typeC
+                );
+
+        verifyAccountTypes(
+                buildAccounts(accountC1, accountA1),
+                buildAccountTypes(typeD, typeA, typeC),
+                typeC
+                );
+
+        verifyAccountTypes(
+                buildAccounts(accountC1, accountA1, accountD1),
+                buildAccountTypes(typeD, typeA, typeC, typeB),
+                typeC, typeD
+                );
+    }
+
+    private static AccountWithDataSet createAccountWithDataSet(String name, AccountType type) {
+        return new AccountWithDataSet(name, type.accountType, type.dataSet);
+    }
+
+    /**
+     * Array of {@link AccountType} -> {@link Map}
+     */
+    private static Map<AccountTypeWithDataSet, AccountType> buildAccountTypes(AccountType... types) {
+        final HashMap<AccountTypeWithDataSet, AccountType> result = Maps.newHashMap();
+        for (AccountType type : types) {
+            result.put(type.getAccountTypeAndDataSet(), type);
+        }
+        return result;
+    }
+
+    /**
+     * Array of {@link AccountWithDataSet} -> {@link Collection}
+     */
+    private static Collection<AccountWithDataSet> buildAccounts(AccountWithDataSet... accounts) {
+        final List<AccountWithDataSet> result = Lists.newArrayList();
+        for (AccountWithDataSet account : accounts) {
+            result.add(account);
+        }
+        return result;
+    }
+
+    /**
+     * Executes {@link AccountTypeManagerImpl#findInvitableAccountTypes} and verifies the
+     * result.
+     */
+    private void verifyAccountTypes(
+            Collection<AccountWithDataSet> accounts,
+            Map<AccountTypeWithDataSet, AccountType> types,
+            AccountType... expectedInvitableTypes
+            ) {
+        Map<AccountTypeWithDataSet, AccountType> result =
+                AccountTypeManagerImpl.findAllInvitableAccountTypes(getContext(), accounts, types);
+        for (AccountType type : expectedInvitableTypes) {
+            assertTrue("Result doesn't contain type=" + type.getAccountTypeAndDataSet(),
+                    result.containsKey(type.getAccountTypeAndDataSet()));
+        }
+        final int numExcessTypes = result.size() - expectedInvitableTypes.length;
+        assertEquals("Result contains " + numExcessTypes + " excess type(s)", 0, numExcessTypes);
+    }
+
+    private static class MockAccountType extends AccountType {
+        private final String mInviteContactActivityClassName;
+
+        public MockAccountType(String type, String dataSet, String inviteContactActivityClassName) {
+            accountType = type;
+            this.dataSet = dataSet;
+            mInviteContactActivityClassName = inviteContactActivityClassName;
+        }
+
+        @Override
+        public String getInviteContactActivityClassName() {
+            return mInviteContactActivityClassName;
+        }
+
+        @Override
+        public boolean isGroupMembershipEditable() {
+            return false;
+        }
+
+        @Override
+        public boolean areContactsWritable() {
+            return false;
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/AccountWithDataSetTest.java b/tests/src/com/android/contacts/common/model/AccountWithDataSetTest.java
new file mode 100644
index 0000000..e28f09e
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/AccountWithDataSetTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model;
+
+import android.os.Bundle;
+import android.test.AndroidTestCase;
+import android.test.MoreAsserts;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * Test case for {@link AccountWithDataSet}.
+ *
+ * adb shell am instrument -w -e class com.android.contacts.model.AccountWithDataSetTest \
+       com.android.contacts.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class AccountWithDataSetTest extends AndroidTestCase {
+    public void testStringifyAndUnstringify() {
+        AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
+        AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
+        AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
+
+        // stringify() & unstringify
+        AccountWithDataSet a1r = AccountWithDataSet.unstringify(a1.stringify());
+        AccountWithDataSet a2r = AccountWithDataSet.unstringify(a2.stringify());
+        AccountWithDataSet a3r = AccountWithDataSet.unstringify(a3.stringify());
+
+        assertEquals(a1, a1r);
+        assertEquals(a2, a2r);
+        assertEquals(a3, a3r);
+
+        MoreAsserts.assertNotEqual(a1, a2r);
+        MoreAsserts.assertNotEqual(a1, a3r);
+
+        MoreAsserts.assertNotEqual(a2, a1r);
+        MoreAsserts.assertNotEqual(a2, a3r);
+
+        MoreAsserts.assertNotEqual(a3, a1r);
+        MoreAsserts.assertNotEqual(a3, a2r);
+    }
+
+    public void testStringifyListAndUnstringify() {
+        AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
+        AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
+        AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
+
+        // Empty list
+        assertEquals(0, stringifyListAndUnstringify().size());
+
+        // 1 element
+        final List<AccountWithDataSet> listA = stringifyListAndUnstringify(a1);
+        assertEquals(1, listA.size());
+        assertEquals(a1, listA.get(0));
+
+        // 2 elements
+        final List<AccountWithDataSet> listB = stringifyListAndUnstringify(a2, a1);
+        assertEquals(2, listB.size());
+        assertEquals(a2, listB.get(0));
+        assertEquals(a1, listB.get(1));
+
+        // 3 elements
+        final List<AccountWithDataSet> listC = stringifyListAndUnstringify(a3, a2, a1);
+        assertEquals(3, listC.size());
+        assertEquals(a3, listC.get(0));
+        assertEquals(a2, listC.get(1));
+        assertEquals(a1, listC.get(2));
+    }
+
+    private static List<AccountWithDataSet> stringifyListAndUnstringify(
+            AccountWithDataSet... accounts) {
+
+        List<AccountWithDataSet> list = Lists.newArrayList(accounts);
+        return AccountWithDataSet.unstringifyList(AccountWithDataSet.stringifyList(list));
+    }
+
+    public void testParcelable() {
+        AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
+        AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
+        AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
+
+        // Parcel them & unpercel.
+        final Bundle b = new Bundle();
+        b.putParcelable("a1", a1);
+        b.putParcelable("a2", a2);
+        b.putParcelable("a3", a3);
+
+        AccountWithDataSet a1r = b.getParcelable("a1");
+        AccountWithDataSet a2r = b.getParcelable("a2");
+        AccountWithDataSet a3r = b.getParcelable("a3");
+
+        assertEquals(a1, a1r);
+        assertEquals(a2, a2r);
+        assertEquals(a3, a3r);
+
+        MoreAsserts.assertNotEqual(a1, a2r);
+        MoreAsserts.assertNotEqual(a1, a3r);
+
+        MoreAsserts.assertNotEqual(a2, a1r);
+        MoreAsserts.assertNotEqual(a2, a3r);
+
+        MoreAsserts.assertNotEqual(a3, a1r);
+        MoreAsserts.assertNotEqual(a3, a2r);
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/ContactLoaderTest.java b/tests/src/com/android/contacts/common/model/ContactLoaderTest.java
new file mode 100644
index 0000000..9878a12
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/ContactLoaderTest.java
@@ -0,0 +1,433 @@
+/*
+ * 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.contacts.common.model;
+
+import android.content.ContentUris;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.DisplayNameSources;
+import android.provider.ContactsContract.RawContacts;
+import android.provider.ContactsContract.StatusUpdates;
+import android.test.LoaderTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.BaseAccountType;
+import com.android.contacts.common.testing.InjectedServices;
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockContentProvider;
+import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+import com.android.contacts.common.test.mocks.MockAccountTypeManager;
+import com.android.contacts.common.util.Constants;
+
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Runs ContactLoader tests for the the contact-detail and editor view.
+ */
+@LargeTest
+public class ContactLoaderTest extends LoaderTestCase {
+    private static final long CONTACT_ID = 1;
+    private static final long RAW_CONTACT_ID = 11;
+    private static final long DATA_ID = 21;
+    private static final String LOOKUP_KEY = "aa%12%@!";
+
+    private ContactsMockContext mMockContext;
+    private MockContentProvider mContactsProvider;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mMockContext = new ContactsMockContext(getContext());
+        mContactsProvider = mMockContext.getContactsProvider();
+
+        InjectedServices services = new InjectedServices();
+        AccountType accountType = new BaseAccountType() {
+            @Override
+            public boolean areContactsWritable() {
+                return false;
+            }
+        };
+        accountType.accountType = "mockAccountType";
+
+        AccountWithDataSet account =
+                new AccountWithDataSet("mockAccountName", "mockAccountType", null);
+
+        AccountTypeManager.setInstanceForTest(
+                new MockAccountTypeManager(
+                        new AccountType[]{accountType}, new AccountWithDataSet[]{account}));
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mMockContext = null;
+        mContactsProvider = null;
+        super.tearDown();
+    }
+
+    private Contact assertLoadContact(Uri uri) {
+        final ContactLoader loader = new ContactLoader(mMockContext, uri, true);
+        return getLoaderResultSynchronously(loader);
+    }
+
+    public void testNullUri() {
+        Contact result = assertLoadContact(null);
+        assertTrue(result.isError());
+    }
+
+    public void testEmptyUri() {
+        Contact result = assertLoadContact(Uri.EMPTY);
+        assertTrue(result.isError());
+    }
+
+    public void testInvalidUri() {
+        Contact result = assertLoadContact(Uri.parse("content://wtf"));
+        assertTrue(result.isError());
+    }
+
+    public void testLoadContactWithContactIdUri() {
+        // Use content Uris that only contain the ID
+        final Uri baseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, CONTACT_ID);
+        final Uri entityUri = Uri.withAppendedPath(baseUri, Contacts.Entity.CONTENT_DIRECTORY);
+        final Uri lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY),
+                CONTACT_ID);
+
+        ContactQueries queries = new ContactQueries();
+        mContactsProvider.expectTypeQuery(baseUri, Contacts.CONTENT_ITEM_TYPE);
+        queries.fetchAllData(entityUri, CONTACT_ID, RAW_CONTACT_ID, DATA_ID, LOOKUP_KEY);
+
+        Contact contact = assertLoadContact(baseUri);
+
+        assertEquals(CONTACT_ID, contact.getId());
+        assertEquals(RAW_CONTACT_ID, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals(LOOKUP_KEY, contact.getLookupKey());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        assertEquals(1, contact.getStatuses().size());
+        mContactsProvider.verify();
+    }
+
+    public void testLoadContactWithOldStyleUri() {
+        // Use content Uris that only contain the ID but use the format used in Donut
+        final Uri legacyUri = ContentUris.withAppendedId(
+                Uri.parse("content://contacts"), RAW_CONTACT_ID);
+        final Uri rawContactUri = ContentUris.withAppendedId(
+                RawContacts.CONTENT_URI, RAW_CONTACT_ID);
+        final Uri baseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, CONTACT_ID);
+        final Uri lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY),
+                CONTACT_ID);
+        final Uri entityUri = Uri.withAppendedPath(lookupUri, Contacts.Entity.CONTENT_DIRECTORY);
+
+        ContactQueries queries = new ContactQueries();
+        queries.fetchContactIdAndLookupFromRawContactUri(rawContactUri, CONTACT_ID, LOOKUP_KEY);
+        queries.fetchAllData(entityUri, CONTACT_ID, RAW_CONTACT_ID, DATA_ID, LOOKUP_KEY);
+
+        Contact contact = assertLoadContact(legacyUri);
+
+        assertEquals(CONTACT_ID, contact.getId());
+        assertEquals(RAW_CONTACT_ID, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals(LOOKUP_KEY, contact.getLookupKey());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        assertEquals(1, contact.getStatuses().size());
+        if (CompatUtils.isMarshmallowCompatible()) {
+            assertEquals(
+                    1, contact.getRawContacts().get(0).getDataItems().get(0).getCarrierPresence());
+        }
+        mContactsProvider.verify();
+    }
+
+    public void testLoadContactWithRawContactIdUri() {
+        // Use content Uris that only contain the ID but use the format used in Donut
+        final Uri rawContactUri = ContentUris.withAppendedId(
+                RawContacts.CONTENT_URI, RAW_CONTACT_ID);
+        final Uri baseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, CONTACT_ID);
+        final Uri lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY),
+                CONTACT_ID);
+        final Uri entityUri = Uri.withAppendedPath(lookupUri, Contacts.Entity.CONTENT_DIRECTORY);
+
+        ContactQueries queries = new ContactQueries();
+        mContactsProvider.expectTypeQuery(rawContactUri, RawContacts.CONTENT_ITEM_TYPE);
+        queries.fetchContactIdAndLookupFromRawContactUri(rawContactUri, CONTACT_ID, LOOKUP_KEY);
+        queries.fetchAllData(entityUri, CONTACT_ID, RAW_CONTACT_ID, DATA_ID, LOOKUP_KEY);
+
+        Contact contact = assertLoadContact(rawContactUri);
+
+        assertEquals(CONTACT_ID, contact.getId());
+        assertEquals(RAW_CONTACT_ID, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals(LOOKUP_KEY, contact.getLookupKey());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        assertEquals(1, contact.getStatuses().size());
+        mContactsProvider.verify();
+    }
+
+    public void testLoadContactWithContactLookupUri() {
+        // Use lookup-style Uris that do not contain the Contact-ID
+        final Uri baseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, CONTACT_ID);
+        final Uri lookupNoIdUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY);
+        final Uri lookupUri = ContentUris.withAppendedId(lookupNoIdUri, CONTACT_ID);
+        final Uri entityUri = Uri.withAppendedPath(
+                lookupNoIdUri, Contacts.Entity.CONTENT_DIRECTORY);
+
+        ContactQueries queries = new ContactQueries();
+        mContactsProvider.expectTypeQuery(lookupNoIdUri, Contacts.CONTENT_ITEM_TYPE);
+        queries.fetchAllData(entityUri, CONTACT_ID, RAW_CONTACT_ID, DATA_ID, LOOKUP_KEY);
+
+        Contact contact = assertLoadContact(lookupNoIdUri);
+
+        assertEquals(CONTACT_ID, contact.getId());
+        assertEquals(RAW_CONTACT_ID, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals(LOOKUP_KEY, contact.getLookupKey());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        assertEquals(1, contact.getStatuses().size());
+        mContactsProvider.verify();
+    }
+
+    public void testLoadContactWithContactLookupAndIdUri() {
+        // Use lookup-style Uris that also contain the Contact-ID
+        final Uri baseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, CONTACT_ID);
+        final Uri lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY),
+                CONTACT_ID);
+        final Uri entityUri = Uri.withAppendedPath(lookupUri, Contacts.Entity.CONTENT_DIRECTORY);
+
+        ContactQueries queries = new ContactQueries();
+        mContactsProvider.expectTypeQuery(lookupUri, Contacts.CONTENT_ITEM_TYPE);
+        queries.fetchAllData(entityUri, CONTACT_ID, RAW_CONTACT_ID, DATA_ID, LOOKUP_KEY);
+
+        Contact contact = assertLoadContact(lookupUri);
+
+        assertEquals(CONTACT_ID, contact.getId());
+        assertEquals(RAW_CONTACT_ID, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals(LOOKUP_KEY, contact.getLookupKey());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        assertEquals(1, contact.getStatuses().size());
+        mContactsProvider.verify();
+    }
+
+    public void testLoadContactWithContactLookupWithIncorrectIdUri() {
+        // Use lookup-style Uris that contain incorrect Contact-ID
+        // (we want to ensure that still the correct contact is chosen)
+        final long wrongContactId = 2;
+        final long wrongRawContactId = 12;
+
+        final String wrongLookupKey = "ab%12%@!";
+        final Uri baseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, CONTACT_ID);
+        final Uri wrongBaseUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, wrongContactId);
+        final Uri lookupUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY),
+                CONTACT_ID);
+        final Uri lookupWithWrongIdUri = ContentUris.withAppendedId(
+                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, LOOKUP_KEY),
+                wrongContactId);
+        final Uri entityUri = Uri.withAppendedPath(lookupWithWrongIdUri,
+                Contacts.Entity.CONTENT_DIRECTORY);
+
+        ContactQueries queries = new ContactQueries();
+        mContactsProvider.expectTypeQuery(lookupWithWrongIdUri, Contacts.CONTENT_ITEM_TYPE);
+        queries.fetchAllData(entityUri, CONTACT_ID, RAW_CONTACT_ID, DATA_ID, LOOKUP_KEY);
+
+        Contact contact = assertLoadContact(lookupWithWrongIdUri);
+
+        assertEquals(CONTACT_ID, contact.getId());
+        assertEquals(RAW_CONTACT_ID, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals(LOOKUP_KEY, contact.getLookupKey());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        assertEquals(1, contact.getStatuses().size());
+
+        mContactsProvider.verify();
+    }
+
+    public void testLoadContactReturnDirectoryContactWithoutDisplayName() throws JSONException {
+        // Use lookup-style Uri that contains encoded json object which encapsulates the
+        // directory contact. The test json object is:
+        // {
+        //   display_name_source": 40,
+        //   "vnd.android.cursor.item\/contact":{"email":{"data1":"test@google.com" }}
+        // }
+        JSONObject itemJson = new JSONObject();
+        itemJson.put("email", new JSONObject().put("data1", "test@google.com"));
+        JSONObject json = new JSONObject();
+        json.put(Contacts.NAME_RAW_CONTACT_ID, CONTACT_ID);
+        json.put(Contacts.DISPLAY_NAME_SOURCE, DisplayNameSources.STRUCTURED_NAME);
+        json.put(Contacts.CONTENT_ITEM_TYPE, itemJson);
+
+        final Uri lookupUri = Contacts.CONTENT_LOOKUP_URI.buildUpon()
+                .encodedFragment(json.toString())
+                .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, "1")
+                .appendPath(Constants.LOOKUP_URI_ENCODED).build();
+
+        mContactsProvider.expectTypeQuery(lookupUri, Contacts.CONTENT_ITEM_TYPE);
+        Contact contact = assertLoadContact(lookupUri);
+
+        assertEquals(-1, contact.getId());
+        assertEquals(-1, contact.getNameRawContactId());
+        assertEquals(DisplayNameSources.STRUCTURED_NAME, contact.getDisplayNameSource());
+        assertEquals("", contact.getDisplayName());
+        assertEquals(lookupUri, contact.getLookupUri());
+        assertEquals(1, contact.getRawContacts().size());
+        mContactsProvider.verify();
+    }
+
+    class ContactQueries {
+        public void fetchAllData(
+                Uri baseUri, long contactId, long rawContactId, long dataId, String encodedLookup) {
+            final String[] COLUMNS_INTERNAL = new String[] {
+                    Contacts.NAME_RAW_CONTACT_ID, Contacts.DISPLAY_NAME_SOURCE,
+                    Contacts.LOOKUP_KEY, Contacts.DISPLAY_NAME,
+                    Contacts.DISPLAY_NAME_ALTERNATIVE, Contacts.PHONETIC_NAME,
+                    Contacts.PHOTO_ID, Contacts.STARRED, Contacts.CONTACT_PRESENCE,
+                    Contacts.CONTACT_STATUS, Contacts.CONTACT_STATUS_TIMESTAMP,
+                    Contacts.CONTACT_STATUS_RES_PACKAGE, Contacts.CONTACT_STATUS_LABEL,
+
+                    Contacts.Entity.CONTACT_ID,
+                    Contacts.Entity.RAW_CONTACT_ID,
+
+                    RawContacts.ACCOUNT_NAME, RawContacts.ACCOUNT_TYPE,
+                    RawContacts.DATA_SET,
+                    RawContacts.DIRTY, RawContacts.VERSION, RawContacts.SOURCE_ID,
+                    RawContacts.SYNC1, RawContacts.SYNC2, RawContacts.SYNC3, RawContacts.SYNC4,
+                    RawContacts.DELETED,
+
+                    Contacts.Entity.DATA_ID,
+
+                    Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4, Data.DATA5,
+                    Data.DATA6, Data.DATA7, Data.DATA8, Data.DATA9, Data.DATA10,
+                    Data.DATA11, Data.DATA12, Data.DATA13, Data.DATA14, Data.DATA15,
+                    Data.SYNC1, Data.SYNC2, Data.SYNC3, Data.SYNC4,
+                    Data.DATA_VERSION, Data.IS_PRIMARY,
+                    Data.IS_SUPER_PRIMARY, Data.MIMETYPE,
+
+                    GroupMembership.GROUP_SOURCE_ID,
+
+                    Data.PRESENCE, Data.CHAT_CAPABILITY,
+                    Data.STATUS, Data.STATUS_RES_PACKAGE, Data.STATUS_ICON,
+                    Data.STATUS_LABEL, Data.STATUS_TIMESTAMP,
+
+                    Contacts.PHOTO_URI,
+
+                    Contacts.SEND_TO_VOICEMAIL,
+                    Contacts.CUSTOM_RINGTONE,
+                    Contacts.IS_USER_PROFILE,
+
+                    Data.TIMES_USED,
+                    Data.LAST_TIME_USED
+            };
+
+            List<String> projectionList = Lists.newArrayList(COLUMNS_INTERNAL);
+            if (CompatUtils.isMarshmallowCompatible()) {
+                projectionList.add(Data.CARRIER_PRESENCE);
+            }
+            final String[] COLUMNS = projectionList.toArray(new String[projectionList.size()]);
+
+            final Object[] ROWS_INTERNAL = new Object[] {
+                    rawContactId, 40,
+                    "aa%12%@!", "John Doe", "Doe, John", "jdo",
+                    0, 0, StatusUpdates.AVAILABLE,
+                    "Having lunch", 0,
+                    "mockPkg1", 10,
+
+                    contactId,
+                    rawContactId,
+
+                    "mockAccountName", "mockAccountType", null,
+                    0, 1, 0,
+                    "sync1", "sync2", "sync3", "sync4",
+                    0,
+
+                    dataId,
+
+                    "dat1", "dat2", "dat3", "dat4", "dat5",
+                    "dat6", "dat7", "dat8", "dat9", "dat10",
+                    "dat11", "dat12", "dat13", "dat14", "dat15",
+                    "syn1", "syn2", "syn3", "syn4",
+
+                    0, 0,
+                    0, StructuredName.CONTENT_ITEM_TYPE,
+
+                    "groupId",
+
+                    StatusUpdates.INVISIBLE, null,
+                    "Having dinner", "mockPkg3", 0,
+                    20, 0,
+
+                    "content:some.photo.uri",
+
+                    0,
+                    null,
+                    0,
+
+                    0,
+                    0
+            };
+
+            List<Object> rowsList = Lists.newArrayList(ROWS_INTERNAL);
+            if (CompatUtils.isMarshmallowCompatible()) {
+                rowsList.add(Data.CARRIER_PRESENCE_VT_CAPABLE);
+            }
+            final Object[] ROWS = rowsList.toArray(new Object[rowsList.size()]);
+
+            mContactsProvider.expectQuery(baseUri)
+                    .withProjection(COLUMNS)
+                    .withSortOrder(Contacts.Entity.RAW_CONTACT_ID)
+                    .returnRow(ROWS);
+        }
+
+        void fetchLookupAndId(final Uri sourceUri, final long expectedContactId,
+                final String expectedEncodedLookup) {
+            mContactsProvider.expectQuery(sourceUri)
+                    .withProjection(Contacts.LOOKUP_KEY, Contacts._ID)
+                    .returnRow(expectedEncodedLookup, expectedContactId);
+        }
+
+        void fetchContactIdAndLookupFromRawContactUri(final Uri rawContactUri,
+                final long expectedContactId, final String expectedEncodedLookup) {
+            // TODO: use a lighter query by joining rawcontacts with contacts in provider
+            // (See ContactContracts.java)
+            final Uri dataUri = Uri.withAppendedPath(rawContactUri,
+                    RawContacts.Data.CONTENT_DIRECTORY);
+            mContactsProvider.expectQuery(dataUri)
+                    .withProjection(RawContacts.CONTACT_ID, Contacts.LOOKUP_KEY)
+                    .returnRow(expectedContactId, expectedEncodedLookup);
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/RawContactTest.java b/tests/src/com/android/contacts/common/model/RawContactTest.java
new file mode 100644
index 0000000..1c698c0
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/RawContactTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2012 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 src.com.android.contacts.common.model;
+
+import android.content.ContentValues;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.contacts.common.model.RawContact;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for {@link RawContact}.
+ */
+public class RawContactTest extends TestCase {
+
+    private RawContact buildRawContact() {
+        final ContentValues values = new ContentValues();
+        values.put("key1", "value1");
+        values.put("key2", "value2");
+
+        final ContentValues dataItem = new ContentValues();
+        dataItem.put("key3", "value3");
+        dataItem.put("key4", "value4");
+
+        final RawContact contact = new RawContact(values);
+        contact.addDataItemValues(dataItem);
+
+        return contact;
+    }
+
+    private RawContact buildRawContact2() {
+        final ContentValues values = new ContentValues();
+        values.put("key11", "value11");
+        values.put("key22", "value22");
+
+        final ContentValues dataItem = new ContentValues();
+        dataItem.put("key33", "value33");
+        dataItem.put("key44", "value44");
+
+        final RawContact contact = new RawContact(values);
+        contact.addDataItemValues(dataItem);
+
+        return contact;
+    }
+
+    public void testNotEquals() {
+        final RawContact one = buildRawContact();
+        final RawContact two = buildRawContact2();
+        assertFalse(one.equals(two));
+    }
+
+    public void testEquals() {
+        assertEquals(buildRawContact(), buildRawContact());
+    }
+
+    public void testParcelable() {
+        assertParcelableEquals(buildRawContact());
+    }
+
+    private RawContact.NamedDataItem buildNamedDataItem() {
+        final ContentValues values = new ContentValues();
+        values.put("key1", "value1");
+        values.put("key2", "value2");
+        final Uri uri = Uri.fromParts("content:", "ssp", "fragment");
+
+        return new RawContact.NamedDataItem(uri, values);
+    }
+
+    private RawContact.NamedDataItem buildNamedDataItem2() {
+        final ContentValues values = new ContentValues();
+        values.put("key11", "value11");
+        values.put("key22", "value22");
+        final Uri uri = Uri.fromParts("content:", "blah", "blah");
+
+        return new RawContact.NamedDataItem(uri, values);
+    }
+
+    public void testNamedDataItemEquals() {
+        assertEquals(buildNamedDataItem(), buildNamedDataItem());
+    }
+
+    public void testNamedDataItemNotEquals() {
+        assertFalse(buildNamedDataItem().equals(buildNamedDataItem2()));
+    }
+
+    public void testNamedDataItemParcelable() {
+        assertParcelableEquals(buildNamedDataItem());
+    }
+
+    private void assertParcelableEquals(Parcelable parcelable) {
+        final Parcel parcel = Parcel.obtain();
+        try {
+            parcel.writeParcelable(parcelable, 0);
+            parcel.setDataPosition(0);
+
+            Parcelable out = parcel.readParcelable(parcelable.getClass().getClassLoader());
+            assertEquals(parcelable, out);
+        } finally {
+            parcel.recycle();
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/ValuesDeltaTests.java b/tests/src/com/android/contacts/common/model/ValuesDeltaTests.java
new file mode 100644
index 0000000..77bf456
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/ValuesDeltaTests.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.model;
+
+import android.content.ContentProviderOperation.Builder;
+import android.content.ContentValues;
+import android.os.Build;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Data;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.model.BuilderWrapper;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for  {@link ValuesDelta}. These tests
+ * focus on passing changes across {@link android.os.Parcel}, and verifying that they
+ * correctly build expected "diff" operations.
+ */
+@SmallTest
+public class ValuesDeltaTests extends TestCase {
+
+    public static final long TEST_PHONE_ID = 24;
+
+    public static final String TEST_PHONE_NUMBER_1 = "218-555-1111";
+    public static final String TEST_PHONE_NUMBER_2 = "218-555-2222";
+
+    public void testValuesDiffInsert() {
+        final ContentValues after = new ContentValues();
+        after.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+
+        final ValuesDelta values = ValuesDelta.fromAfter(after);
+
+        // Should produce an insert action
+        final BuilderWrapper builderWrapper = values.buildDiffWrapper(Data.CONTENT_URI);
+        final boolean isInsert = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
+                ? builderWrapper.getBuilder().build().isInsert()
+                : builderWrapper.getType() == CompatUtils.TYPE_INSERT;
+        assertTrue("Didn't produce insert action", isInsert);
+    }
+
+    /**
+     * Test that {@link ValuesDelta#buildDiff(android.net.Uri)} is correctly
+     * built for insert, update, and delete cases. Note this only tests behavior
+     * for individual {@link Data} rows.
+     */
+    public void testValuesDiffNone() {
+        final ContentValues before = new ContentValues();
+        before.put(Data._ID, TEST_PHONE_ID);
+        before.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
+
+        final ValuesDelta values = ValuesDelta.fromBefore(before);
+
+        // None action shouldn't produce a builder
+        final Builder builder = values.buildDiff(Data.CONTENT_URI);
+        assertNull("None action produced a builder", builder);
+    }
+
+    public void testValuesDiffUpdate() {
+        final ContentValues before = new ContentValues();
+        before.put(Data._ID, TEST_PHONE_ID);
+        before.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
+
+        final ValuesDelta values = ValuesDelta.fromBefore(before);
+        values.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
+
+        // Should produce an update action
+        final BuilderWrapper builderWrapper = values.buildDiffWrapper(Data.CONTENT_URI);
+        final boolean isUpdate = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
+                ? builderWrapper.getBuilder().build().isUpdate()
+                : builderWrapper.getType() == CompatUtils.TYPE_UPDATE;
+        assertTrue("Didn't produce update action", isUpdate);
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/account/AccountTypeTest.java b/tests/src/com/android/contacts/common/model/account/AccountTypeTest.java
new file mode 100644
index 0000000..e204722
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/account/AccountTypeTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model.account;
+
+import android.content.Context;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.tests.R;
+
+/**
+ * Test case for {@link AccountType}.
+ *
+ * adb shell am instrument -w -e class com.android.contacts.model.AccountTypeTest \
+       com.android.contacts.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class AccountTypeTest extends InstrumentationTestCase {
+    public void testGetResourceText() {
+        // In this test we use the test package itself as an external package.
+        final String packageName = getInstrumentation().getContext().getPackageName();
+
+        final Context c = getInstrumentation().getTargetContext();
+        final String DEFAULT = "ABC";
+
+        // Package name null, resId -1, use the default
+        assertEquals(DEFAULT, AccountType.getResourceText(c, null, -1, DEFAULT));
+
+        // Resource ID -1, use the default
+        assertEquals(DEFAULT, AccountType.getResourceText(c, packageName, -1, DEFAULT));
+
+        // Load from an external package.  (here, we use this test package itself)
+        final int externalResID = R.string.test_string;
+        assertEquals(getInstrumentation().getContext().getString(externalResID),
+                AccountType.getResourceText(c, packageName, externalResID, DEFAULT));
+
+        // Load from the contacts package itself.
+        final int internalResId = com.android.contacts.common.R.string.contactsList;
+        assertEquals(c.getString(internalResId),
+                AccountType.getResourceText(c, null, internalResId, DEFAULT));
+    }
+
+    /**
+     * Verify if {@link AccountType#getInviteContactActionLabel} correctly gets the resource ID
+     * from {@link AccountType#getInviteContactActionResId}
+     */
+    public void testGetInviteContactActionLabel() {
+        final String packageName = getInstrumentation().getContext().getPackageName();
+        final Context c = getInstrumentation().getTargetContext();
+
+        final int externalResID = R.string.test_string;
+
+        AccountType accountType = new AccountType() {
+            {
+                resourcePackageName = packageName;
+                syncAdapterPackageName = packageName;
+            }
+            @Override protected int getInviteContactActionResId() {
+                return externalResID;
+            }
+
+            @Override public boolean isGroupMembershipEditable() {
+                return false;
+            }
+
+            @Override public boolean areContactsWritable() {
+                return false;
+            }
+        };
+
+        assertEquals(getInstrumentation().getContext().getString(externalResID),
+                accountType.getInviteContactActionLabel(c));
+    }
+
+    public void testDisplayLabelComparator() {
+        final AccountTypeForDisplayLabelTest EMPTY = new AccountTypeForDisplayLabelTest("");
+        final AccountTypeForDisplayLabelTest NULL = new AccountTypeForDisplayLabelTest(null);
+        final AccountTypeForDisplayLabelTest AA = new AccountTypeForDisplayLabelTest("aa");
+        final AccountTypeForDisplayLabelTest BBB = new AccountTypeForDisplayLabelTest("bbb");
+        final AccountTypeForDisplayLabelTest C = new AccountTypeForDisplayLabelTest("c");
+
+        assertTrue(compareDisplayLabel(AA, BBB) < 0);
+        assertTrue(compareDisplayLabel(BBB, C) < 0);
+        assertTrue(compareDisplayLabel(AA, C) < 0);
+        assertTrue(compareDisplayLabel(AA, AA) == 0);
+        assertTrue(compareDisplayLabel(BBB, AA) > 0);
+
+        assertTrue(compareDisplayLabel(EMPTY, AA) < 0);
+        assertTrue(compareDisplayLabel(EMPTY, NULL) == 0);
+    }
+
+    private int compareDisplayLabel(AccountType lhs, AccountType rhs) {
+        return new AccountType.DisplayLabelComparator(
+                getInstrumentation().getTargetContext()).compare(lhs, rhs);
+    }
+
+    private class AccountTypeForDisplayLabelTest extends AccountType {
+        private final String mDisplayLabel;
+
+        public AccountTypeForDisplayLabelTest(String displayLabel) {
+            mDisplayLabel = displayLabel;
+        }
+
+        @Override
+        public CharSequence getDisplayLabel(Context context) {
+            return mDisplayLabel;
+        }
+
+        @Override
+        public boolean isGroupMembershipEditable() {
+            return false;
+        }
+
+        @Override
+        public boolean areContactsWritable() {
+            return false;
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/account/ExternalAccountTypeTest.java b/tests/src/com/android/contacts/common/model/account/ExternalAccountTypeTest.java
new file mode 100644
index 0000000..50a5110
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/account/ExternalAccountTypeTest.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.model.account;
+
+import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.test.suitebuilder.annotation.Suppress;
+import android.util.Log;
+
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.tests.R;
+import com.google.common.base.Objects;
+
+import java.util.List;
+
+/**
+ * Test case for {@link com.android.contacts.common.model.account.ExternalAccountType}.
+ *
+ * adb shell am instrument -w -e class com.android.contacts.model.ExternalAccountTypeTest \
+       com.android.contacts.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class ExternalAccountTypeTest extends InstrumentationTestCase {
+
+    @Suppress
+    public void testResolveExternalResId() {
+        final Context c = getInstrumentation().getTargetContext();
+        // In this test we use the test package itself as an external package.
+        final String packageName = getInstrumentation().getContext().getPackageName();
+
+        // Resource name empty.
+        assertEquals(-1, ExternalAccountType.resolveExternalResId(c, null, packageName, ""));
+        assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "", packageName, ""));
+
+        // Name doesn't begin with '@'
+        assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "x", packageName, ""));
+
+        // Invalid resource name
+        assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "@", packageName, ""));
+        assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "@a", packageName, ""));
+        assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "@a/b", packageName, ""));
+
+        // Valid resource name
+        assertEquals(R.string.test_string, ExternalAccountType.resolveExternalResId(c,
+                "@string/test_string", packageName, ""));
+    }
+
+    /**
+     * Initialize with an invalid package name and see if type will be initialized, but empty.
+     */
+    public void testNoPackage() {
+        final ExternalAccountType type = new ExternalAccountType(getInstrumentation().getTargetContext(),
+                "!!!no such package name!!!", false);
+        assertTrue(type.isInitialized());
+    }
+
+    /**
+     * Initialize with the test package itself and see if EditSchema is correctly parsed.
+     */
+    @Suppress
+    public void testEditSchema() {
+        final ExternalAccountType type = new ExternalAccountType(getInstrumentation().getTargetContext(),
+                getInstrumentation().getContext().getPackageName(), false);
+
+        assertTrue(type.isInitialized());
+
+        // Let's just check if the DataKinds are registered.
+        assertNotNull(type.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME));
+        assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME));
+        assertNotNull(type.getKindForMimetype(Email.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Im.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Organization.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Photo.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Note.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Website.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(SipAddress.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Event.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(Relation.CONTENT_ITEM_TYPE));
+    }
+
+    /**
+     * Initialize with "contacts_fallback.xml" and compare the DataKinds to those of
+     * {@link com.android.contacts.common.model.account.FallbackAccountType}.
+     */
+    public void testEditSchema_fallback() {
+        final ExternalAccountType type = new ExternalAccountType(getInstrumentation().getTargetContext(),
+                getInstrumentation().getContext().getPackageName(), false,
+                getInstrumentation().getContext().getResources().getXml(R.xml.contacts_fallback)
+                );
+
+        assertTrue(type.isInitialized());
+
+        // Create a fallback type with the same resource package name, and compare all the data
+        // kinds to its.
+        final AccountType reference = FallbackAccountType.createWithPackageNameForTest(
+                getInstrumentation().getTargetContext(), type.resourcePackageName);
+
+        assertsDataKindEquals(reference.getSortedDataKinds(), type.getSortedDataKinds());
+    }
+
+    public void testEditSchema_mustHaveChecks() {
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_base, true);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_photo, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr1, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr2, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr3, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr4, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr5, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr6, false);
+        checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr7, false);
+    }
+
+    private void checkEditSchema_mustHaveChecks(int xmlResId, boolean expectInitialized) {
+        final ExternalAccountType type = new ExternalAccountType(getInstrumentation().getTargetContext(),
+                getInstrumentation().getContext().getPackageName(), false,
+                getInstrumentation().getContext().getResources().getXml(xmlResId)
+                );
+
+        assertEquals(expectInitialized, type.isInitialized());
+    }
+
+    /**
+     * Initialize with "contacts_readonly.xml" and see if all data kinds are correctly registered.
+     */
+    public void testReadOnlyDefinition() {
+        final ExternalAccountType type = new ExternalAccountType(getInstrumentation().getTargetContext(),
+                getInstrumentation().getContext().getPackageName(), false,
+                getInstrumentation().getContext().getResources().getXml(R.xml.contacts_readonly)
+                );
+        assertTrue(type.isInitialized());
+
+        // Shouldn't have a "null" mimetype.
+        assertTrue(type.getKindForMimetype(null) == null);
+
+        // 3 kinds are defined in XML and 4 are added by default.
+        assertEquals(4 + 3, type.getSortedDataKinds().size());
+
+        // Check for the default kinds.
+        assertNotNull(type.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE));
+        assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME));
+        assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME));
+        assertNotNull(type.getKindForMimetype(Photo.CONTENT_ITEM_TYPE));
+
+        // Check for type specific kinds.
+        DataKind kind = type.getKindForMimetype("vnd.android.cursor.item/a.b.c");
+        assertNotNull(kind);
+        // No check for icon -- we actually just ignore it.
+        assertEquals("data1", ((BaseAccountType.SimpleInflater) kind.actionHeader)
+                .getColumnNameForTest());
+        assertEquals("data2", ((BaseAccountType.SimpleInflater) kind.actionBody)
+                .getColumnNameForTest());
+
+        kind = type.getKindForMimetype("vnd.android.cursor.item/d.e.f");
+        assertNotNull(kind);
+        assertEquals("data3", ((BaseAccountType.SimpleInflater) kind.actionHeader)
+                .getColumnNameForTest());
+        assertEquals("data4", ((BaseAccountType.SimpleInflater) kind.actionBody)
+                .getColumnNameForTest());
+
+        kind = type.getKindForMimetype("vnd.android.cursor.item/xyz");
+        assertNotNull(kind);
+        assertEquals("data5", ((BaseAccountType.SimpleInflater) kind.actionHeader)
+                .getColumnNameForTest());
+        assertEquals("data6", ((BaseAccountType.SimpleInflater) kind.actionBody)
+                .getColumnNameForTest());
+    }
+
+    private static void assertsDataKindEquals(List<DataKind> expectedKinds,
+            List<DataKind> actualKinds) {
+        final int count = Math.max(actualKinds.size(), expectedKinds.size());
+        for (int i = 0; i < count; i++) {
+            String actual =  actualKinds.size() > i ? actualKinds.get(i).toString() : "(n/a)";
+            String expected =  expectedKinds.size() > i ? expectedKinds.get(i).toString() : "(n/a)";
+
+            // Because assertEquals()'s output is not very friendly when comparing two similar
+            // strings, we manually do the check.
+            if (!Objects.equal(actual, expected)) {
+                final int commonPrefixEnd = findCommonPrefixEnd(actual, expected);
+                fail("Kind #" + i
+                        + "\n[Actual]\n" + insertMarkerAt(actual, commonPrefixEnd)
+                        + "\n[Expected]\n" + insertMarkerAt(expected, commonPrefixEnd));
+            }
+        }
+    }
+
+    private static int findCommonPrefixEnd(String s1, String s2) {
+        int i = 0;
+        for (;;) {
+            final boolean s1End = (s1.length() <= i);
+            final boolean s2End = (s2.length() <= i);
+            if (s1End || s2End) {
+                return i;
+            }
+            if (s1.charAt(i) != s2.charAt(i)) {
+                return i;
+            }
+            i++;
+        }
+    }
+
+    private static String insertMarkerAt(String s, int position) {
+        final String MARKER = "***";
+        if (position > s.length()) {
+            return s + MARKER;
+        } else {
+            return new StringBuilder(s).insert(position, MARKER).toString();
+        }
+    }
+}
diff --git a/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java b/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java
new file mode 100644
index 0000000..ec1a8da
--- /dev/null
+++ b/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java
@@ -0,0 +1,458 @@
+/*
+ * 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.contacts.common.model.dataitem;
+
+import android.content.ContentValues;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
+import android.provider.ContactsContract.CommonDataKinds.Im;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+import android.provider.ContactsContract.CommonDataKinds.Note;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.Relation;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.provider.ContactsContract.Contacts.Data;
+import android.provider.ContactsContract.Contacts.Entity;
+import android.test.AndroidTestCase;
+
+import com.android.contacts.common.Collapser;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.BaseAccountType;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.dataitem.DataItem;
+import com.android.contacts.common.model.dataitem.DataKind;
+
+import java.lang.Math;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Test case for {@link DataItem}.
+ */
+public class DataItemTests extends AndroidTestCase {
+
+    private ContentValues mValues1;
+    private ContentValues mValues2;
+    private ContentValues mValues3;
+    private ContentValues mValues4;
+    private GoogleAccountType mGoogleAccountType;
+
+    @Override
+    protected void setUp() {
+        mValues1 = new ContentValues();
+        mValues2 = new ContentValues();
+        mValues3 = new ContentValues();
+        mValues4 = new ContentValues();
+
+        mValues1.put(Data._ID, 1);
+        mValues2.put(Data._ID, 2);
+        mValues3.put(Data._ID, 3);
+        mValues4.put(Data._ID, 4);
+
+        mGoogleAccountType = new GoogleAccountType(getContext(), "packageName");
+    }
+
+    private List<DataItem> createDataItemsAndCollapse(DataKind kind, ContentValues... values) {
+        final List<DataItem> dataList = new ArrayList<>(values.length);
+        for (ContentValues value : values) {
+            final DataItem data = DataItem.createFrom(value);
+            data.setDataKind(kind);
+            dataList.add(data);
+        }
+        Collapser.collapseList(dataList, getContext());
+        return dataList;
+    }
+
+    public void testDataItemCollapsing_genericDataItemFields() {
+        mValues1.put(Data.IS_SUPER_PRIMARY, 1);
+        mValues2.put(Data.IS_PRIMARY, 0);
+
+        mValues1.put(Entity.TIMES_USED, 5);
+        mValues2.put(Entity.TIMES_USED, 4);
+
+        mValues1.put(Entity.LAST_TIME_USED, 555);
+        mValues2.put(Entity.LAST_TIME_USED, 999);
+
+        final DataKind kind = new DataKind("test.mimetype", 0, 0, false);
+        kind.actionBody = new BaseAccountType.SimpleInflater(0);
+        kind.typeList = new ArrayList<>();
+        kind.typeList.add(new EditType(1, -1));
+        kind.typeList.add(new EditType(2, -1));
+        kind.typeColumn = Data.DATA2;
+
+        mValues1.put(kind.typeColumn, 2);
+        mValues2.put(kind.typeColumn, 1);
+
+        final List<DataItem> dataList = createDataItemsAndCollapse(kind, mValues1, mValues2);
+
+        assertEquals(1, dataList.size());
+        assertEquals(true, dataList.get(0).isSuperPrimary());
+        assertEquals(true, dataList.get(0).isPrimary());
+        assertEquals(9, (int) dataList.get(0).getTimesUsed());
+        assertEquals(999L, (long) dataList.get(0).getLastTimeUsed());
+        assertEquals(1, dataList.get(0).getKindTypeColumn(kind));
+    }
+
+    public void testDataItemCollapsing_email() {
+        final String email1 = "email1@google.com";
+        final String email2 = "email2@google.com";
+
+        mValues1.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Email.ADDRESS, email1);
+        mValues2.put(Email.ADDRESS, email1);
+        mValues3.put(Email.ADDRESS, email2);
+
+        mValues1.put(Email.TYPE, Email.TYPE_MOBILE);
+        mValues2.put(Email.TYPE, Email.TYPE_HOME);
+        mValues3.put(Email.TYPE, Email.TYPE_WORK);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Email.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(email1, ((EmailDataItem) dataList.get(0)).getAddress());
+        assertEquals(email2, ((EmailDataItem) dataList.get(1)).getAddress());
+        assertEquals(Math.min(Email.TYPE_MOBILE, Email.TYPE_HOME),
+                ((EmailDataItem) dataList.get(0)).getKindTypeColumn(kind));
+    }
+
+    public void testDataItemCollapsing_event() {
+        final String date1 = "2014-01-01";
+        final String date2 = "2014-02-02";
+        final String customLabel1 = "custom label1";
+        final String customLabel2 = "custom label2";
+
+        mValues1.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+        mValues4.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Event.START_DATE, date1);
+        mValues2.put(Event.START_DATE, date1);
+        mValues3.put(Event.START_DATE, date1);
+        mValues4.put(Event.START_DATE, date2);
+
+        mValues1.put(Event.TYPE, Event.TYPE_CUSTOM);
+        mValues2.put(Event.TYPE, Event.TYPE_CUSTOM);
+        mValues3.put(Event.TYPE, Event.TYPE_CUSTOM);
+        mValues4.put(Event.TYPE, Event.TYPE_ANNIVERSARY);
+
+        mValues1.put(Event.LABEL, customLabel1);
+        mValues2.put(Event.LABEL, customLabel1);
+        mValues3.put(Event.LABEL, customLabel2);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Event.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4);
+
+        assertEquals(3, dataList.size());
+        assertEquals(customLabel1, ((EventDataItem) dataList.get(0)).getLabel());
+        assertEquals(customLabel2, ((EventDataItem) dataList.get(1)).getLabel());
+        assertEquals(date2, ((EventDataItem) dataList.get(2)).getStartDate());
+    }
+
+    public void testDataItemCollapsing_im() {
+        final String address1 = "address 1";
+        final String address2 = "address 2";
+        final String customProtocol1 = "custom 1";
+        final String customProtocol2 = "custom 2";
+
+        mValues1.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+        mValues4.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Im.DATA, address1);
+        mValues2.put(Im.DATA, address1);
+        mValues3.put(Im.DATA, address1);
+        mValues4.put(Im.DATA, address2);
+
+        mValues1.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM);
+        mValues2.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM);
+        mValues3.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM);
+        mValues4.put(Im.PROTOCOL, Im.PROTOCOL_AIM);
+
+        mValues1.put(Im.CUSTOM_PROTOCOL, customProtocol1);
+        mValues2.put(Im.CUSTOM_PROTOCOL, customProtocol1);
+        mValues3.put(Im.CUSTOM_PROTOCOL, customProtocol2);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Im.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4);
+
+        assertEquals(3, dataList.size());
+        assertEquals(address1, ((ImDataItem) dataList.get(0)).getData());
+        assertEquals(address1, ((ImDataItem) dataList.get(1)).getData());
+        assertEquals(address2, ((ImDataItem) dataList.get(2)).getData());
+
+        assertEquals(customProtocol1, ((ImDataItem) dataList.get(0)).getCustomProtocol());
+        assertEquals(customProtocol2, ((ImDataItem) dataList.get(1)).getCustomProtocol());
+        assertEquals(Im.PROTOCOL_AIM, (int) ((ImDataItem) dataList.get(2)).getProtocol());
+    }
+
+    public void testDataItemCollapsing_nickname() {
+        final String nickname1 = "nickname 1";
+        final String nickname2 = "nickname 2";
+
+        mValues1.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Nickname.NAME, nickname1);
+        mValues2.put(Nickname.NAME, nickname1);
+        mValues3.put(Nickname.NAME, nickname2);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Nickname.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(nickname1, ((NicknameDataItem) dataList.get(0)).getName());
+        assertEquals(nickname2, ((NicknameDataItem) dataList.get(1)).getName());
+    }
+
+    public void testDataItemCollapsing_note() {
+        final String note1 = "note 1";
+        final String note2 = "note 2";
+
+        mValues1.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Note.NOTE, note1);
+        mValues2.put(Note.NOTE, note1);
+        mValues3.put(Note.NOTE, note2);
+
+        DataKind kind = mGoogleAccountType.getKindForMimetype(Note.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(note1, ((NoteDataItem) dataList.get(0)).getNote());
+        assertEquals(note2, ((NoteDataItem) dataList.get(1)).getNote());
+    }
+
+    public void testDataItemCollapsing_organization() {
+        final String company1 = "company1";
+        final String company2 = "company2";
+        final String title1 = "title1";
+        final String title2 = "title2";
+
+        mValues1.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
+        mValues4.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Organization.COMPANY, company1);
+        mValues2.put(Organization.COMPANY, company1);
+        mValues3.put(Organization.COMPANY, company1);
+        mValues4.put(Organization.COMPANY, company2);
+
+        mValues1.put(Organization.TITLE, title1);
+        mValues2.put(Organization.TITLE, title1);
+        mValues3.put(Organization.TITLE, title2);
+        mValues4.put(Organization.TITLE, title1);
+
+        final DataKind kind =
+                mGoogleAccountType.getKindForMimetype(Organization.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4);
+
+        assertEquals(3, dataList.size());
+        assertEquals(company1, ((OrganizationDataItem) dataList.get(0)).getCompany());
+        assertEquals(company1, ((OrganizationDataItem) dataList.get(1)).getCompany());
+        assertEquals(company2, ((OrganizationDataItem) dataList.get(2)).getCompany());
+
+        assertEquals(title1, ((OrganizationDataItem) dataList.get(0)).getTitle());
+        assertEquals(title2, ((OrganizationDataItem) dataList.get(1)).getTitle());
+    }
+
+    public void testDataItemCollapsing_phone() {
+        final String phone1 = "111-111-1111";
+        final String phone1a = "1111111111";
+        final String phone2 = "222-222-2222";
+
+        mValues1.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Phone.NUMBER, phone1);
+        mValues2.put(Phone.NUMBER, phone1a);
+        mValues3.put(Phone.NUMBER, phone2);
+
+        mValues1.put(Phone.TYPE, Phone.TYPE_MOBILE);
+        mValues2.put(Phone.TYPE, Phone.TYPE_HOME);
+        mValues3.put(Phone.TYPE, Phone.TYPE_WORK);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+        assertEquals(2, dataList.size());
+        assertEquals(phone1, ((PhoneDataItem) dataList.get(0)).getNumber());
+        assertEquals(phone2, ((PhoneDataItem) dataList.get(1)).getNumber());
+        assertEquals(Phone.TYPE_MOBILE,
+                ((PhoneDataItem) dataList.get(0)).getKindTypeColumn(kind));
+    }
+
+    public void testDataItemCollapsing_relation() {
+        final String name1 = "name1";
+        final String name2 = "name2";
+        final String customRelation1 = "custom relation 1";
+        final String customRelation2 = "custom relation 2";
+
+        mValues1.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE);
+        mValues4.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Relation.NAME, name1);
+        mValues2.put(Relation.NAME, name1);
+        mValues3.put(Relation.NAME, name1);
+        mValues4.put(Relation.NAME, name2);
+
+        mValues1.put(Relation.TYPE, Relation.TYPE_CUSTOM);
+        mValues2.put(Relation.TYPE, Relation.TYPE_CUSTOM);
+        mValues3.put(Relation.TYPE, Relation.TYPE_CUSTOM);
+        mValues4.put(Relation.TYPE, Relation.TYPE_BROTHER);
+
+        mValues1.put(Relation.LABEL, customRelation1);
+        mValues2.put(Relation.LABEL, customRelation1);
+        mValues3.put(Relation.LABEL, customRelation2);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Relation.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4);
+
+        assertEquals(3, dataList.size());
+        assertEquals(name1, ((RelationDataItem) dataList.get(0)).getName());
+        assertEquals(name2, ((RelationDataItem) dataList.get(2)).getName());
+
+        assertEquals(customRelation1, ((RelationDataItem) dataList.get(0)).getLabel());
+        assertEquals(customRelation2, ((RelationDataItem) dataList.get(1)).getLabel());
+    }
+
+    public void testDataItemCollapsing_sip() {
+        final String sip1 = "sip 1";
+        final String sip2 = "sip 2";
+
+        mValues1.put(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE);
+
+        mValues1.put(SipAddress.SIP_ADDRESS, sip1);
+        mValues2.put(SipAddress.SIP_ADDRESS, sip1);
+        mValues3.put(SipAddress.SIP_ADDRESS, sip2);
+
+        mValues1.put(SipAddress.TYPE, SipAddress.TYPE_WORK);
+        mValues2.put(SipAddress.TYPE, SipAddress.TYPE_HOME);
+        mValues3.put(SipAddress.TYPE, SipAddress.TYPE_WORK);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(SipAddress.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(sip1, ((SipAddressDataItem) dataList.get(0)).getSipAddress());
+        assertEquals(sip2, ((SipAddressDataItem) dataList.get(1)).getSipAddress());
+    }
+
+    public void testDataItemCollapsing_structuredName() {
+        final String displayName1 = "Display Name 1";
+        final String displayName2 = "Display Name 2";
+
+        mValues1.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+
+        mValues1.put(StructuredName.DISPLAY_NAME, displayName1);
+        mValues2.put(StructuredName.DISPLAY_NAME, displayName1);
+        mValues3.put(StructuredName.DISPLAY_NAME, displayName2);
+
+        final DataKind kind =
+                mGoogleAccountType.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(displayName1, ((StructuredNameDataItem) dataList.get(0)).getDisplayName());
+        assertEquals(displayName2, ((StructuredNameDataItem) dataList.get(1)).getDisplayName());
+    }
+
+    public void testDataItemCollapsing_structuredPostal() {
+        final String formattedAddress1 = "Formatted Address 1";
+        final String formattedAddress2 = "Formatted Address 2";
+
+        mValues1.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
+
+        mValues1.put(StructuredPostal.FORMATTED_ADDRESS, formattedAddress1);
+        mValues2.put(StructuredPostal.FORMATTED_ADDRESS, formattedAddress1);
+        mValues3.put(StructuredPostal.FORMATTED_ADDRESS, formattedAddress2);
+
+        final DataKind kind =
+                mGoogleAccountType.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(formattedAddress1,
+                ((StructuredPostalDataItem) dataList.get(0)).getFormattedAddress());
+        assertEquals(formattedAddress2,
+                ((StructuredPostalDataItem) dataList.get(1)).getFormattedAddress());
+    }
+
+    public void testDataItemCollapsing_website() {
+        final String url1 = "www.url1.com";
+        final String url2 = "www.url2.com";
+
+        mValues1.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
+        mValues2.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
+        mValues3.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
+
+        mValues1.put(Website.URL, url1);
+        mValues2.put(Website.URL, url1);
+        mValues3.put(Website.URL, url2);
+
+        final DataKind kind = mGoogleAccountType.getKindForMimetype(Website.CONTENT_ITEM_TYPE);
+
+        final List<DataItem> dataList =
+                createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3);
+
+        assertEquals(2, dataList.size());
+        assertEquals(url1, ((WebsiteDataItem) dataList.get(0)).getUrl());
+        assertEquals(url2, ((WebsiteDataItem) dataList.get(1)).getUrl());
+    }
+}
diff --git a/tests/src/com/android/contacts/common/preference/ContactsPreferencesTest.java b/tests/src/com/android/contacts/common/preference/ContactsPreferencesTest.java
new file mode 100644
index 0000000..26e811d
--- /dev/null
+++ b/tests/src/com/android/contacts/common/preference/ContactsPreferencesTest.java
@@ -0,0 +1,150 @@
+/*
+ * 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.contacts.common.preference;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import com.android.contacts.common.model.account.AccountWithDataSet;
+
+import junit.framework.Assert;
+
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+@MediumTest
+public class ContactsPreferencesTest extends InstrumentationTestCase {
+
+    private static final String ACCOUNT_KEY = "ACCOUNT_KEY";
+
+    @Mock private Context mContext;
+    @Mock private Resources mResources;
+    @Mock private SharedPreferences mSharedPreferences;
+
+    private ContactsPreferences mContactsPreferences;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        System.setProperty("dexmaker.dexcache",
+                getInstrumentation().getTargetContext().getCacheDir().getPath());
+        MockitoAnnotations.initMocks(this);
+
+        Mockito.when(mContext.getResources()).thenReturn(mResources);
+        Mockito.when(mResources.getString(Mockito.anyInt()))
+                .thenReturn(ACCOUNT_KEY); // contact_editor_default_account_key
+
+        Mockito.when(mContext.getSharedPreferences(Mockito.anyString(), Mockito.anyInt()))
+                .thenReturn(mSharedPreferences);
+        Mockito.when(mSharedPreferences.contains(ContactsPreferences.SORT_ORDER_KEY))
+                .thenReturn(true);
+        Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY))
+                .thenReturn(true);
+
+        mContactsPreferences = new ContactsPreferences(mContext);
+    }
+
+    public void testGetSortOrderDefault() {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                false, // R.bool.config_sort_order_user_changeable
+                true // R.bool.config_default_sort_order_primary
+        );
+        Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
+                mContactsPreferences.getSortOrder());
+    }
+
+    public void testGetSortOrder() {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                true // R.bool.config_sort_order_user_changeable
+        );
+        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY),
+                Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY);
+        Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
+                mContactsPreferences.getSortOrder());
+    }
+
+    public void testGetDisplayOrderDefault() {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                false, // R.bool.config_display_order_user_changeable
+                true // R.bool.config_default_display_order_primary
+        );
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
+                mContactsPreferences.getDisplayOrder());
+    }
+
+    public void testGetDisplayOrder() {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                true // R.bool.config_display_order_user_changeable
+        );
+        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY),
+                Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
+                mContactsPreferences.getDisplayOrder());
+    }
+
+    public void testRefreshSortOrder() throws InterruptedException {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                true // R.bool.config_sort_order_user_changeable
+        );
+        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY),
+                Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY,
+                ContactsPreferences.SORT_ORDER_ALTERNATIVE);
+
+        Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
+                mContactsPreferences.getSortOrder());
+        mContactsPreferences.refreshValue(ContactsPreferences.SORT_ORDER_KEY);
+
+        Assert.assertEquals(ContactsPreferences.SORT_ORDER_ALTERNATIVE,
+                mContactsPreferences.getSortOrder());
+    }
+
+    public void testRefreshDisplayOrder() throws InterruptedException {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                true // R.bool.config_display_order_user_changeable
+        );
+        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY),
+                Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
+                ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
+                mContactsPreferences.getDisplayOrder());
+        mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
+                mContactsPreferences.getDisplayOrder());
+    }
+
+    public void testRefreshDefaultAccount() throws InterruptedException {
+        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+                true // R.bool.config_default_account_user_changeable
+        );
+
+        Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
+                .thenReturn(new AccountWithDataSet("name1", "type1", "dataset1").stringify(),
+                        new AccountWithDataSet("name2", "type2", "dataset2").stringify());
+
+        Assert.assertEquals("name1", mContactsPreferences.getDefaultAccount());
+        mContactsPreferences.refreshValue(ACCOUNT_KEY);
+
+        Assert.assertEquals("name2", mContactsPreferences.getDefaultAccount());
+    }
+}
diff --git a/tests/src/com/android/contacts/common/tests/testauth/TestAuthenticationService.java b/tests/src/com/android/contacts/common/tests/testauth/TestAuthenticationService.java
new file mode 100644
index 0000000..93d1f4a
--- /dev/null
+++ b/tests/src/com/android/contacts/common/tests/testauth/TestAuthenticationService.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.tests.testauth;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+
+public abstract class TestAuthenticationService extends Service {
+
+    private TestAuthenticator mAuthenticator;
+
+    @Override
+    public void onCreate() {
+        Log.v(TestauthConstants.LOG_TAG, this + " Service started.");
+        mAuthenticator = new TestAuthenticator(this);
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.v(TestauthConstants.LOG_TAG, this + " Service stopped.");
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        Log.v(TestauthConstants.LOG_TAG, this + " getBinder() intent=" + intent);
+        return mAuthenticator.getIBinder();
+    }
+
+    public static class Basic extends TestAuthenticationService {
+    }
+}
diff --git a/tests/src/com/android/contacts/common/tests/testauth/TestAuthenticator.java b/tests/src/com/android/contacts/common/tests/testauth/TestAuthenticator.java
new file mode 100644
index 0000000..2f676c7
--- /dev/null
+++ b/tests/src/com/android/contacts/common/tests/testauth/TestAuthenticator.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.tests.testauth;
+
+import android.accounts.AbstractAccountAuthenticator;
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.accounts.AccountManager;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.util.Log;
+
+/**
+ * Simple authenticator.  It has no "login" dialogs/activities.  When you add a new account, it'll
+ * just create a new account with a unique name.
+ */
+class TestAuthenticator extends AbstractAccountAuthenticator {
+    private static final String PASSWORD = "xxx"; // any string will do.
+
+    // To remember the last user-ID.
+    private static final String PREF_KEY_LAST_USER_ID = "TestAuthenticator.PREF_KEY_LAST_USER_ID";
+
+    private final Context mContext;
+
+    public TestAuthenticator(Context context) {
+        super(context);
+        mContext = context.getApplicationContext();
+    }
+
+    /**
+     * @return a new, unique username.
+     */
+    private String newUniqueUserName() {
+        final SharedPreferences prefs =
+                PreferenceManager.getDefaultSharedPreferences(mContext);
+        final int nextId = prefs.getInt(PREF_KEY_LAST_USER_ID, 0) + 1;
+        prefs.edit().putInt(PREF_KEY_LAST_USER_ID, nextId).apply();
+
+        return "User-" + nextId;
+    }
+
+    /**
+     * Create a new account with the name generated by {@link #newUniqueUserName()}.
+     */
+    @Override
+    public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
+            String authTokenType, String[] requiredFeatures, Bundle options) {
+        Log.v(TestauthConstants.LOG_TAG, "addAccount() type=" + accountType);
+        final Bundle bundle = new Bundle();
+
+        final Account account = new Account(newUniqueUserName(), accountType);
+
+        // Create an account.
+        AccountManager.get(mContext).addAccountExplicitly(account, PASSWORD, null);
+
+        // And return it.
+        bundle.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
+        bundle.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+        return bundle;
+    }
+
+    /**
+     * Just return the user name as the authtoken.
+     */
+    @Override
+    public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
+            String authTokenType, Bundle loginOptions) {
+        Log.v(TestauthConstants.LOG_TAG, "getAuthToken() account=" + account);
+        final Bundle bundle = new Bundle();
+        bundle.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
+        bundle.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+        bundle.putString(AccountManager.KEY_AUTHTOKEN, account.name);
+
+        return bundle;
+    }
+
+    @Override
+    public Bundle confirmCredentials(
+            AccountAuthenticatorResponse response, Account account, Bundle options) {
+        Log.v(TestauthConstants.LOG_TAG, "confirmCredentials()");
+        return null;
+    }
+
+    @Override
+    public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
+        Log.v(TestauthConstants.LOG_TAG, "editProperties()");
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getAuthTokenLabel(String authTokenType) {
+        // null means we don't support multiple authToken types
+        Log.v(TestauthConstants.LOG_TAG, "getAuthTokenLabel()");
+        return null;
+    }
+
+    @Override
+    public Bundle hasFeatures(
+            AccountAuthenticatorResponse response, Account account, String[] features) {
+        // This call is used to query whether the Authenticator supports
+        // specific features. We don't expect to get called, so we always
+        // return false (no) for any queries.
+        Log.v(TestauthConstants.LOG_TAG, "hasFeatures()");
+        final Bundle result = new Bundle();
+        result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, false);
+        return result;
+    }
+
+    @Override
+    public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account,
+            String authTokenType, Bundle loginOptions) {
+        Log.v(TestauthConstants.LOG_TAG, "updateCredentials()");
+        return null;
+    }
+}
diff --git a/tests/src/com/android/contacts/common/tests/testauth/TestSyncAdapter.java b/tests/src/com/android/contacts/common/tests/testauth/TestSyncAdapter.java
new file mode 100644
index 0000000..a7c0f83
--- /dev/null
+++ b/tests/src/com/android/contacts/common/tests/testauth/TestSyncAdapter.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.tests.testauth;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.content.AbstractThreadedSyncAdapter;
+import android.content.ContentProviderClient;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.SyncResult;
+import android.os.Bundle;
+import android.provider.ContactsContract.RawContacts;
+import android.util.Log;
+
+/**
+ * Simple (minimal) sync adapter.
+ *
+ */
+public class TestSyncAdapter extends AbstractThreadedSyncAdapter {
+    private final AccountManager mAccountManager;
+
+    private final Context mContext;
+
+    public TestSyncAdapter(Context context, boolean autoInitialize) {
+        super(context, autoInitialize);
+        mContext = context.getApplicationContext();
+        mAccountManager = AccountManager.get(mContext);
+    }
+
+    /**
+     * Doesn't actually sync, but sweep up all existing local-only contacts.
+     */
+    @Override
+    public void onPerformSync(Account account, Bundle extras, String authority,
+            ContentProviderClient provider, SyncResult syncResult) {
+        Log.v(TestauthConstants.LOG_TAG, "TestSyncAdapter.onPerformSync() account=" + account);
+
+        // First, claim all local-only contacts, if any.
+        ContentResolver cr = mContext.getContentResolver();
+        ContentValues values = new ContentValues();
+        values.put(RawContacts.ACCOUNT_NAME, account.name);
+        values.put(RawContacts.ACCOUNT_TYPE, account.type);
+        final int count = cr.update(RawContacts.CONTENT_URI, values,
+                RawContacts.ACCOUNT_NAME + " IS NULL AND " + RawContacts.ACCOUNT_TYPE + " IS NULL",
+                null);
+        if (count > 0) {
+            Log.v(TestauthConstants.LOG_TAG, "Claimed " + count + " local raw contacts");
+        }
+
+        // TODO: Clear isDirty flag
+        // TODO: Remove isDeleted raw contacts
+    }
+}
diff --git a/tests/src/com/android/contacts/common/tests/testauth/TestSyncService.java b/tests/src/com/android/contacts/common/tests/testauth/TestSyncService.java
new file mode 100644
index 0000000..3354cb4
--- /dev/null
+++ b/tests/src/com/android/contacts/common/tests/testauth/TestSyncService.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.tests.testauth;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+public abstract class TestSyncService extends Service {
+
+    private static TestSyncAdapter sSyncAdapter;
+
+    @Override
+    public void onCreate() {
+        if (sSyncAdapter == null) {
+            sSyncAdapter = new TestSyncAdapter(getApplicationContext(), true);
+        }
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return sSyncAdapter.getSyncAdapterBinder();
+    }
+
+    public static class Basic extends TestSyncService {
+    }
+}
diff --git a/tests/src/com/android/contacts/common/tests/testauth/TestauthConstants.java b/tests/src/com/android/contacts/common/tests/testauth/TestauthConstants.java
new file mode 100644
index 0000000..3ce7f5a
--- /dev/null
+++ b/tests/src/com/android/contacts/common/tests/testauth/TestauthConstants.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2011 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.contacts.common.tests.testauth;
+
+class TestauthConstants {
+    public static final String LOG_TAG = "Testauth";
+}
diff --git a/tests/src/com/android/contacts/common/util/BitmapUtilTests.java b/tests/src/com/android/contacts/common/util/BitmapUtilTests.java
new file mode 100644
index 0000000..94394b1
--- /dev/null
+++ b/tests/src/com/android/contacts/common/util/BitmapUtilTests.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.graphics.Bitmap;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.util.BitmapUtil;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ * Tests for {@link com.android.contacts.common.util.BitmapUtil}.
+ */
+@SmallTest
+public class BitmapUtilTests extends AndroidTestCase {
+    public void testGetSmallerExtentFromBytes1() throws Exception {
+        assertEquals(100, BitmapUtil.getSmallerExtentFromBytes(createJpegRawData(100, 100)));
+        assertEquals(100, BitmapUtil.getSmallerExtentFromBytes(createPngRawData(100, 100)));
+    }
+
+    public void testGetSmallerExtentFromBytes2() throws Exception {
+        assertEquals(50, BitmapUtil.getSmallerExtentFromBytes(createJpegRawData(200, 50)));
+        assertEquals(50, BitmapUtil.getSmallerExtentFromBytes(createPngRawData(200, 50)));
+    }
+
+    public void testGetSmallerExtentFromBytes3() throws Exception {
+        assertEquals(40, BitmapUtil.getSmallerExtentFromBytes(createJpegRawData(40, 150)));
+        assertEquals(40, BitmapUtil.getSmallerExtentFromBytes(createPngRawData(40, 150)));
+    }
+
+    public void testFindOptimalSampleSizeExact() throws Exception {
+        assertEquals(1, BitmapUtil.findOptimalSampleSize(512, 512));
+    }
+
+    public void testFindOptimalSampleSizeBigger() throws Exception {
+        assertEquals(1, BitmapUtil.findOptimalSampleSize(512, 1024));
+    }
+
+    public void testFindOptimalSampleSizeSmaller1() throws Exception {
+        assertEquals(2, BitmapUtil.findOptimalSampleSize(512, 256));
+    }
+
+    public void testFindOptimalSampleSizeSmaller2() throws Exception {
+        assertEquals(2, BitmapUtil.findOptimalSampleSize(512, 230));
+    }
+
+    public void testFindOptimalSampleSizeSmaller3() throws Exception {
+        assertEquals(4, BitmapUtil.findOptimalSampleSize(512, 129));
+    }
+
+    public void testFindOptimalSampleSizeSmaller4() throws Exception {
+        assertEquals(4, BitmapUtil.findOptimalSampleSize(512, 128));
+    }
+
+    public void testFindOptimalSampleSizeUnknownOriginal() throws Exception {
+        assertEquals(1, BitmapUtil.findOptimalSampleSize(-1, 128));
+    }
+
+    public void testFindOptimalSampleSizeUnknownTarget() throws Exception {
+        assertEquals(1, BitmapUtil.findOptimalSampleSize(128, -1));
+    }
+
+    public void testDecodeWithSampleSize1() throws IOException {
+        assertBitmapSize(128, 64, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(128, 64), 1));
+        assertBitmapSize(128, 64, BitmapUtil.decodeBitmapFromBytes(createPngRawData(128, 64), 1));
+    }
+
+    public void testDecodeWithSampleSize2() throws IOException {
+        assertBitmapSize(64, 32, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(128, 64), 2));
+        assertBitmapSize(64, 32, BitmapUtil.decodeBitmapFromBytes(createPngRawData(128, 64), 2));
+    }
+
+    public void testDecodeWithSampleSize2a() throws IOException {
+        assertBitmapSize(25, 20, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(50, 40), 2));
+        assertBitmapSize(25, 20, BitmapUtil.decodeBitmapFromBytes(createPngRawData(50, 40), 2));
+    }
+
+    public void testDecodeWithSampleSize4() throws IOException {
+        assertBitmapSize(32, 16, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(128, 64), 4));
+        assertBitmapSize(32, 16, BitmapUtil.decodeBitmapFromBytes(createPngRawData(128, 64), 4));
+    }
+
+    private void assertBitmapSize(int expectedWidth, int expectedHeight, Bitmap bitmap) {
+        assertEquals(expectedWidth, bitmap.getWidth());
+        assertEquals(expectedHeight, bitmap.getHeight());
+    }
+
+    private byte[] createJpegRawData(int sourceWidth, int sourceHeight) throws IOException {
+        return createRawData(Bitmap.CompressFormat.JPEG, sourceWidth, sourceHeight);
+    }
+
+    private byte[] createPngRawData(int sourceWidth, int sourceHeight) throws IOException {
+        return createRawData(Bitmap.CompressFormat.PNG, sourceWidth, sourceHeight);
+    }
+
+    private byte[] createRawData(Bitmap.CompressFormat format, int sourceWidth,
+            int sourceHeight) throws IOException {
+        // Create a temp bitmap as our source
+        Bitmap b = Bitmap.createBitmap(sourceWidth, sourceHeight, Bitmap.Config.ARGB_8888);
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        b.compress(format, 50, outputStream);
+        final byte[] data = outputStream.toByteArray();
+        outputStream.close();
+        return data;
+    }
+}
diff --git a/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java b/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
new file mode 100644
index 0000000..b4cd1ca
--- /dev/null
+++ b/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import static android.provider.ContactsContract.CommonDataKinds.Phone;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.R;
+import com.android.contacts.common.preference.ContactsPreferences;
+
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Unit tests for (@link ContactDisplayUtils}
+ */
+@SmallTest
+public class ContactDisplayUtilTests extends AndroidTestCase {
+
+    private static final String NAME_PRIMARY = "Name Primary";
+    private static final String NAME_ALTERNATIVE = "Name Alternative";
+
+    @Mock private ContactsPreferences mContactsPreferences;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        MockitoAnnotations.initMocks(this);
+    }
+
+    public void testIsCustomPhoneTypeReturnsTrue() {
+        assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_CUSTOM));
+        assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_ASSISTANT));
+    }
+
+    public void testIsCustomPhoneTypeReturnsFalse() {
+        assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_HOME));
+        assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_FAX_WORK));
+        assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_MOBILE));
+        assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_OTHER));
+    }
+
+    public void testGetLabelForCallOrSmsReturnsCustomLabel() {
+        final CharSequence smsResult = ContactDisplayUtils.getLabelForCallOrSms(Phone.TYPE_CUSTOM,
+                "expected sms label", ContactDisplayUtils.INTERACTION_SMS, getContext());
+        assertEquals("expected sms label", smsResult);
+
+        final CharSequence callResult = ContactDisplayUtils.getLabelForCallOrSms(Phone.TYPE_CUSTOM,
+                "expected call label", ContactDisplayUtils.INTERACTION_CALL, getContext());
+        assertEquals("expected call label", callResult);
+    }
+
+    public void testGetLabelForCallOrSmsReturnsCallLabels() {
+        CharSequence result = ContactDisplayUtils.getLabelForCallOrSms(Phone.TYPE_HOME, "",
+                ContactDisplayUtils.INTERACTION_CALL, getContext());
+        CharSequence expected = getContext().getResources().getText(R.string.call_home);
+        assertEquals(expected, result);
+
+        result = ContactDisplayUtils.getLabelForCallOrSms(Phone.TYPE_MOBILE, "",
+                ContactDisplayUtils.INTERACTION_CALL, getContext());
+        expected = getContext().getResources().getText(R.string.call_mobile);
+        assertEquals(expected, result);
+    }
+
+    public void testGetLabelForCallOrSmsReturnsSmsLabels() {
+        CharSequence result = ContactDisplayUtils.getLabelForCallOrSms(Phone.TYPE_HOME, "",
+                ContactDisplayUtils.INTERACTION_SMS, getContext());
+        CharSequence expected = getContext().getResources().getText(R.string.sms_home);
+        assertEquals(expected, result);
+
+        result = ContactDisplayUtils.getLabelForCallOrSms(Phone.TYPE_MOBILE, "",
+                ContactDisplayUtils.INTERACTION_SMS, getContext());
+        expected = getContext().getResources().getText(R.string.sms_mobile);
+        assertEquals(expected, result);
+    }
+
+    public void testGetPhoneLabelResourceIdReturnsOther() {
+        assertEquals(R.string.call_other, ContactDisplayUtils.getPhoneLabelResourceId(null));
+    }
+
+    public void testGetPhoneLabelResourceIdReturnsMatchHome() {
+        assertEquals(R.string.call_home, ContactDisplayUtils.getPhoneLabelResourceId(
+                Phone.TYPE_HOME));
+    }
+
+    public void testGetSmsLabelResourceIdReturnsOther() {
+        assertEquals(R.string.sms_other, ContactDisplayUtils.getSmsLabelResourceId(null));
+    }
+
+    public void testGetSmsLabelResourceIdReturnsMatchHome() {
+        assertEquals(R.string.sms_home, ContactDisplayUtils.getSmsLabelResourceId(Phone.TYPE_HOME));
+    }
+
+    public void testGetPreferredDisplayName_NullContactsPreferences() {
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, null));
+    }
+
+    public void testGetPreferredDisplayName_NullContactsPreferences_NullAlternative() {
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY, null,
+                null));
+    }
+
+    public void testGetPreferredDisplayName_NullContactsPreferences_NullPrimary() {
+        assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredDisplayName(null,
+                NAME_ALTERNATIVE, null));
+    }
+
+    public void testGetPreferredDisplayName_NullContactsPreferences_BothNull() {
+        assertNull(ContactDisplayUtils.getPreferredDisplayName(null, null, null));
+    }
+
+    public void testGetPreferredDisplayName_EmptyAlternative() {
+        Mockito.when(mContactsPreferences.getDisplayOrder())
+                .thenReturn(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY, "",
+                mContactsPreferences));
+    }
+
+    public void testGetPreferredDisplayName_InvalidPreference() {
+        Mockito.when(mContactsPreferences.getDisplayOrder()).thenReturn(-1);
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, mContactsPreferences));
+    }
+
+    public void testGetPreferredDisplayName_Primary() {
+        Mockito.when(mContactsPreferences.getDisplayOrder())
+                .thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, mContactsPreferences));
+    }
+
+    public void testGetPreferredDisplayName_Alternative() {
+        Mockito.when(mContactsPreferences.getDisplayOrder())
+                .thenReturn(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+        assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, mContactsPreferences));
+    }
+
+    public void testGetPreferredSortName_NullContactsPreferences() {
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, null));
+    }
+
+    public void testGetPreferredSortName_NullContactsPreferences_NullAlternative() {
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY, null,
+                null));
+    }
+
+    public void testGetPreferredSortName_NullContactsPreferences_NullPrimary() {
+        assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredSortName(null,
+                NAME_ALTERNATIVE, null));
+    }
+
+    public void testGetPreferredSortName_NullContactsPreferences_BothNull() {
+        assertNull(ContactDisplayUtils.getPreferredSortName(null, null, null));
+    }
+
+    public void testGetPreferredSortName_EmptyAlternative() {
+        Mockito.when(mContactsPreferences.getSortOrder())
+                .thenReturn(ContactsPreferences.SORT_ORDER_ALTERNATIVE);
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY, "",
+                mContactsPreferences));
+    }
+
+    public void testGetPreferredSortName_InvalidPreference() {
+        Mockito.when(mContactsPreferences.getSortOrder()).thenReturn(-1);
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, mContactsPreferences));
+    }
+
+    public void testGetPreferredSortName_Primary() {
+        Mockito.when(mContactsPreferences.getSortOrder())
+                .thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY);
+        assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, mContactsPreferences));
+    }
+
+    public void testGetPreferredSortName_Alternative() {
+        Mockito.when(mContactsPreferences.getSortOrder())
+                .thenReturn(ContactsPreferences.SORT_ORDER_ALTERNATIVE);
+        assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
+                NAME_ALTERNATIVE, mContactsPreferences));
+    }
+}
diff --git a/tests/src/com/android/contacts/common/util/DateUtilTests.java b/tests/src/com/android/contacts/common/util/DateUtilTests.java
new file mode 100644
index 0000000..f460289
--- /dev/null
+++ b/tests/src/com/android/contacts/common/util/DateUtilTests.java
@@ -0,0 +1,62 @@
+/*
+ * 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.contacts.common.util;
+
+import junit.framework.TestCase;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.format.Time;
+
+/**
+ * Unit tests for {@link com.android.contacts.common.util.DateUtils}.
+ */
+@SmallTest
+public class DateUtilTests extends TestCase {
+
+    /**
+     * Test date differences which are in the same day.
+     */
+    public void testDayDiffNone() {
+        Time time = new Time();
+        long date1 = System.currentTimeMillis();
+        long date2 = System.currentTimeMillis() + android.text.format.DateUtils.HOUR_IN_MILLIS;
+        assertEquals(0, DateUtils.getDayDifference(time, date1, date2));
+        assertEquals(0, DateUtils.getDayDifference(time, date2, date1));
+    }
+
+    /**
+     * Test date differences which are a day apart.
+     */
+    public void testDayDiffOne() {
+        Time time = new Time();
+        long date1 = System.currentTimeMillis();
+        long date2 = date1 + android.text.format.DateUtils.DAY_IN_MILLIS;
+        assertEquals(1, DateUtils.getDayDifference(time, date1, date2));
+        assertEquals(1, DateUtils.getDayDifference(time, date2, date1));
+    }
+
+    /**
+     * Test date differences which are two days apart.
+     */
+    public void testDayDiffTwo() {
+        Time time = new Time();
+        long date1 = System.currentTimeMillis();
+        long date2 = date1 + 2*android.text.format.DateUtils.DAY_IN_MILLIS;
+        assertEquals(2, DateUtils.getDayDifference(time, date1, date2));
+        assertEquals(2, DateUtils.getDayDifference(time, date2, date1));
+    }
+}
diff --git a/tests/src/com/android/contacts/common/util/NameConverterTests.java b/tests/src/com/android/contacts/common/util/NameConverterTests.java
new file mode 100644
index 0000000..c4f67c3
--- /dev/null
+++ b/tests/src/com/android/contacts/common/util/NameConverterTests.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2011 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 src.com.android.contacts.common.util;
+
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.TextUtils;
+
+import com.android.contacts.common.util.NameConverter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Tests for {@link NameConverter}.
+ */
+@SmallTest
+public class NameConverterTests extends AndroidTestCase {
+
+    public void testStructuredNameToDisplayName() {
+        Map<String, String> structuredName = new HashMap<String, String>();
+        structuredName.put(StructuredName.PREFIX, "Mr.");
+        structuredName.put(StructuredName.GIVEN_NAME, "John");
+        structuredName.put(StructuredName.MIDDLE_NAME, "Quincy");
+        structuredName.put(StructuredName.FAMILY_NAME, "Adams");
+        structuredName.put(StructuredName.SUFFIX, "Esquire");
+
+        assertEquals("Mr. John Quincy Adams, Esquire",
+                NameConverter.structuredNameToDisplayName(mContext, structuredName));
+
+        structuredName.remove(StructuredName.SUFFIX);
+        assertEquals("Mr. John Quincy Adams",
+                NameConverter.structuredNameToDisplayName(mContext, structuredName));
+
+        structuredName.remove(StructuredName.MIDDLE_NAME);
+        assertEquals("Mr. John Adams",
+                NameConverter.structuredNameToDisplayName(mContext, structuredName));
+    }
+
+    public void testDisplayNameToStructuredName() {
+        assertStructuredName("Mr. John Quincy Adams, Esquire",
+                "Mr.", "John", "Quincy", "Adams", "Esquire");
+        assertStructuredName("John Doe", null, "John", null, "Doe", null);
+        assertStructuredName("Ms. Jane Eyre", "Ms.", "Jane", null, "Eyre", null);
+        assertStructuredName("Dr Leo Spaceman, PhD", "Dr", "Leo", null, "Spaceman", "PhD");
+    }
+
+    /**
+     * Helper method to check whether a given display name parses out to the other parameters.
+     * @param displayName Display name to break into a structured name.
+     * @param prefix Expected prefix (null if not expected).
+     * @param givenName Expected given name (null if not expected).
+     * @param middleName Expected middle name (null if not expected).
+     * @param familyName Expected family name (null if not expected).
+     * @param suffix Expected suffix (null if not expected).
+     */
+    private void assertStructuredName(String displayName, String prefix,
+            String givenName, String middleName, String familyName, String suffix) {
+        Map<String, String> structuredName = NameConverter.displayNameToStructuredName(mContext,
+                displayName);
+        checkNameComponent(StructuredName.PREFIX, prefix, structuredName);
+        checkNameComponent(StructuredName.GIVEN_NAME, givenName, structuredName);
+        checkNameComponent(StructuredName.MIDDLE_NAME, middleName, structuredName);
+        checkNameComponent(StructuredName.FAMILY_NAME, familyName, structuredName);
+        checkNameComponent(StructuredName.SUFFIX, suffix, structuredName);
+        assertEquals(0, structuredName.size());
+    }
+
+    /**
+     * Checks that the given field and value are present in the structured name map (or not present
+     * if the given value is null).  If the value is present and matches, the key is removed from
+     * the map - once all components of the name are checked, the map should be empty.
+     * @param field Field to check.
+     * @param value Expected value for the field (null if it is not expected to be populated).
+     * @param structuredName The map of structured field names to values.
+     */
+    private void checkNameComponent(String field, String value,
+            Map<String, String> structuredName) {
+        if (TextUtils.isEmpty(value)) {
+            assertNull(structuredName.get(field));
+        } else {
+            assertEquals(value, structuredName.get(field));
+        }
+        structuredName.remove(field);
+    }
+}
diff --git a/tests/src/com/android/contacts/common/util/SearchUtilTest.java b/tests/src/com/android/contacts/common/util/SearchUtilTest.java
new file mode 100644
index 0000000..3176a3c
--- /dev/null
+++ b/tests/src/com/android/contacts/common/util/SearchUtilTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2012 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.contacts.common.util;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit tests for {@link SearchUtil}.
+ */
+@SmallTest
+public class SearchUtilTest extends TestCase {
+
+    public void testFindMatchingLine() {
+        final String actual = "this is a long test string.\nWith potentially many lines.\n" +
+                "test@google.com\nhello\nblah\n'leading punc";
+
+        SearchUtil.MatchedLine matched = SearchUtil.findMatchingLine(actual, "poten");
+        assertEquals("With potentially many lines.", matched.line);
+        assertEquals(5, matched.startIndex);
+
+        // Full line match.
+        matched = SearchUtil.findMatchingLine(actual, "hello");
+        assertEquals("hello", matched.line);
+        assertEquals(0, matched.startIndex);
+
+        // First line match
+        matched = SearchUtil.findMatchingLine(actual, "this");
+        assertEquals("this is a long test string.", matched.line);
+        assertEquals(0, matched.startIndex);
+
+        // Last line match
+        matched = SearchUtil.findMatchingLine(actual, "punc");
+        assertEquals("'leading punc", matched.line);
+        assertEquals(9, matched.startIndex);
+    }
+
+    public void testContains() {
+        final String actual = "this is a long test string.\nWith potentially many lines.\n" +
+                "test@google.com\nhello\nblah\n'leading punc";
+        assertEquals(0, SearchUtil.contains(actual, "this"));
+        assertEquals(10, SearchUtil.contains(actual, "lon"));
+
+        assertEquals(1, SearchUtil.contains("'leading punc", "lead"));
+        assertEquals(9, SearchUtil.contains("'leading punc", "punc"));
+
+    }
+
+    public void testContainsNotFound() {
+        final String actual = "this is a long test string.\nWith potentially many lines.\n" +
+                "test@google.com\nhello\nblah\n'leading punc";
+
+        // Non-prefix
+        assertEquals(-1, SearchUtil.contains(actual, "ith"));
+        assertEquals(-1, SearchUtil.contains(actual, "ing"));
+
+        // Complete misses
+        assertEquals(-1, SearchUtil.contains(actual, "thisx"));
+        assertEquals(-1, SearchUtil.contains(actual, "manyx"));
+        assertEquals(-1, SearchUtil.contains(actual, "hellox"));
+
+        // Test for partial match of start of query to end of line
+        assertEquals(-1, SearchUtil.contains(actual, "punctual"));
+    }
+
+    public void testFindNextTokenStart() {
+        final String actual = "....hello.kitty";
+        //                     012345678901234
+
+        // Find first token.
+        assertEquals(4, SearchUtil.findNextTokenStart(actual, 0));
+        assertEquals(4, SearchUtil.findNextTokenStart(actual, 1));
+        assertEquals(4, SearchUtil.findNextTokenStart(actual, 2));
+        assertEquals(4, SearchUtil.findNextTokenStart(actual, 3));
+
+        // Find second token.
+        assertEquals(10, SearchUtil.findNextTokenStart(actual, 4));
+        assertEquals(10, SearchUtil.findNextTokenStart(actual, 5));
+        assertEquals(10, SearchUtil.findNextTokenStart(actual, 6));
+        assertEquals(10, SearchUtil.findNextTokenStart(actual, 7));
+        assertEquals(10, SearchUtil.findNextTokenStart(actual, 8));
+        assertEquals(10, SearchUtil.findNextTokenStart(actual, 9));
+
+        // No token.
+        assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 10));
+        assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 11));
+        assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 12));
+        assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 13));
+        assertEquals(actual.length(), SearchUtil.findNextTokenStart(actual, 14));
+    }
+
+    public void testCleanStartAndEndOfSearchQuery() {
+        assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery("...test..."));
+        assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery(" test "));
+        assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery(" ||test"));
+        assertEquals("test", SearchUtil.cleanStartAndEndOfSearchQuery("test.."));
+    }
+
+}
diff --git a/tests/src/com/android/contacts/util/SyncUtilTests.java b/tests/src/com/android/contacts/util/SyncUtilTests.java
new file mode 100644
index 0000000..372a652
--- /dev/null
+++ b/tests/src/com/android/contacts/util/SyncUtilTests.java
@@ -0,0 +1,51 @@
+/*
+ * 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.contacts.util;
+
+import android.accounts.Account;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests for SyncUtil.
+ */
+@SmallTest
+public class SyncUtilTests extends AndroidTestCase {
+    private static final String TAG = "SyncUtilTests";
+
+    private static final String GOOGLE_TYPE = "com.google";
+    private static final String NOT_GOOGLE_TYPE = "com.abc";
+    private static final String ACCOUNT_NAME = "ACCOUNT_NAME";
+
+    private final Account mGoogleAccount;
+    private final Account mOtherAccount;
+
+    public SyncUtilTests() {
+        mGoogleAccount = new Account(ACCOUNT_NAME, GOOGLE_TYPE);
+        mOtherAccount = new Account(ACCOUNT_NAME, NOT_GOOGLE_TYPE);
+    }
+
+    public void testIsUnsyncableGoogleAccount() throws Exception {
+        // The account names of mGoogleAccount and mOtherAccount are not valid, so both accounts
+        // are not syncable.
+        assertTrue(SyncUtil.isUnsyncableGoogleAccount(mGoogleAccount));
+        assertFalse(SyncUtil.isUnsyncableGoogleAccount(mOtherAccount));
+        assertFalse(SyncUtil.isUnsyncableGoogleAccount(null));
+    }
+}
