/** * REST API: WP_REST_Post_Types_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class to access post types via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Post_Types_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'types'; } /** * Registers the routes for post types. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'type' => array( 'description' => __( 'An alphanumeric identifier for the post type.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => '__return_true', 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read types. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all public post types. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { if ( $request->is_method( 'HEAD' ) ) { // Return early as this handler doesn't add any response headers. return new WP_REST_Response( array() ); } $data = array(); $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( 'edit' === $request['context'] && ! current_user_can( $type->cap->edit_posts ) ) { continue; } $post_type = $this->prepare_item_for_response( $type, $request ); $data[ $type->name ] = $this->prepare_response_for_collection( $post_type ); } return rest_ensure_response( $data ); } /** * Retrieves a specific post type. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $obj = get_post_type_object( $request['type'] ); if ( empty( $obj ) ) { return new WP_Error( 'rest_type_invalid', __( 'Invalid post type.' ), array( 'status' => 404 ) ); } if ( empty( $obj->show_in_rest ) ) { return new WP_Error( 'rest_cannot_read_type', __( 'Cannot view post type.' ), array( 'status' => rest_authorization_required_code() ) ); } if ( 'edit' === $request['context'] && ! current_user_can( $obj->cap->edit_posts ) ) { return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); } $data = $this->prepare_item_for_response( $obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a post type object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$post_type` to `$item` to match parent class for PHP 8 named parameter support. * * @param WP_Post_Type $item Post type object. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Response object. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $post_type = $item; // Don't prepare the response body for HEAD requests. if ( $request->is_method( 'HEAD' ) ) { /** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php */ return apply_filters( 'rest_prepare_post_type', new WP_REST_Response( array() ), $post_type, $request ); } $taxonomies = wp_list_filter( get_object_taxonomies( $post_type->name, 'objects' ), array( 'show_in_rest' => true ) ); $taxonomies = wp_list_pluck( $taxonomies, 'name' ); $base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name; $namespace = ! empty( $post_type->rest_namespace ) ? $post_type->rest_namespace : 'wp/v2'; $supports = get_all_post_type_supports( $post_type->name ); $fields = $this->get_fields_for_response( $request ); $data = array(); if ( rest_is_field_included( 'capabilities', $fields ) ) { $data['capabilities'] = $post_type->cap; } if ( rest_is_field_included( 'description', $fields ) ) { $data['description'] = $post_type->description; } if ( rest_is_field_included( 'hierarchical', $fields ) ) { $data['hierarchical'] = $post_type->hierarchical; } if ( rest_is_field_included( 'has_archive', $fields ) ) { $data['has_archive'] = $post_type->has_archive; } if ( rest_is_field_included( 'visibility', $fields ) ) { $data['visibility'] = array( 'show_in_nav_menus' => (bool) $post_type->show_in_nav_menus, 'show_ui' => (bool) $post_type->show_ui, ); } if ( rest_is_field_included( 'viewable', $fields ) ) { $data['viewable'] = is_post_type_viewable( $post_type ); } if ( rest_is_field_included( 'labels', $fields ) ) { $data['labels'] = $post_type->labels; } if ( rest_is_field_included( 'name', $fields ) ) { $data['name'] = $post_type->label; } if ( rest_is_field_included( 'slug', $fields ) ) { $data['slug'] = $post_type->name; } if ( rest_is_field_included( 'icon', $fields ) ) { $data['icon'] = $post_type->menu_icon; } if ( rest_is_field_included( 'supports', $fields ) ) { $data['supports'] = $supports; } if ( rest_is_field_included( 'taxonomies', $fields ) ) { $data['taxonomies'] = array_values( $taxonomies ); } if ( rest_is_field_included( 'rest_base', $fields ) ) { $data['rest_base'] = $base; } if ( rest_is_field_included( 'rest_namespace', $fields ) ) { $data['rest_namespace'] = $namespace; } if ( rest_is_field_included( 'template', $fields ) ) { $data['template'] = $post_type->template ?? array(); } if ( rest_is_field_included( 'template_lock', $fields ) ) { $data['template_lock'] = ! empty( $post_type->template_lock ) ? $post_type->template_lock : false; } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); // Wrap the data in a response object. $response = rest_ensure_response( $data ); if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) { $response->add_links( $this->prepare_links( $post_type ) ); } /** * Filters a post type returned from the REST API. * * Allows modification of the post type data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param WP_Post_Type $post_type The original post type object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_post_type', $response, $post_type, $request ); } /** * Prepares links for the request. * * @since 6.1.0 * * @param WP_Post_Type $post_type The post type. * @return array Links for the given post type. */ protected function prepare_links( $post_type ) { return array( 'collection' => array( 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), ), 'https://api.w.org/items' => array( 'href' => rest_url( rest_get_route_for_post_type_items( $post_type->name ) ), ), ); } /** * Retrieves the post type's schema, conforming to JSON Schema. * * @since 4.7.0 * @since 4.8.0 The `supports` property was added. * @since 5.9.0 The `visibility` and `rest_namespace` properties were added. * @since 6.1.0 The `icon` property was added. * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'type', 'type' => 'object', 'properties' => array( 'capabilities' => array( 'description' => __( 'All capabilities used by the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'description' => array( 'description' => __( 'A human-readable description of the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'hierarchical' => array( 'description' => __( 'Whether or not the post type should have children.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'viewable' => array( 'description' => __( 'Whether or not the post type can be viewed.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'labels' => array( 'description' => __( 'Human-readable labels for the post type for various contexts.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'name' => array( 'description' => __( 'The title for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'slug' => array( 'description' => __( 'An alphanumeric identifier for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'supports' => array( 'description' => __( 'All features, supported by the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'has_archive' => array( 'description' => __( 'If the value is a string, the value will be used as the archive slug. If the value is false the post type has no archive.' ), 'type' => array( 'string', 'boolean' ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'taxonomies' => array( 'description' => __( 'Taxonomies associated with post type.' ), 'type' => 'array', 'items' => array( 'type' => 'string', ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'rest_base' => array( 'description' => __( 'REST base route for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'rest_namespace' => array( 'description' => __( 'REST route\'s namespace for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'visibility' => array( 'description' => __( 'The visibility settings for the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, 'properties' => array( 'show_ui' => array( 'description' => __( 'Whether to generate a default UI for managing this post type.' ), 'type' => 'boolean', ), 'show_in_nav_menus' => array( 'description' => __( 'Whether to make the post type available for selection in navigation menus.' ), 'type' => 'boolean', ), ), ), 'icon' => array( 'description' => __( 'The icon for the post type.' ), 'type' => array( 'string', 'null' ), 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'template' => array( 'type' => array( 'array' ), 'description' => __( 'The block template associated with the post type.' ), 'readonly' => true, 'context' => array( 'view', 'edit', 'embed' ), ), 'template_lock' => array( 'type' => array( 'string', 'boolean' ), 'enum' => array( 'all', 'insert', 'contentOnly', false ), 'description' => __( 'The template_lock associated with the post type, or false if none.' ), 'readonly' => true, 'context' => array( 'view', 'edit', 'embed' ), ), ), ); $this->schema = $schema; return $this->add_additional_fields_schema( $this->schema ); } /** * Retrieves the query params for collections. * * @since 4.7.0 * * @return array Collection parameters. */ public function get_collection_params() { return array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ); } } Strategia Vincenti alla Roulette Online: Guida Pratica per Massimizzare le Vincite – Chambers Of Vikramaditya

