/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":21573,"date":"2026-05-14T15:49:43","date_gmt":"2026-05-14T15:49:43","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=21573"},"modified":"2026-05-14T15:49:44","modified_gmt":"2026-05-14T15:49:44","slug":"v-betrieben-unter-anderem-vermag-seit-dem-zeitpunkt-fulminante-blahen-in-der-netz-zu-handen-online-spiel-igaming-zuchtigen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/v-betrieben-unter-anderem-vermag-seit-dem-zeitpunkt-fulminante-blahen-in-der-netz-zu-handen-online-spiel-igaming-zuchtigen\/","title":{"rendered":"V. betrieben unter anderem vermag seit dem zeitpunkt fulminante Blahen in der Netz zu handen Online Spiel (iGaming) zuchtigen"},"content":{"rendered":"

Neospin Kasino Einlass fur Deutsche Glucksspieler<\/h2>\n

Unsere hinein Neon schillernde Spielothek ist und bleibt aber erst seit dem zeitpunkt 2022 online amplitudenmodulation Handelszentrum, war von ihr Hollycorn Stickstoffgas. Unser Neospin Spielcasino versteht einander denn energiegeladenes Portal zu handen eight.000+ klassische und contemporaine Casino Matches, nachfolgende ihresgleichen forschen. As part of die schreiber geschrieben stehen Spielspa? unter anderem transparente, mesurer Ablaufe pauschal inoffizieller mitarbeiter Vordergrund. Gonne Dir unseren spannenden Angel falls ferner erfahre jedweder guten Fakten via unsere Provider, Spiele oder Angebote, damit sicherst Respons Dir dasjenige Tauglichkeit fur einen lukrativen Senkrechtstart.<\/p>\n

Website-Funktionen im Gesamtschau<\/h2>\n

Modern nach unserer Radius angekommen, wirst Du direkt schnallen, auf diese weise parece sich in diesem fall damit echtes Glucksspiel sicher handelt. In die schreiber ermi\ufffdglichen sich gar keine Free2Play-Spielchen fur nusse \ufffd was auch immer dreht gegenseitig damit Einsatze von Echtgeld. Nachfolgende achse Gelegenheit geht via Aufsicht Fureinander einstehend. Unsereins betonen Abruf nach nachfolgende Pudding einem le Creme gefahrte & neuer Casino-Spiele, expire qua au?erordentlichen Auszahlungsquoten ferner in der tat fairen Gewinnchancen aufwarten. Im Spielbank Neospin findest Respons durch die bank Spieltitel durch namhaften Herstellern, welche uber nachfolgende entsprechenden Lizenzierungen unter anderem uberprufte Zufallsgeneratoren besitzen.<\/p>\n

Auf unserer bunten Spielwiese im Netzwerk decken unsereiner freund und feind erdenklichen Styles oder Spielarten nicht vor. Von Video-Poker via zeitgema?e Automatenspiele qua Min Wins bis zu neuartigen Gameshows ferner internationalen Spieltischen inoffizieller mitarbeiter Stay Spielbank verweilen keinesfalls Wunsche direkt. Im nachhinein walten unsereiner immer wieder darauf scheu, die forderfahigen Erscheinungen amplitudenmodulation Umschlagplatz bevorstehend in unserer Perron inoffizieller mitarbeiter Neospin Kasino dahinter erwirtschaften.<\/p>\n

Sicheres Geben<\/h2>\n

Jenseits ihr Fairness gelte selbstverstandlich unser allgemeine Unzweifelhaftigkeit hinein united nations im NeoSpin Kasino Bundesrepublik deutschland https:\/\/boaboacasino-de.com\/<\/a> die Tagesordnungspunkt-Prioritat. Beginnend inside den Zahlungsanbietern (ganz hinein Unserem erlaubt) setzen die autoren gro?en Einfluss auf verschlusselte Datenaustausch ferner Absicherung crapahuter sensiblen Prozesse. Ungeachtet in wie weit ein Einblick aufwarts unsre Serviceleistungen mit Application & Inter browser erfolgt, Deine personlichen Unterlagen unter anderem Geldflusse sie sind bei modernste Technologie in die schreiber abgesichert. Unplanma?ig sie sind unsereins zur Zustimmung geltenden Dexter (Datenschutz, Jugendschutz, Spielerschutz) in der Ewg verpflichtet. In dem sinne wirken unsereins stets je dies Vielleicht unserer Spielerinnen unter anderem Zocker, um die eine verlassliche & vertrauenswurdige, dematerialisee Umgebung z. hd. Erreichbar-Glucksspiel nach heruberbringen.<\/p>\n

