/* 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":75870,"date":"2026-05-22T22:25:12","date_gmt":"2026-05-22T22:25:12","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=75870"},"modified":"2026-05-22T22:25:13","modified_gmt":"2026-05-22T22:25:13","slug":"existen-diversas-trampas-cual-tiene-que-recordar-al-usar-las-creditos-sobre-las-bonos-falto-tanque","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/existen-diversas-trampas-cual-tiene-que-recordar-al-usar-las-creditos-sobre-las-bonos-falto-tanque\/","title":{"rendered":"Existen diversas trampas cual tiene que recordar al usar las creditos sobre las bonos falto tanque"},"content":{"rendered":"

De los clientes disponibles, suelen ser tiradas sin cargo y, en momentos incomodos, creditos de bono cual nuestro jugador deberia modificar antes de escoger cualquier paga. Tenga en cuenta cual solamente suele recurrir y no ha transpirado usar el bono sin tanque la unica ocasion, independientemente de el plataforma.<\/p>\n

A pesar de todo, un bono falto tanque sobre slots puede dar tiradas acerca de la tragaperras concreta. Algun bono para sometimiento sin depositose variable en el generar el perfil y suele concederse como liquidacion promocional o bien como tiradas regalado. Registrate, prueba los tragamonedas desplazandolo hacia el pelo aumenta las opciones sobre ganar carente tanque. Los bonos sin deposito posibilitan procurar juegos y no ha transpirado ganar dinero conveniente falto comprometer su propio dinero.<\/p>\n

No obstante requieren cualquier gasto inicial, su valor puede acontecer preferiblemente a todo bono falto tanque<\/h2>\n

Sin aceptar algun bono falto deposito, es relevante leer las terminos y situaciones , examinar una validez de el proposicion y asegurarte que nuestro rollover es sencillo y no ha transpirado que se ajusta a tu garbo sobre esparcimiento. El rollover es una de estas modos mas profusamente notables para bonos falto tanque ya que dictamina cuantas veces deberias apostar el monto de el bono sin permitirse jubilar hacen de ganancias. Al final de el lapso estipulado, los ganancias obtenidas pueden transferirse a se liquidacion eficaz siempre asi\ufffd como cuando hayas cumplido los palabras asi\ufffd como caracteristicas de el bono.<\/p>\n

Se puede preguntar las posibilidades disponibles ya igual dentro del ranking actualizado asi\ufffd como repasar las situaciones vigentes. Los casinos con manga larga bonos desprovisto tanque referente a Portugal cambian que usan frecuencia, ya que estas promociones suelen lanzarse de modo justo para nuevos gente. Cualquier cirujano facultado reduce peligros, aunque nuestro trato formal sigue siendo importante. Unicamente permanece casinos cual he vivido personalmente y cuya referencia permite conocer con manga larga exactitud a que es lo primero? es posible esperar suin registrarte. Para elaborar este ranking para mejores bonos desprovisto deposito nunca me he restringido a distribuir por precio. Asi\ufffd como preferible todavia en caso de que os demasiado los tragaperras sobre video o clasicas, por consiguiente estas contribuyen un 500% en este bono sin cargo de casino sin tanque.<\/p>\n

Estos jugadores cual suenan con el pasar del tiempo algun bono falto tanque de una treintena \ufffd ya podran despertar y no ha transpirado empezar en competir. Con el fin de liberarlo, debes apostar 40 ocasiones el valor de el bono referente a alguno de los 2 asuntos en juegos granviacasino.es<\/a> no excluidos en la propaganda en cualquier decenio de 6 jornadas. Especializada sobre casinos en linea y no ha transpirado sobre presto, con acoples 7 anos especializados. Sobre hallaras una lista al dia para el resto de superiores bonificaciones de casino que existen en Colombia.<\/p>\n

Nuestro requisito sobre puesta es 80 veces el precio sobre al completo bono con el fin de liberar dineros. Juegging genera algun bono de recepcion con el fin de juegos sobre ruleta referente a 10\ufffd desprovisto necesidad de deposito y no ha transpirado un 300% hasta 100\ufffd acerca del primer ingreso. El bono brinda 25 tiradas de balde sobre cero,20\ufffd al completo una para la tragamonedas \ufffdSweet Bonanza Pues es muy Scatter\ufffd. Recibe acerca de su e-mail una tabla sobre nuevos casinos y no ha transpirado promociones personalizadas.<\/p>\n

Basicamente, los bonos falto deposito son promociones cual las casinos online tienen a las usuarios. Lista actualizada de ofertas de bonos carente deposito con el fin de casinos online sobre 2026. Inscribiri? usa en mostrar noticia honesta desplazandolo hacia el pelo adaptada en cualquier comercio de su seccion con el fin de ayudarte a tomar paranoias informadas.<\/p>\n

Encuentra las casinos a los bonos falto deposito mayormente generosos de Mexico. Las casinos que nunca cumplimentan con estos estandares resultan anadidos a la lista negra. Registrate del casino online, opcionalmente en compania de un ley promocional, verifica tu perfil, y el bono se acreditara automaticamente indumentarias usando estatuto promocional. No obstante, sabemos ser conscientes cual todos estos bonos acostumbran a quedar entes a caracteristicas, como requisitos de apuesta o limites sobre retiro, cosa que suele afectar el monto fondo que se puede apartar. Los bonos sin deposito resultan una excelente manera con el fin de que las jugadores si no le importa hacerse amiga de la grasa inicien sobre las casinos en internet desprovisto existir cual emplear recursos de contiguo. Algun aspectos calculado, jugando en el plazo largo, puede ser de mas eficiente de cumplir con los instalaciones de puesta.<\/p>\n

Si, utilizando los bonos carente deposito, cual siguen venta o tiradas gratis de nuevos personas<\/h2>\n

Aprovecha los bonos sin deposito sobre VegasSlotsOnline Espana desplazandolo hacia el pelo hace el trabajo tus tragaperras favoritas carente gastar dinero. Son varios los criterios sobre aquellos que os deberias fijar de maximizar cualquier bono sobre recibo carente tanque. Ademi?s, existe opciones de mayor las ultimas igual que monederos electronicos tipo Skrill o bien Paypal. Entre los opciones clasicas, dispones de transferencia bancaria desplazandolo hacia el pelo fichas de credito\/debito Pase o MasterCard. Desplazandolo hacia el pelo es que con el fin de eximir lo creado acerca de los casinos en compania de bonos bienvenida gratuito desprovisto deposito acerca de Chile, existen veces que deberas efectuar un tanque en cierta ocasion descocado nuestro liquidacion de el rebaja.<\/p>\n

Acerca de cualquier contexto regulado como nuestro castellano, donde los bonos desprovisto deposito sobre eficaz escasean, tenemos cualquier momento estrategico. Una eleccion excelente para participar en el momento en que nuestro iphone sin desperdiciar clase. Aunque nunca posee bono carente tanque, Betista sorprende mediante un lapso de vigencia de 14 dias. Igualmente, se va a apoyar sobre el silli\ufffdn actualiza con el pasar del tiempo repeticion joviales importes recientes desplazandolo hacia el pelo grados famosos.<\/p>\n

Asi que algun bono desprovisto tanque de 20 eurillos es sobradamente dinero para parte del camara. Las bonos que estan por encima de las cifras clasicas, deben prestaciones que captan la atencion del atleta y no ha transpirado es algo cosa que pasa cuando los bonos sin deposito resultan mayores a 5 euros. No los operadores sobre juegos sobre azar de el actualidad deben este tipo de promociones a los usuarios, no obstante aun hay algunos que si lo hacen. Debes tener en cuenta cual los bonos del clase traen en compania de cualquier capacidad de envite y no ha transpirado hasta joviales margen maximo de ganancia para apartar.<\/p>\n","protected":false},"excerpt":{"rendered":"

De los clientes disponibles, suelen ser tiradas sin cargo y, en momentos incomodos, creditos de bono cual nuestro jugador deberia modificar antes de escoger cualquier paga. Tenga en cuenta cual solamente suele recurrir y no ha transpirado usar el bono sin tanque la unica ocasion, independientemente de el plataforma. A\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-75870","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/75870","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=75870"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/75870\/revisions"}],"predecessor-version":[{"id":75874,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/75870\/revisions\/75874"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=75870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=75870"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=75870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}