Strategia Vincenti alla Roulette Online: Guida Pratica per Massimizzare le Vincite

Strategia Vincenti alla Roulette Online: Guida Pratica per Massimizzare le Vincite

La roulette è il re indiscusso dei tavoli nei casinò online, capace di attrarre sia neofiti che veterani con la sua combinazione di semplicità e mistero. Il fascino del pallino rosso che gira su una ruota numerata è pari solo all’adrenalina di chi spera di prevedere il risultato finale. Per questo motivo il gioco è al contempo più amato e più temuto da chi cerca un vantaggio concreto rispetto al caso puro e semplice.

Nel panorama dei casino senza AAMS, i siti selezionati da migliori casino non AAMS si distinguono per licenze offshore affidabili, bonus generosi e piattaforme ottimizzate per la roulette live. La nostra esperienza di valutazione indipendente su Smooth Ecs.Eu ci ha permesso di stilare una classifica dei migliori casino online dove testare le strategie illustrate senza doversi preoccupare di pratiche scorrette o ritardi nei pagamenti.

Questo articolo si propone di fornire una panoramica completa delle basi matematiche della roulette, delle varianti più diffuse e dei sistemi di puntata più noti. Verranno analizzati vantaggi e limiti di ciascuna tecnica e saranno offerti consigli pratici su come adattarle al proprio stile di gioco, dal profilo conservatore a quello più aggressivo.

