Merge "Remove outdated custom background for password field."
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f6f6d86..fb5b249 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -89,7 +89,7 @@
<string name="battery_info_awake_plugged" msgid="176716874713478188">"Aktivzeit beim Laden:"</string>
<string name="battery_info_screen_on" msgid="376277447175613889">"Display eingeschaltet:"</string>
<string name="battery_info_status_unknown" msgid="196130600938058547">"Unbekannt"</string>
- <string name="battery_info_status_charging" msgid="1705179948350365604">"Wird geladen"</string>
+ <string name="battery_info_status_charging" msgid="1705179948350365604">"Wird aufgeladen"</string>
<string name="battery_info_status_charging_ac" msgid="5874340256342956252">"(AC)"</string>
<string name="battery_info_status_charging_usb" msgid="4059070156126770959">"(USB)"</string>
<string name="battery_info_status_charging_wireless" msgid="1822125795446772771">"(drahtlos)"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a6fa5d5..bcde25c 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1764,7 +1764,7 @@
<string name="sync_menu_sync_cancel" msgid="8292379009626966949">"Annuler la synchronisation"</string>
<string name="sync_one_time_sync" msgid="6766593624598183090">"Appuyez ici pour lancer la synchronisation<xliff:g id="LAST_SYNC_TIME">
%1$s</xliff:g>"</string>
- <string name="sync_gmail" msgid="714886122098006477">"GMAIL"</string>
+ <string name="sync_gmail" msgid="714886122098006477">"Gmail"</string>
<string name="sync_calendar" msgid="9056527206714733735">"# CALENDAR:"</string>
<string name="sync_contacts" msgid="9174914394377828043">"Contacts"</string>
<string name="sync_plug" msgid="3905078969081888738"><font fgcolor="#ffffffff">"Bienvenue sur Google Sync!"</font>\n"Une solution Google pour synchroniser vos données et vous permettre d\'accéder à vos contacts, vos rendez-vous et plus, où que vous soyez."</string>
diff --git a/res/values-km-rKH/arrays.xml b/res/values-km-rKH/arrays.xml
index 035d241..b5ba344 100644
--- a/res/values-km-rKH/arrays.xml
+++ b/res/values-km-rKH/arrays.xml
@@ -137,7 +137,7 @@
<item msgid="3189211552661432651">"បានអញ្ជើញ"</item>
<item msgid="3206450250360237549">"បរាជ័យ"</item>
<item msgid="7785896708926971207">"មាន"</item>
- <item msgid="2330782789550628803">"ក្រៅជួរ"</item>
+ <item msgid="2330782789550628803">"ក្រៅតំបន់"</item>
</string-array>
<string-array name="bluetooth_visibility_timeout_entries">
<item msgid="8151962652413645395">"២ នាទី"</item>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 45875cf..d4eb867 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -620,7 +620,7 @@
<string name="wifi_disabled_generic" msgid="4259794910584943386">"បានបិទ"</string>
<string name="wifi_disabled_network_failure" msgid="3111321240793227690">"បានរារាំងការតភ្ជាប់អ៊ីនធឺណិតមិនល្អ"</string>
<string name="wifi_disabled_password_failure" msgid="8659805351763133575">"បញ្ហាក្នុងការផ្ទៀងផ្ទាត់"</string>
- <string name="wifi_not_in_range" msgid="1136191511238508967">"មិននៅក្នុងជួរ"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"មិននៅក្នុងតំបន់"</string>
<string name="wifi_wps_available_first_item" msgid="4422547079984583502">"WPS អាចប្រើបាន"</string>
<string name="wifi_wps_available_second_item" msgid="8427520131718215301">" (មាន WPS)"</string>
<string name="wifi_secured_first_item" msgid="4072076186051083451">"មានសុវត្ថិភាពជាមួយ <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
@@ -646,7 +646,7 @@
<string name="wifi_connect_failed_message" product="default" msgid="2185803140161396572">"ទូរស័ព្ទមិនអាចតភ្ជាប់ទៅបណ្ដាញវ៉ាយហ្វាយនេះ"</string>
<string name="wifi_advanced_titlebar" msgid="4485841401774142908">"វ៉ាយហ្វាយកម្រិតខ្ពស់"</string>
<string name="wifi_setting_frequency_band_title" msgid="3655327399028584656">"ក្រុមហ្វ្រេកង់វ៉ាយហ្វាយ"</string>
- <string name="wifi_setting_frequency_band_summary" msgid="3250740757118009784">"បញ្ជាក់ជួរប្រេកង់នៃប្រតិបត្តិការ"</string>
+ <string name="wifi_setting_frequency_band_summary" msgid="3250740757118009784">"បញ្ជាក់តំបន់ប្រេកង់នៃប្រតិបត្តិការ"</string>
<string name="wifi_setting_frequency_band_error" msgid="837281974489794378">"មានបញ្ហាក្នុងការកំណត់ក្រុមប្រេកង់។"</string>
<string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"អាសយដ្ឋាន MAC"</string>
<string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"អាសយដ្ឋាន IP"</string>
@@ -1009,8 +1009,8 @@
<string name="location_category_recent_location_requests" msgid="1938721350424447421">"សំណើទីតាំងថ្មី"</string>
<string name="location_no_recent_apps" msgid="2800907699722178041">"បច្ចុប្បន្នគ្មានកម្មវិធីបានស្នើទីតាំង"</string>
<string name="location_category_location_services" msgid="7437150886946685979">"សេវាកម្មទីតាំង"</string>
- <string name="location_high_battery_use" msgid="517199943258508020">"ការប្រើប្រាស់ថ្មខ្លាំង"</string>
- <string name="location_low_battery_use" msgid="8602232529541903596">"ការប្រើប្រាស់ជិតអស់ថ្ម"</string>
+ <string name="location_high_battery_use" msgid="517199943258508020">"ប្រើថ្មច្រើន"</string>
+ <string name="location_low_battery_use" msgid="8602232529541903596">"ប្រើថ្មតិច"</string>
<string name="location_mode_screen_title" msgid="4528716772270246542">"របៀបកំណត់ទីតាំង"</string>
<string name="location_mode_high_accuracy_description" msgid="6418936349431602808">"ប្រើជីភីអេស, ហ្វាយវ៉ាយ និងបណ្ដាញចល័តដើម្បីកំណត់ទីតាំង"</string>
<string name="location_mode_battery_saving_description" msgid="1728668969743485109">"ប្រើហ្វាយវ៉ាយ និងបណ្ដាញចល័តដើម្បីកំណត់ទីតាំង"</string>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index c2cb6db..56b2cd9 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -351,7 +351,7 @@
<string-array name="captioning_edge_type_selector_titles">
<item msgid="6022616153255438487">"Nėra"</item>
<item msgid="1352974708028506778">"Išdėstymas"</item>
- <item msgid="5850876295428722675">"Viršuje esančio objekto šešėlis"</item>
+ <item msgid="5850876295428722675">"Krintantis šešėlis"</item>
<item msgid="4620283365518546731">"Iškilus"</item>
<item msgid="6395808180998856466">"Įdubęs"</item>
</string-array>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index ca613e2..f1ada6e 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1099,7 +1099,7 @@
<string name="verify_applications_summary" msgid="6737505521913263792">"Forby eller advar før installasjon av apper som kan være skadelige"</string>
<string name="advanced_settings" msgid="1777249286757067969">"Avanserte innstillinger"</string>
<string name="advanced_settings_summary" msgid="4016682978071086747">"Aktiver flere innstillingsalternativer"</string>
- <string name="application_info_label" msgid="5736524913065714880">"Info om app"</string>
+ <string name="application_info_label" msgid="5736524913065714880">"Info om appen"</string>
<string name="storage_label" msgid="8700867073480107253">"Lagring"</string>
<string name="auto_launch_label" msgid="3012617472833815382">"Start som standard"</string>
<string name="auto_launch_label_generic" msgid="3230569852551968694">"Standardinnstillinger"</string>
@@ -1527,7 +1527,7 @@
<string name="usage_type_on_time" msgid="3351200096173733159">"Tid på"</string>
<string name="usage_type_no_coverage" msgid="3797004252954385053">"Tid uten signal"</string>
<string name="battery_action_stop" msgid="649958863744041872">"Tving avslutning"</string>
- <string name="battery_action_app_details" msgid="7861051816778419018">"Info om app"</string>
+ <string name="battery_action_app_details" msgid="7861051816778419018">"Info om appen"</string>
<string name="battery_action_app_settings" msgid="4570481408106287454">"Innstillinger for app"</string>
<string name="battery_action_display" msgid="7338551244519110831">"Skjerminnstillinger"</string>
<string name="battery_action_wifi" msgid="8181553479021841207">"Innstillinger for Wi-Fi"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index bf1948b..8e9f868 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -440,7 +440,7 @@
</plurals>
<string name="no_notification_listeners" msgid="2767405417723149879">"Nie sú nainštalované žiadne aplikácie na počúvanie upozornení."</string>
<string name="notification_listener_security_warning_title" msgid="6494221261778885893">"Povoliť službu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
- <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> bude môcť čítať všetky upozornenia, ktoré uverejní systém, alebo ktorákoľvek z nainštalovaných aplikácií. Upozornenia môžu obsahovať osobné informácie, ako sú napríklad mená kontaktov alebo texty správ, ktoré sa vám odoslali. Aplikácia bude tiež môcť tieto upozornenia zrušiť alebo sa dotknúť tlačidiel akcií v upozorneniach."</string>
+ <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> bude môcť čítať všetky upozornenia, ktoré uverejní systém, alebo ktorákoľvek z nainštalovaných aplikácií. Upozornenia môžu obsahovať osobné informácie, ako sú napríklad mená kontaktov alebo texty správ, ktoré sa vám odoslali. Aplikácia bude tiež môcť tieto upozornenia zatvoriť alebo sa dotknúť tlačidiel akcií v upozorneniach."</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Zapnúť Bluetooth"</string>
<string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 3a94865..dbfa1bc 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -33,6 +33,7 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.ContentObserver;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
import android.os.Bundle;
@@ -492,9 +493,9 @@
if (device != null
&& !device.isVirtual()
&& device.isFullKeyboard()) {
- final String inputDeviceDescriptor = device.getDescriptor();
+ final InputDeviceIdentifier identifier = device.getIdentifier();
final String keyboardLayoutDescriptor =
- mIm.getCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor);
+ mIm.getCurrentKeyboardLayoutForInputDevice(identifier);
final KeyboardLayout keyboardLayout = keyboardLayoutDescriptor != null ?
mIm.getKeyboardLayout(keyboardLayoutDescriptor) : null;
@@ -508,7 +509,7 @@
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- showKeyboardLayoutDialog(inputDeviceDescriptor);
+ showKeyboardLayoutDialog(identifier);
return true;
}
});
@@ -539,19 +540,19 @@
}
}
- private void showKeyboardLayoutDialog(String inputDeviceDescriptor) {
+ private void showKeyboardLayoutDialog(InputDeviceIdentifier inputDeviceIdentifier) {
KeyboardLayoutDialogFragment fragment =
- new KeyboardLayoutDialogFragment(inputDeviceDescriptor);
+ new KeyboardLayoutDialogFragment(inputDeviceIdentifier);
fragment.setTargetFragment(this, 0);
fragment.show(getActivity().getFragmentManager(), "keyboardLayout");
}
@Override
- public void onSetupKeyboardLayouts(String inputDeviceDescriptor) {
+ public void onSetupKeyboardLayouts(InputDeviceIdentifier inputDeviceIdentifier) {
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(getActivity(), KeyboardLayoutPickerActivity.class);
- intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_DESCRIPTOR,
- inputDeviceDescriptor);
+ intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER,
+ inputDeviceIdentifier);
mIntentWaitingForResult = intent;
startActivityForResult(intent, 0);
}
@@ -561,10 +562,10 @@
super.onActivityResult(requestCode, resultCode, data);
if (mIntentWaitingForResult != null) {
- String inputDeviceDescriptor = mIntentWaitingForResult.getStringExtra(
- KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_DESCRIPTOR);
+ InputDeviceIdentifier inputDeviceIdentifier = mIntentWaitingForResult
+ .getParcelableExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER);
mIntentWaitingForResult = null;
- showKeyboardLayoutDialog(inputDeviceDescriptor);
+ showKeyboardLayoutDialog(inputDeviceIdentifier);
}
}
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
index a232a0f..451b36e 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
@@ -30,6 +30,7 @@
import android.content.Intent;
import android.content.Loader;
import android.content.res.Resources;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
import android.hardware.input.InputManager.InputDeviceListener;
@@ -48,9 +49,9 @@
public class KeyboardLayoutDialogFragment extends DialogFragment
implements InputDeviceListener, LoaderCallbacks<KeyboardLayoutDialogFragment.Keyboards> {
- private static final String KEY_INPUT_DEVICE_DESCRIPTOR = "inputDeviceDescriptor";
+ private static final String KEY_INPUT_DEVICE_IDENTIFIER = "inputDeviceIdentifier";
- private String mInputDeviceDescriptor;
+ private InputDeviceIdentifier mInputDeviceIdentifier;
private int mInputDeviceId = -1;
private InputManager mIm;
private KeyboardLayoutAdapter mAdapter;
@@ -58,8 +59,8 @@
public KeyboardLayoutDialogFragment() {
}
- public KeyboardLayoutDialogFragment(String inputDeviceDescriptor) {
- mInputDeviceDescriptor = inputDeviceDescriptor;
+ public KeyboardLayoutDialogFragment(InputDeviceIdentifier inputDeviceIdentifier) {
+ mInputDeviceIdentifier = inputDeviceIdentifier;
}
@Override
@@ -76,7 +77,7 @@
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
- mInputDeviceDescriptor = savedInstanceState.getString(KEY_INPUT_DEVICE_DESCRIPTOR);
+ mInputDeviceIdentifier = savedInstanceState.getParcelable(KEY_INPUT_DEVICE_IDENTIFIER);
}
getLoaderManager().initLoader(0, null, this);
@@ -85,7 +86,7 @@
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
- outState.putString(KEY_INPUT_DEVICE_DESCRIPTOR, mInputDeviceDescriptor);
+ outState.putParcelable(KEY_INPUT_DEVICE_IDENTIFIER, mInputDeviceIdentifier);
}
@Override
@@ -119,7 +120,8 @@
mIm.registerInputDeviceListener(this, null);
- InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceDescriptor);
+ InputDevice inputDevice =
+ mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
if (inputDevice == null) {
dismiss();
return;
@@ -143,7 +145,7 @@
private void onSetupLayoutsButtonClicked() {
((OnSetupKeyboardLayoutsListener)getTargetFragment()).onSetupKeyboardLayouts(
- mInputDeviceDescriptor);
+ mInputDeviceIdentifier);
}
@Override
@@ -156,7 +158,7 @@
if (which >= 0 && which < mAdapter.getCount()) {
KeyboardLayout keyboardLayout = mAdapter.getItem(which);
if (keyboardLayout != null) {
- mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+ mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
keyboardLayout.getDescriptor());
}
dismiss();
@@ -165,7 +167,7 @@
@Override
public Loader<Keyboards> onCreateLoader(int id, Bundle args) {
- return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceDescriptor);
+ return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceIdentifier);
}
@Override
@@ -289,11 +291,11 @@
}
private static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> {
- private final String mInputDeviceDescriptor;
+ private final InputDeviceIdentifier mInputDeviceIdentifier;
- public KeyboardLayoutLoader(Context context, String inputDeviceDescriptor) {
+ public KeyboardLayoutLoader(Context context, InputDeviceIdentifier inputDeviceIdentifier) {
super(context);
- mInputDeviceDescriptor = inputDeviceDescriptor;
+ mInputDeviceIdentifier = inputDeviceIdentifier;
}
@Override
@@ -301,7 +303,7 @@
Keyboards keyboards = new Keyboards();
InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE);
String[] keyboardLayoutDescriptors = im.getKeyboardLayoutsForInputDevice(
- mInputDeviceDescriptor);
+ mInputDeviceIdentifier);
for (String keyboardLayoutDescriptor : keyboardLayoutDescriptors) {
KeyboardLayout keyboardLayout = im.getKeyboardLayout(keyboardLayoutDescriptor);
if (keyboardLayout != null) {
@@ -311,7 +313,7 @@
Collections.sort(keyboards.keyboardLayouts);
String currentKeyboardLayoutDescriptor =
- im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceDescriptor);
+ im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier);
if (currentKeyboardLayoutDescriptor != null) {
final int numKeyboardLayouts = keyboards.keyboardLayouts.size();
for (int i = 0; i < numKeyboardLayouts; i++) {
@@ -349,6 +351,6 @@
}
public interface OnSetupKeyboardLayoutsListener {
- public void onSetupKeyboardLayouts(String inputDeviceDescriptor);
+ public void onSetupKeyboardLayouts(InputDeviceIdentifier mInputDeviceIdentifier);
}
}
\ No newline at end of file
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
index 932dd10..645695e 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
@@ -20,6 +20,7 @@
import com.android.settings.SettingsPreferenceFragment;
import android.content.Context;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.input.InputManager.InputDeviceListener;
import android.hardware.input.KeyboardLayout;
@@ -35,7 +36,7 @@
public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment
implements InputDeviceListener {
- private String mInputDeviceDescriptor;
+ private InputDeviceIdentifier mInputDeviceIdentifier;
private int mInputDeviceId = -1;
private InputManager mIm;
private KeyboardLayout[] mKeyboardLayouts;
@@ -46,15 +47,15 @@
* Intent extra: The input device descriptor of the keyboard whose keyboard
* layout is to be changed.
*/
- public static final String EXTRA_INPUT_DEVICE_DESCRIPTOR = "input_device_descriptor";
+ public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mInputDeviceDescriptor = getActivity().getIntent().getStringExtra(
- EXTRA_INPUT_DEVICE_DESCRIPTOR);
- if (mInputDeviceDescriptor == null) {
+ mInputDeviceIdentifier = getActivity().getIntent().getParcelableExtra(
+ EXTRA_INPUT_DEVICE_IDENTIFIER);
+ if (mInputDeviceIdentifier == null) {
getActivity().finish();
}
@@ -70,7 +71,8 @@
mIm.registerInputDeviceListener(this, null);
- InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceDescriptor);
+ InputDevice inputDevice =
+ mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
if (inputDevice == null) {
getActivity().finish();
return;
@@ -97,10 +99,10 @@
if (layout != null) {
boolean checked = checkboxPref.isChecked();
if (checked) {
- mIm.addKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+ mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
layout.getDescriptor());
} else {
- mIm.removeKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+ mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
layout.getDescriptor());
}
return true;
@@ -143,7 +145,7 @@
private void updateCheckedState() {
String[] enabledKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(
- mInputDeviceDescriptor);
+ mInputDeviceIdentifier);
Arrays.sort(enabledKeyboardLayouts);
for (Map.Entry<CheckBoxPreference, KeyboardLayout> entry : mPreferenceMap.entrySet()) {