/* 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":16680,"date":"2026-05-09T14:12:39","date_gmt":"2026-05-09T14:12:39","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16680"},"modified":"2026-05-09T14:12:42","modified_gmt":"2026-05-09T14:12:42","slug":"kasyno-wykorzystuje-zaawansowane-bezpieczenstwo-informacji-chroniac-informacje-wylaczne-i-mozesz-finansowe-polskich-graczy","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kasyno-wykorzystuje-zaawansowane-bezpieczenstwo-informacji-chroniac-informacje-wylaczne-i-mozesz-finansowe-polskich-graczy\/","title":{"rendered":"Kasyno wykorzystuje zaawansowane bezpieczenstwo informacji, chroniac informacje wylaczne i mozesz finansowe polskich graczy"},"content":{"rendered":"

Dla ludzi, i to cenia sobie najnowsze wybory, przygotowalismy z kasynie Vulkan Vegasopcje integracji z kontami spolecznosciowymi<\/h2>\n

Ponizsze zestawienie pomoze ci szybko prognozowac, czy nasza system Vulkan Vegas pasuje Twoje wymaganie zobacz nowoczesnego kasyna w internecie. Wybory malzonka miejsca do gry technologia informacyjna operacja, kogo wymagan krytyki i albo mocnych, od i bedziesz slabszych stron operatora. Ponizsza tabela be kompendium wiedzy o Vulkan Vegas, pozwalajac na natychmiastowe zapoznanie sie ktorzy maja najwazniejszymi faktami przed rozpoczeciem gra. Nasza program cechy dostepnosc na najnowoczesniejszych slotow, gier stolowych oraz zaawansowanego przedsiebiorstwa hazardowe nienagrane, zapewniajac plyny sprawy na kazdym urzadzeniu. Pomoc w polskiej waluty i bedziesz popularnych technik wydawania, takich jak Skrill jesli czy nie Trustly, daje, ze firma finansami jest proste i bedziesz praktyczne.<\/p>\n

Wiekszosc z transakcje, a moze Spicy Jackpots<\/a> wplaty, poniewaz i mozesz wygrana na PLN, sa zabezpieczone, to zapewnia poczucie wlasnej wartosci, ty do srodki probuje przeciagniecia. Wystarczajaco otworzyc przegladarke, zalogowac sie w masz czlonkostwo i grac \ufffd jak automatow po kasyno w czasie rzeczywistym. Warunki obrotu sa oczywiste \ufffd 40x w bonusu gotowkowego i mozesz 30x w wygranych ktorzy maja darmowych spinow, co dokladnie jest standardem na rynku. Vulkan Vegas technologia informacyjna kasyno internetowe, ktore slynie z hojnych bonusow i mozesz promocji, jak atrakcyjnych w polskich graczy. Vulkan Vegas to przedsiebiorstwa hazardowe, i to z powodu swojej zakres gier i bedziesz na najwyzszym poziomie rozgrywki zdobylo umysly polskich graczy.<\/p>\n

Co wiecej, polskojezyczna foliate i obsluga klienta sprawiaja, jednego Vulkan Vegas jest wlasciwie idealnym wyborem w graczy ktorzy maja Polski, szukajacych bezpiecznego i ekscytujacego spotkania do kasynie siec. Dostepne czesto na komputerach, kiedys i bedziesz urzadzeniach mobilnych, kasyno ma plynna rozgrywke bez potrzeby pobierania dodatkowego oprogramowania. Wystarczajaco, jednego do otworzysz przegladarke na swoim urzadzeniu mobilnym, wejdziesz na strone Vulkan Vegas i bedziesz zalogujesz sie do masz czlonkostwo. Gra na zywo pojawia sie 24\/siodmy i bedziesz zapewniaja wlasciwe wie kasyna z mozliwoscia interakcji posiadanie krupierem oraz innymi graczami. W ofercie jest popularne gra wideo takie cosh, ruletka, baccarat i mozesz kasyno poker prawie w kazdym wersjach. Jak, Vulkan Vegas ma te zalete, ze roznych gier kasynowych w czasie rzeczywistym ktorzy maja profesjonalnymi krupierami.<\/p>\n

Profesjonalna obsluga klienta na jezyku polskim pomoc 24 \/ 7 z powodu czat w czasie rzeczywistym i bedziesz email<\/h2>\n

Zrobic wydac wyplaty, zaloguj sie do masz konto, udaj sie sekcji ‘Wyplata’ i wybierz preferowana sposob na zyski. Aby dokonczyc wplaty, zamelduj sie na masz konto, przejdz do sekcji ‘Wplata’ i wybierz preferowana podejscie do uzywanie. Vulkan Vegas nawet oferuje nowym graczom dobrej wielkosci pakiet powitalny, dolaczony na 4000 PLN oraz 125 darmowych spinow. Wez kwestionariusz podajac swoje osobistymi, cel email oraz numer telefonu. Produkowac zlozyc konto do Vulkan Vegas, kliknij myszka przycisk ‘Zarejestruj sie’ na stronie glownej.<\/p>\n

Dlatego Twoje dane beda jeszcze lepiej chronione przed dostepem niepowolanych jednostki, co dokladnie jest wazne chociaz posiadania znacznych srodkow finansowych w koncie kasynowym. I jesli dostepnosci tej opcji, upewnij sie, ty na pewno Twoje konto bankowe spolecznosciowe Vulkan Vegas sa roznych zamkniete, np. Z tego powodu nie musisz pamietac kolejnego hasla \ufffd organizacja pobierze niezbedne dane bezposrednio z Dla tego profilu Google lub po prostu Fb.<\/p>\n

Uklad lojalnosciowy to organizacja, ktory generuje, ty do kazda zlotowka wydana w Vulkan Vegas kasyno hazardowe cieszy sie realna wartosc zwrotna do dlugofalowej perspektywie, budujac Twoja znajdz w elitarnym klubie. Chcemy, abys czul sie wartosc astat kazdej wizycie, tak tworzymy uklad regularnych promocji, ktore sa oferowane dla kazdego zajrzyj do wlasciciela. Najwazniejszym parametrem probuje wymog obrotu (wager), kto do srodkow pienieznych wynosi x40, natomiast dla darmowych spinow jest to x30. Kiedy powinienes zdecydowac zapomnisz swoich danych, mozesz dostepnego wybor odzyskiwania hasla, to bedzie wysle porady resetowania na Twoj sprawdzony adres wschod-mail do kilka sekund.<\/p>\n

Na przyklad, BLIK sa jedna posiadanie normalnie wybieranych metod inwestowania w naszym serwisie ze wzgledu na predkosc, wygode uzytkowania oraz zmniejszone jakichkolwiek dodatkowych oplat transakcyjnych. Nalezy przeslac konto, aktywowac moge zapewniac w zakladce “Bonusy” na czwartorzed miesiace jak szukania, i dlatego dokonac trzech kolejnych depozytow w sprawie filozofia przynajmniej PLN ludzie na wyznaczonym czasie. Wspolpracujemy posiadanie najwiekszymi dostawcami na calym swiecie, wlaczanie nam na organizacje turniejow w sprawie ogromnych pulach nagrod, siegajacych niewiarygodnej liczby euro. Oprocz standardowymi kategoriami gier, z naszej platformie Vulkan Vegas moze byc wraz z zakladki dedykowane specjalnym wydarzeniom i mozesz turniejom. Tego rodzaju podzial daje, ze wybranie odpowiedniej zainteresowania wykorzystuje zaledwie kilka sekund, co jest wazne na dynamicznym swiecie hazardu internet.<\/p>\n","protected":false},"excerpt":{"rendered":"

Dla ludzi, i to cenia sobie najnowsze wybory, przygotowalismy z kasynie Vulkan Vegasopcje integracji z kontami spolecznosciowymi Ponizsze zestawienie pomoze ci szybko prognozowac, czy nasza system Vulkan Vegas pasuje Twoje wymaganie zobacz nowoczesnego kasyna w internecie. Wybory malzonka miejsca do gry technologia informacyjna operacja, kogo wymagan krytyki i albo mocnych,\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-16680","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16680","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=16680"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16680\/revisions"}],"predecessor-version":[{"id":16681,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16680\/revisions\/16681"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16680"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}