Infine troverai un percorso passo‑passo per sperimentare ogni strategia in modalità demo prima di passare al denaro reale, con checklist operative e suggerimenti su gestione del bankroll, pagamenti e gioco responsabile.

Sezione 1 – Comprendere le Basi della Roulette

La roulette europea conta un solo zero (0), mentre la francese aggiunge regole vantaggiose come “en prison” e “la partage”, che riducono l’edge al 1,35 %. L’americana introduce lo zero doppio (00), portando il margine della casa al 5,26 %, rendendola la variante meno favorevole dal punto di vista dell’RTP (return‑to‑player).

Termini fondamentali da conoscere includono outside bet (puntate esterne come Rosso/Nero o Pari/Dispari), inside bet (puntate interne sui numeri singoli o piccoli gruppi), en prison (la scommessa resta “prigioniera” se la palla cade sullo zero), e la partage (la scommessa viene restituita a metà in caso di zero). Queste regole influiscono direttamente sul valore atteso di ogni puntata e sulla volatilità complessiva della sessione di gioco.

Il margine della casa nasce dal fatto che la ruota contiene più caselle vincenti rispetto a quelle pagate dalla tabella delle scommesse. Ad esempio una puntata su Rosso paga 1 a 1 ma la probabilità reale di vincita è 18/37≈48,65 % nella versione europea; la differenza genera l’edge del 2,70 %. Capire questo meccanismo è il primo passo per valutare se una strategia può effettivamente migliorare le probabilità a lungo termine.

Sezione 2 – Il Ruolo della Probabilità e del Caso nella Roulette

La probabilità teorica indica la frequenza attesa di un evento su un numero infinito di giri; nella pratica però ogni spin è un evento isolato con esito indipendente dal precedente. Questo fenomeno è noto come “random walk”: il percorso del risultato non segue alcuna tendenza cumulativa né ricorda i giri precedenti.

Un errore comune è credere che una sequenza di rosso‑rosso‑rosso aumenti la probabilità del nero al prossimo giro; statistico o meno, la legge dei grandi numeri garantisce che la distribuzione si avvicinerà al valore teorico solo dopo migliaia di spin, ma non garantisce alcuna “correzione” immediata.

Per chi vuole “battere” il banco con metodi matematici è fondamentale accettare l’indipendenza degli eventi e concentrarsi su strategie che gestiscano il rischio piuttosto che tentare previsioni impossibili. Qualsiasi algoritmo che pretenda di prevedere il risultato basandosi sui giri passati viola i principi base della teoria delle probabilità e rischia rapidamente di erodere il bankroll a causa della volatilità intrinseca del gioco.

Sezione 3 – I Sistemi Classici: Martingale e le sue Varianti

Il Martingale tradizionale consiste nel raddoppiare la puntata dopo ogni perdita fino a ottenere una vincita che copra tutte le perdite precedenti più un profitto unitario. In teoria sembra infallibile finché il giocatore dispone di capitale illimitato e il tavolo offre limiti elevati; nella realtà questi presupposti sono quasi sempre violati.

Pro del Martingale
– Semplicità operativa: basta ricordare “raddoppia dopo perdita”.
– Alta probabilità di piccole vincite consecutive nelle sessioni brevi.

