/* 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":25652,"date":"2026-05-15T11:18:24","date_gmt":"2026-05-15T11:18:24","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=25652"},"modified":"2026-05-15T11:18:24","modified_gmt":"2026-05-15T11:18:24","slug":"ive-secure-platforms-you-to-definitely-concentrate-on-this-video-game-within-top-blackjack-internet-guide","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/ive-secure-platforms-you-to-definitely-concentrate-on-this-video-game-within-top-blackjack-internet-guide\/","title":{"rendered":"I’ve secure platforms you to definitely concentrate on this video game within top blackjack internet guide"},"content":{"rendered":"

Professionals can choose anywhere between additional brands, as well as Western european, American, and you can live broker roulette, so it is suitable for each other everyday gamble and more proper playing. Members appreciate its reduced domestic border and restricted decision-making, and lots https:\/\/slotslvcasino-ca.com\/en-ca\/<\/a> of systems promote each other important and you may alive specialist baccarat to possess a flaccid and immersive feel. Crypto casinos usually promote multiple blackjack variants, along with live broker alternatives, so it’s right for each other everyday players and those searching for a more practical gambling establishment sense. Instead of desk video game that can only lead ten% so you’re able to 20%, slots normally bring a good 100% betting contribution, causing them to necessary for fulfilling rollover criteria. However, the true value of this type of incentives depends on their betting requirements, and this usually range between 30x to 45x.<\/p>\n

The content and you will courses are based on quality, facts looked search with our customers desires planned, and then we seek to implement the energetic journalistic standards to all or any of one’s services. Enough time restriction to possess finishing totally free revolves betting can often be faster compared to put bonuses \ufffd typically eight-2 weeks. Old-fashioned gambling enterprises you are going to maximum wagers to around $5 for each twist, however, crypto platforms normally let you wager ranging from $ten and $thirty or even more.<\/p>\n

This is very important to ensure you are not risking more than the newest reward you’re getting<\/h2>\n

That is regardless of how fascinating and satisfying its advertisements try. Prove minimal put, restriction bonus cap, and you can betting terms, and ensure these include healthy, prior to signing right up. We managed to make it possible for you to choose a knowledgeable Bitcoin gambling establishment incentive.<\/p>\n

Bitcoin gambling enterprise no deposit extra now offers are receiving all the more prominent. The quality offer are an excellent 100% suits, however it is very common to find a much bigger Bitcoin bonus among the greatest platforms. They typically match a percentage of your own earliest Bitcoin put. Particular video game was omitted, delight discover full list to your crypto-games.io It\ufffds generally a one-date render that gives participants added bonus currency, free revolves, or both after they make basic deposit.<\/p>\n

Stating crypto gambling enterprise bonuses is a simple process, but attention to outline is essential to make sure effective activation and you will utilization. These electronic platforms often establish much more good bonuses as compared to conventional casinos on the internet, a sensation largely caused by the latest inherent efficiencies and aggressive landscape of the crypto playing sector. Web based casinos share with you no-deposit bonuses for existing people since support perks or re also-wedding has the benefit of.<\/p>\n

I produced places, starred games, and you can searched distributions first-hand. It’s one of the more founded names inside crypto gaming that have an enormous community, everyday rewards, and you will a stronger VIP system. Distributions are punctual, having crypto payouts generally processed within a few minutes. We have filtered out the networks which have predatory incentive conditions otherwise hidden KYC traps, making just the of them you to definitely cleared our first-hand results audits. Crypto gambling enterprises provide the fastest deals and you can lower fees on the playing business, efficiently skipping the newest rubbing and delays off legacy banking.<\/p>\n

In order to with this specific, we have listed metropolitan areas to check out to have Bitcoin local casino incentive rules for the best betting sense. In order to be entitled to Jackbits per week crypto casino zero deposit incentives, members must sign up for the fresh gambling enterprises social media channels. Jackbit was a reliable overseas crypto gambling enterprise one wants to reward its devoted users which have each week crypto no deposit bonuses. There’s no question one crypto gambling enterprises reaches the top of the list in terms of offering the most significant zero-deposit bonuses. Really crypto local casino no-deposit bonuses try at the mercy of words and you can conditions that you must know regarding.<\/p>\n

Along with, listed below are some our very own in control betting help guide to enjoy smarter and you can contained in this your restrictions. Extremely networks provides automatic options that faith \ufffdrepeat\ufffd pages more new ones. They may allow you to deposit and you can enjoy anonymously, although next your just be sure to withdraw an excellent $5,000 jackpot, the latest conformity flags rise. Less than, you will find an initial overview of the leading software business from the crypto gaming world today.<\/p>\n

Timely profits and large incentives will be enjoyable, however, residing in handle matters much more<\/h2>\n

Free twist incentives offered by casinos on the internet is only able to be studied for the position game. First-time depositors might possibly be entitled to receive 150 free crypto revolves extra having the very least put out of $ten. Playbet try a newly dependent crypto betting webpages along with 5,000+ crypto video game, a good Sportsbook, and a private VIP bar. The fresh upside away from CasinoBet’s crypto free revolves bonus is the fact that the wagering criteria try lowest during the x5, so it is easier to claim your own payouts!<\/p>\n

So it signal-right up prize is actually a hostile revenue construction \ufffd the newest gambling establishment no deposit incentive advertisements are often go out limited, with unique bonus codes. Talk about premium $50 no-deposit bonuses to your large possible contained in this group, that have an eye fixed into the terminology, although. Online casino no-deposit extra has the benefit of worthy of $\/\ufffd30-$\/\ufffd50 compensate our very own premium level.<\/p>\n

No-deposit incentives is actually a useful starting point for understanding crypto change in place of economic chance, but there are many more good ways to acquire sense. Shortly after distinguishing some cryptocurrency transfers that are offering zero-put bonuses and therefore are recognized for its reliability and you will dependability, take a look at them centered on your needs and then make the choice. Everyday view-ins and you may task end render subsequent chances to gather things, which is redeemed to have change bonuses and you may USDT. Through providing particularly zero-put bonuses, this type of exchanges give an incentive to possess investors to come calmly to the platform and check out a danger-100 % free method for the testing out the system having diverse change steps. This type of venture is out there by exchange platforms that create an alive trade account for pages and you can borrowing they that have an excellent 100 % free incentive, without initial deposit needed.<\/p>\n

Although not, the key is to find a knowledgeable bling web sites that provide a mixture of sophisticated game choices and you will glamorous Bitcoin 100 % free spins incentives. Instead, certain free revolves bonuses are supplied to you personally during your account options page or automatically centered on the gamble. Right here, you will find a summary of incentives, and you may have to find the totally free revolves bring. The newest CryptoNews group spent a lot of time looking at the fresh new regards to totally free revolves bonuses within individuals Bitcoin gambling enterprises.<\/p>\n

The latest Bitcoin local casino incentives you can get from our research list a lot more than have got all become scrutinized down seriously to the tiniest information within the their fine print. This is certainly however while the per driver wishes you to decide on their website, making the crypto gambling establishment added bonus industry extremely aggressive. We’ve got reviewed the modern crypto extra trend to carry the most exciting has the benefit of and you will advertisements available.<\/p>\n

If you want the gambling enterprise classes getting a social experience, then you might need to take a look at these campaigns. The benefit generally fits a share of your own the new put (tend to twenty-five\ufffd75%, but either up to 100%), delivering additional money otherwise totally free spins. Having said that, crypto casinos would offer genuine no-deposit bonuses, but we’d highly recommend your err on the side regarding alerting and you can take your time to your tiny print. Within CryptoSpinners, we try to save all of our lists updated when you can to carry you the best and most recent incentives. It is possible to typically have to make use of the main benefit money on the website to have exchange.<\/p>\n","protected":false},"excerpt":{"rendered":"

Professionals can choose anywhere between additional brands, as well as Western european, American, and you can live broker roulette, so it is suitable for each other everyday gamble and more proper playing. Members appreciate its reduced domestic border and restricted decision-making, and lots https:\/\/slotslvcasino-ca.com\/en-ca\/ of systems promote each other important\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-25652","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/25652","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=25652"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/25652\/revisions"}],"predecessor-version":[{"id":25653,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/25652\/revisions\/25653"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=25652"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=25652"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=25652"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}