/* 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":22183,"date":"2026-05-14T18:16:58","date_gmt":"2026-05-14T18:16:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=22183"},"modified":"2026-05-14T18:16:59","modified_gmt":"2026-05-14T18:16:59","slug":"seitdem-ankommen-immer-wieder-neue-online-casinos-hinzu-ferner-prazise-eigenen-plansoll-diese-flugel-dediziert-werden","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/seitdem-ankommen-immer-wieder-neue-online-casinos-hinzu-ferner-prazise-eigenen-plansoll-diese-flugel-dediziert-werden\/","title":{"rendered":"Seitdem ankommen immer wieder neue Online Casinos hinzu ferner prazise eigenen plansoll diese Flugel dediziert werden"},"content":{"rendered":"

Innovative Verbunden Casinos 2025<\/h2>\n

Seit Zentrum das Neunziger Jahre gibt eres selbige Moglich Casinos nun einen tick, welches war langer, amyotrophic lateral sclerosis das gros Personen Zugriff hinten internetfahigen Computern hatten ferner auf jeden fall langer, amyotrophic lateral sclerosis ein gro?teil Personen die schnelle Internetleitung zum Flatrate-Preis haben.<\/p>\n

Wette within Angeschlossen Casinos gibt beste Gedankenaustausch, auch via mark Cell phone. rockbet casino Bonus ohne Einzahlung<\/a> Neue Online Casinos handhaben Enthusiasmus unter anderem unsereiner freude empfinden die autoren Jedem innovative Spiele weiters ebendiese besten Kasino Boni glauben zu im griff haben.<\/p>\n

Unsere neuen Angeschlossen Casinos 2025<\/h2>\n

Topliste ihr frischen Angeschlossen Casinos. Abschlie?end 2022 uberarbeitet. Die Verbunden Casinos abzuglich Anmeldung & Anmeldung finden sie auf diese neuesten Verkettete liste anhand Web-adresse.<\/p>\n

Perfekte Dir conical buoy three breite Boni! Dicker Provision pro unser ersten 4 Einzahlungen Nun Flugzeugabsturz Video games musizieren Solange bis dahinter 4000\ufffd + three hundred FS Bis zu 4000\ufffd Pramie 3 hundred Free Spins Arg etliche Spiele! Neuer Provider 250% Vermittlungsprovision beschutzen! Woge Spieleauswahl Erheblich guter Vermittlungsgebuhr! 200% so weit wie 1000$ 3000\ufffd Bonuspaket + 309 Freispiele Umfangreiches Pramie Applikation Interessante Spielauswahl Geiles Entwurf Neues Spielbank nueve Freispiele via Bonuscode CTORS13 – 200% Vermittlungsgebuhr bis \ufffd 300 +000 Freispiele Gutes Alive Spielbank Interessante Spielauswahl gro?zugiger Bonus 1000\ufffd Willkommenspaket – 125% Maklercourtage Esport Auf etwas setzen Sportwetten & Casino one hundred thousand% Vermittlungsgebuhr solange bis three hundred\ufffd wenn tgl. 15% Cashback Actuel Handy Spielo Umfangreiche Spielauswahl 350\ufffd Bonuspaket + 100000 Freispiele fur jedes unser ersten four Einzahlungen esport Zocken Einfache Auszahlungen Gar keine Iphone app unvermeidlich three Willkommensboni zur Auswahl Traktandum Vermittlungsprovision Programm Schnelle Gutschriften 250\ufffd Bonus + two hundred fifity Freispiele Journal towards Dead Solide Boni Bekannte personlichkeit Club & 4000 + Spiele one hundred thousand% Provision solange bis \ufffd309 Rasche Gutschriften Enorme Spielauswahl Einfache Auszahlung 900 Euro Bonuspaket + 275 Freispiele Reichlich 3.400 Spielsalon Spiele zuganglich Blitzschnelle Auszahlungen binnen 4 Minuten liefert \ufffd4,one hundred Paket (225% Bonus) + two hundred fifity Freispiele Krypto Spielsaal 7000 Casinospiele Einfache Zahlungen 160\ufffd & 160 Freispiele + taglich Cashback bis zu 22% Beruhmtheit Sender 10% Cashback pro tag Schnelle Auszahlungen Empfehlung two hundred and fifty% Provision bis 200\ufffd & tagliches 9% Cashback two hundred fifity% Vermittlungsgebuhr Pro tag 8% Cashback Rasche Auszahlungen one hundred thousand% solange bis \ufffd550 Vermittlungsgebuhr ferner hundred Freispiele Geiles Provision Programm Enorme Spielauswahl Real time Kasino 3500\ufffd Bonuspaket ferner two hundred fifity Spins Freispiele blo? Einzahlung Interessante Spielauswahl Zahle 12\ufffd ein & spiele qua 40\ufffd oder one hundred% Vermittlungsgebuhr solange bis 140\ufffd. Drehstange Spielauswahl Besondere Spielothek \ufffd250 Vermittlungsgebuhr +10% Cashback blo? Umsatzbedingungen! Wildes Bonus Sender Einfache Gutschriften Gute Spielauswahl 2 Vermittlungsprovision Pakete zu handen Neukunden 600\ufffd & hundred Spins Bonuspaket Tolles Spielerelebnis Gutes Bonusprogramm 8 unterschiedliche Boni! Tagesordnungspunkt Pramie Applikation 9 Boni Top Spielauswahl 3 hundred\ufffd Vermittlungsprovision + 155 Freispiele 5000+ Spiele Contemporain Funkfernsprecher Spielo Einfache Auszahlungen 200% Pramie bis 500\ufffd + 10% Cashback pro tag taglicher Cashback schnelle Auszahlungen Umfangreiche Spielauswahl Etliche laden<\/p>\n

Ebendiese besten frischen Erreichbar Casinos je Die kunden!<\/h2>\n

Seitdem Zentrum das Neunziger Jahre gibt eres nachfolgende besten Gangbar Casinos heute irgendwas, das war langer, amyotrophic lateral sclerosis die mehrheit Leute Zugang dahinter internetfahigen Computern haben unter anderem gewiss langer, wie das gros Menschen die einfache Internetleitung zum Flatrate-Abgabe baden in. Seitdem besuchen standig andere Angeschlossen Spielos hinzu oder genau diesen plansoll ein Vademecum speziell ci\ufffd”?ur.<\/p>\n

Unsereins sehen nochmal unsrige 2 Favoriten besitzen wir hier je Sie nochmal bei Abmachung inszeniert. Dass beherrschen Diese aufwarts dem Ausblick gegenuberstellen weiters diese besten den neuesten Online Casinos z. hd. Die kunden ich fundig werden. Ubrigens: 5 vor 12 andienen via kraut Erlaubnisschein dasjenige JackpotPiraten Spielcasino und unser BingBong Spielcasino. Ein weitere Neuankommling war dasjenige PlayBoom Kasino.<\/p>\n

Hier verzeichnen wir Jedem ohne ausnahme ebendiese besten ihr den neuesten deutschen Moglich Casinos pro welches Musizieren unter einsatz von echtem Bimbes, die wir unseren umfassenden Moglich Spielbank Bewertungen unterzogen sehen. Welche konnen umherwandern dabei naturlich darauf verlassen, auf diese weise wir Jedermann keine Gurken aufschw zen, statt dessen Ihnen an dieser stelle ungeachtet neue Online Casinos vorstellen, nachfolgende es bei Die Untertanentreue & Humorlosigkeit auch verdient besitzen, dass Die kunden darauf diesseitigen Blick schmei?en.<\/p>\n\n\n
Moglich Spielothek<\/th>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"

Innovative Verbunden Casinos 2025 Seit Zentrum das Neunziger Jahre gibt eres selbige Moglich Casinos nun einen tick, welches war langer, amyotrophic lateral sclerosis das gros Personen Zugriff hinten internetfahigen Computern hatten ferner auf jeden fall langer, amyotrophic lateral sclerosis ein gro?teil Personen die schnelle Internetleitung zum Flatrate-Preis haben. Wette within\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-22183","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22183","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=22183"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22183\/revisions"}],"predecessor-version":[{"id":22184,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22183\/revisions\/22184"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=22183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=22183"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=22183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}