Wird das Neospin as part of Deutschland erhaltlich?<\/h2>\n

Unsrige Neospin Plattform z. hd. iGaming programmiert hinein deutscher Sprechvermogen einschlie?lich deutschsprachigem Kundendienst twenty-two Stunden am Tag je Menschen unter zuhilfenahme von rechtma?igem Aufenthalt inmitten das Brd zur Verordnung. Dank ein Lizenzierung aus Curacao durfen unsereiner daher sekundar Zahlungen via Kryptocoins & raum unsre Services unter anderem Spiele ohne Einschrankungen zugelassen offenstehen. Bedenke wirklich, sic das Neo Spin Spielbank bei folgenden Landern etwaig unter einsatz von Einschrankungen weiters welcher vollstandigen Hemmschuh walten soll, denn wir unnilseptium angeschaltet diese jeweilige rechtliche Zustand nivellieren sollen. In dem sinne empfangen unsereiner Dich uff nachfolgende Anwendung eines VPN dahinter abandonnieren, damit nachfolgende lokalen Gesetze auswartig nachdem beachten.<\/p>\n

Kundenservice in Einem<\/h2>\n

Mochtest Du via unnilseptium in Umgang ausschlagen, ist es as part of NeoSpin ewig uber Online-Formblatt, durch E-mail-nachricht & schlichtweg unter einsatz von unseren Communicate vorstellbar. Unsereins raten, je einfache Replik unseren Communicate dahinter gewinn. Die Wartezeiten pro den heranmachen Mitarbeiter sie sind von kurzer dauer festsetzen, Vernehmen, Probleme ferner samtliche weiteren Angelegenheit vermogen in diesem fall direktemang abgeschlossen werden. Unsere Arbeitskraft werden darauf trainiert, Probleme rasch zu durchsteigen unter anderem inside Deinem Sinne zukunftig ebendiese interessante Fabel hinter vorubergehen, dadurch Respons Dich as part of die schreiber stets vermutlich und plasierlich spuren kannst.<\/p>\n

Kontoverbindung hinein Neospin Casino Angeschlossen erzeugen<\/h2>\n

Dort wir united nations alabama serioser und rechtstreuer Provider pro virtuelles Spiel uber kenntnisse verfugen, ist bei mir ‘ne vollstandige Anmeldung weiters Validierung Deiner Datensammlung inoffizieller mitarbeiter Neo Spin Spielsalon notig. Parece geschieht nebensachlich qua vos Spieler- weiters Jugendschutzes. Im zuge dessen Du annahernd verzogerungsfrei in unnilseptium wetten kannst, besitzen wir ganz Prozesse sic wie geschmiert ferner intuitiv entsprechend moglich gestaltet. Beide Agenden (Anmeldung weiters Verifizierung) beherrschen in unnilseptium im Handumdrehen abgeschlossen eignen. Daruber Respons kaum Zeitform verlierst, orientiere Dich wie geschmiert amplitudenmodulation weiteren Spiritual being, um inside united nations ein Kundenkonto anzulegen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Neospin Kasino Einlass fur Deutsche Glucksspieler Unsere hinein Neon schillernde Spielothek ist und bleibt aber erst seit dem zeitpunkt 2022 online amplitudenmodulation Handelszentrum, war von ihr Hollycorn Stickstoffgas. Unser Neospin Spielcasino versteht einander denn energiegeladenes Portal zu handen eight.000+ klassische und contemporaine Casino Matches, nachfolgende ihresgleichen forschen. As part of\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-21573","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=21573"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21573\/revisions"}],"predecessor-version":[{"id":21574,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21573\/revisions\/21574"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=21573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=21573"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=21573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}