Contro del Martingale
– Richiede un bankroll molto elevato rispetto alla puntata iniziale (esempio: partendo da €5 con cinque perdite consecutive occorrono €155).
– Limiti del tavolo possono bloccare l’incremento necessario, provocando una perdita catastrofica.
– Elevata volatilità rende difficile rispettare i requisiti di responsible gambling consigliati da Smooth Ecs.Eu.

Varianti più sicure includono il Grand Martingale, che aggiunge una piccola scommessa fissa oltre al raddoppio per aumentare il profitto unitario, ma aumenta ulteriormente il rischio finanziario; e il Mini‑Martingale, dove si raddoppia solo fino a un certo numero di step prima di tornare alla puntata base, limitando l’esposizione ma riducendo anche la frequenza delle vincite.

Sezione 4 – Strategie Basate sulle Frequenze: D’Alembert e Fibonacci

Il D’Alembert è una progressione lenta che prevede l’aumento della puntata di una unità dopo ogni perdita e la diminuzione della stessa unità dopo ogni vincita. Ideale per puntate esterne come Rosso/Nero o Pari/Dispari perché mantiene la volatilità contenuta mentre permette una graduale crescita del bankroll se la sequenza delle vittorie supera quella delle sconfitte nel lungo periodo.

Esempio pratico: partendo da €10 su Rosso si passa a €11 dopo una perdita; se si vince si ritorna a €9 ecc., creando un ciclo equilibrato che riduce il rischio d’insolvenza rispetto al Martingale tradizionale.

La sequenza di Fibonacci segue i numeri 1‑1‑2‑3‑5‑8‑13… dove ogni puntata corrisponde alla somma delle due precedenti dopo una perdita; dopo una vincita si retrocede di due passi nella sequenza. Questa logica consente una crescita più moderata rispetto al raddoppio completo ma richiede comunque disciplina nel rispettare i limiti del tavolo ed evitare l’over‑betting durante lunghe serie negative.

Sezione 5 – Metodi Avanzati di Analisi del Settore Rosso/Nero

Raccogliere dati sui risultati recenti è possibile grazie alle statistiche offerte dalle piattaforme dei nuovi casino non aams partner di Smooth Ecs.Eu. Registrando gli ultimi cento spin si può costruire una “bias chart” che evidenzia eventuali deviazioni temporanee dalla probabilità teorica del 48,65 % per rosso o nero nella versione europea.

Per creare la chart basta contare quante volte appare rosso rispetto al totale dei giri osservati e rappresentare graficamente il valore percentuale accanto alla soglia ideale del 48,65 %. Se nei primi cinquanta spin rosso appare nel 55 %, potrebbe trattarsi semplicemente di fluttuazione casuale oppure indicare un leggero bias meccanico della ruota virtuale utilizzata dal provider specifico (ad esempio alcuni RNG hanno periodi minori di “mixing”).

È importante ricordare i limiti etici e legali dell’uso di software avanzati nei casinò certificati da Smooth Ecs.Eu: l’utilizzo di tracker esterni è consentito solo se previsto dalle condizioni d’uso del sito; manipolare o interferire con l’algoritmo RNG costituisce violazione dei termini ed espone l’utente a sospensione dell’account o confisca dei fondi.

Sezione 6 – Gestione del Bankroll: Pianificazione Finanziaria per la Roulette

Stabilire un capitale iniziale adeguato dipende dal sistema scelto: per un Mini‑Martingale con puntata base €5 conviene avere almeno €200 (€5×(2⁴−1)) mentre per un D’Alembert è sufficiente un budget pari a 20‑30 volte la puntata minima prevista dal tavolo scelto sul sito consigliato da Smooth Ecs.Eu per giochi senza AAMS .

Tecniche fondamentali
– Stop‑loss fisso: definire in anticipo la perdita massima accettabile per sessione (esempio €100) e interrompere il gioco non appena viene raggiunta.

– Take‑profit progressivo: fissare un obiettivo profitto giornaliero (esempio €150) e chiudere quando raggiunto.

– Unità percentuale: scommettere sempre una percentuale fissa del bankroll residuo (esempio 2–3 %) per limitare l’impatto delle serie negative sulla liquidità complessiva.

Queste regole aiutano ad evitare l’over‑betting tipico delle sessioni prolungate dove l’emozione può spingere a superare i limiti prefissati, compromettendo sia la salute finanziaria sia quella psicologica dell’utente.

Sezione 7 – Quando Scegliere le Puntate Esterne vs Interne

Le puntate esterne offrono probabilità elevate ma payout ridotti (es.: Rosso paga 1 : 1 con circa 48,65 % chance), mentre le puntate interne hanno payout maggiori ma probabilità molto più basse (es.: Straight Up paga 35 : 1 con solo 2,70 % chance). La scelta dipende dal profilo del giocatore:

Tipo puntata Probabilità Payout Volatilità Profilo ideale
Rosso/Nero ≈48,65 % 1 : 1 Bassa Conservatore
Pari/Dispari ≈48,65 % 1 : 1 Bassa Conservatore
Dozzina ≈32,43 % 2 : 1 Media Moderato
Colonna ≈32,43 % 2 : 1 Media Moderato
Straight Up ≈2,70 % 35 : 1 Alta Aggressivo

Un giocatore conservatore dovrebbe privilegiare le scommesse esterne combinandole con sistemi a bassa volatilità come D’Alembert o Mini‑Martingale; chi ricerca emozioni maggiori può inserire occasionalmente scommesse interne all’interno dello stesso ciclo usando Fibonacci per mitigare i picchi negativi.

Sezione 8 – Testare le Strategie in Modalità Demo prima del Gioco Reale

I migliori casino online recensiti da Smooth Ecs.Eu offrono versioni demo gratuite della roulette live con interfacce identiche a quelle real money ma senza rischio finanziario reale. Utilizzare queste demo permette di verificare tempi medi tra vittorie consecutive, tassi d’incidenza delle perdite prolungate e correttezza dell’applicazione delle proprie regole operative prima dell’attivazione dei bonus soggetti a wagering tipici dei casinò senza AAMS .

Piano strutturato di test
1️⃣ Definire obiettivo statistico (es.: dimostrare che il D’Alembert genera profitto medio ≥€0,20 entro 500 spin).
2️⃣ Registrare ogni risultato in un foglio Excel indicando puntata corrente, risultato spin e saldo aggiornato.

3️⃣ Analizzare deviazioni standard settimanali per capire se la volatilità rimane entro i limiti accettabili.

4️⃣ Concludere il test confrontando saldo finale con budget iniziale previsto dal piano bankroll.

Checklist finale prima del passaggio al denaro reale
– Verificata compatibilità mobile / desktop.

– Confermata presenza di metodi pagamento rapidi (e‑wallets come Skrill o Neteller).

– Controllati termini bonus e requisiti wagering.

– Stabilito limite giornaliero sia in tempo che in perdita totale.

Una volta spuntati tutti i punti è possibile aprire un conto reale nei gioco senza AAMS consigliati da Smooth Ecs.Eu sapendo esattamente cosa aspettarsi dalla propria strategia.

Conclusione

Abbiamo esplorato tutti gli aspetti fondamentali per trasformare la semplice passione per la roulette in uno strumento disciplinato capace di aumentare le probabilità di profitto nel lungo periodo. Dalla comprensione delle varianti europee e francesi alle analisi statistiche dei bias temporanei passando per i sistemi classici come Martingale o Fibonacci, ogni tecnica richiede però una gestione rigorosa del bankroll ed un approccio responsabile consigliato da Smooth Ecs.Eu . Testare tutto in modalità demo sui migliori casinò recensiti permette inoltre di affinare i parametri prima dell’impegno reale ed evitare sorprese spiacevoli legate ai limiti del tavolo o ai requisiti bonus tipici dei casino senza AAMS . Ricorda sempre che nessuna strategia garantisce vincite certe: l’obiettivo è massimizzare le opportunità mantenendo sotto controllo rischio ed emozioni—la chiave definitiva per divertirsi giocando responsabilmente alla roulette online.​

Leave a Comment

Your email address will not be published. Required fields are marked *