/* 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":134358,"date":"2026-05-25T22:25:39","date_gmt":"2026-05-25T22:25:39","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=134358"},"modified":"2026-05-25T22:25:41","modified_gmt":"2026-05-25T22:25:41","slug":"free-online-games-play-now-to-the-y8-com","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/free-online-games-play-now-to-the-y8-com\/","title":{"rendered":"Free online games Play Now to the Y8 com"},"content":{"rendered":"

An WildWinz \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03ba\u03b1\u03b6\u03af\u03bd\u03bf<\/a> informed free spins bonuses are the ones that do not need one deposit. All the free spins bonus comes with other jobs that must be done to earn it. More commonly, he is credited as the casino bonus finance that have 1x playthrough criteria, however, those people criteria is also extend up to 10x or 15x in the certain bonuses. Always check the time restrictions on the fine print you search through in the first step, and make sure to play through your free spins bonus prior to it expires.<\/p>\n

It\u2019s loaded with casino games and offers for both the new and you can knowledgeable players. An established brand in the industry, Sky Vegas shines thanks to its advanced line of casino headings to the a modern-day, user friendly platform. It has an impressive gambling library, that have headings out of best company making sure a top-quality gameplay feel.<\/p>\n

There are even Virgin Bet private headings available to players after it sign up. It will bring a modern-day approach to casino gambling to the a deck you to has up with the new tech and you can headings. Such headings also are out of best company, as well as Playtech, Pragmatic Play, Blueprint, and you can Game Worldwide, making sure the finest gambling feel. Released in the 2018, Mr Q Casino is an attractive, progressive, and you can immersive gambling platform featuring hundreds of casino headings. A huge gambling library awaits players at the Netbet Casino, where they can benefit from the latest casino game launches, popular headings, classics, and more! It has exciting bonus opportunities, enabling players so you can continually improve their gambling experience in free spins, deposit bonuses, cashback, and more.<\/p>\n

I have never seen a high count for each spin to the one free spin bonus i have ever protected (the most popular number we see is $0.ten and you can $0.20.) Occasionally, you have the option of game at the online casinos when it comes to redeeming a free spin bonus. Most often when people are looking terms such as \u201cfree spins online casinos,\u201d he is talking about real-currency options. All of these online casinos give a generous welcome package, tend to as well as free spins, to attract and you can prize the new players. He is mainly given thanks to the new player welcome bonuses, with some online casinos as well as as well as him or her in the a week promotions to have its very loyal players on the U.S. This article is your guide to an informed free spins casinos to have Can get 2026, helping you find best options for watching online slots that have free spins bonuses.<\/p>\n

It depends to the fine print of your free spins bonus. When you are no-deposit bonuses are a great way to explore the new game rather than risk, it is important to remember that gambling is to just ever be a type of entertainment. As well as the free spins no deposit bonus, you want the new casino to take some most other, normal promotions to have active players. Luckily, all the South African online casinos i protection to the Playcasino.co.za is reputed and you can checked out! For those who\u2019re also considering multiple bonuses from our list, there are some things you should know as well as the bonus criteria. That have a wide selection of sports betting options and you can casino games, Supabets is a firm favourite when our team’s looking for multiple gambling experience under one roof<\/p>\n

It\u2019s a favourite that have casinos giving free spins to the subscription or deposit bonuses, so it is a good low-risk solution to find out how the game works. Very free spins bonuses must be used in this a flat date body type, such as 24 hours or a short time after being credited. Of many free spins also offers come with a maximum win cap, meaning there is a threshold about how far you could withdraw out of one winnings produced by the advantage. Sure enough, very casino bonuses come with wagering criteria, and that specify how often bonus winnings need to be wagered prior to they’re withdrawn. Payments is flexible thanks to support to have PayPal, Visa, Credit card, or other popular features.<\/p>\n

Certain real money casino sites make an effort to capitalise to the dominance out of specific ports game by the as well as him or her in the free spins also offers. To the Ports Creature welcome bonus, you could allege 5 no deposit free spins to the exciting slot Wolf Gold by the Pragmatic Play. For those who\u2019re also rated about how of many successful spins you have made, low volatility ports work better, when you are for those who\u2019re also aiming for the new single biggest win, high volatility headings become more compatible. For instance, Bucks Arcade gives 5 no deposit free spins so you can the new players, and also provides the opportunity to win up to 150 thanks to the new Every day Wheel.<\/p>\n

\u00a30.ten for each spin to the picked game. No deposit free spins Uk is free casino spins that let you play real slot game rather than depositing your currency. Free online games are very increasingly popular as they give gamers access to a vast list of headings to the latest has\u2014all the free. Out of vintage Thumb headings so you can progressive three dimensional WebGL experience, Y8 will continue to evolve to the latest gambling tech. With over one hundred,one hundred thousand game in total and over 30,one hundred thousand progressive HTML5 and you can WebGL headings, Y8 also offers one of the biggest collections out of free online games online.<\/p>\n

This is our best lits of your free spins no deposit bonuses to have Uk players in the 2026. Very no deposit free spins also offers follow the same simple steps. In this post, you could compare our list of an informed free spins bonuses to have Uk bingo, casino & ports sites. Free spins no deposit bonuses is also offers that allow you to play real money online slots for free, before you can finance your account. The new high end of your no deposit free spins scale is also find platforms giving one hundred+ to have players so you can allege, as well as one hundred free spins no deposit, or two hundred free spins after you deposit \u00a3 ten.<\/p>\n

Very online casinos give free spin bonuses so you can the new players so you can welcome them to its platform. They’re not just a fun solution to try casino games to have free rather than tension. Find the best Free Spins bonuses to have 2026 and how to allege free spins also offers rather than risking your bank account. As the here to the free-spins.org i have a whole group out of professionals who are always in search of an informed sales to the free spins. Slot tournaments free spins is a different bonus that can be discovered in some online casinos.<\/p>\n

Rest assured that all the casino listed is fully registered so you can enjoy your spins safely and with trust. Certain spins expire quickly (24 hours is common). Stake \u00a3ten to the Casino for free spins (take on in the 48hrs + bet winnings 10x in this one week) to the picked game. Stake \u00a3ten to the Casino for free spins (take on in this 48hrs & use in three days) to the picked game. They are not necessarily related to that it list page.<\/p>\n

Iconic headings such as Book out of Dead, Gonzo\u2019s Journey and you can Starburst are commonly used in such also offers owed on their wide interest. No deposit bonuses are usually centred up to popular mobile casino games, that have ports as being the most often looked. No deposit free spins will be the most common type of give, granting players a flat amount of spins to the specific slot game picked by the casino. When you are 20 or fifty spins are all for no-deposit sales, one hundred spins will be the benchmark to have high-worth deposit also offers.<\/p>\n

Remember even if, you to free spins bonuses aren\u2019t always worth up to deposit bonuses. Our team out of pros is serious about finding the online casinos to the very best free spins bonuses. It\u2019s so easy so you can allege free spins bonuses at the most online casinos. Certain free spins is granted for making a deposit, but you\u2019ll find of many no deposit free spins also offers too.All the best casinos up to give free spins, such as the of them we recommend in this post. Our list highlights the main metrics out of free spins bonuses.<\/p>\n

Yes – very no deposit bonuses can come that have win restrictions, capping the amount you could withdraw out of winnings. No deposit bonuses are in different forms, as well as free spins to have specific slot game, bonus bucks to use to the a range of game or free play credits over time restrictions. Yes – you could win real money out of no deposit bonuses, however, specific criteria tend to apply.<\/p>\n","protected":false},"excerpt":{"rendered":"

An WildWinz \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03ba\u03b1\u03b6\u03af\u03bd\u03bf informed free spins bonuses are the ones that do not need one deposit. All the free spins bonus comes with other jobs that must be done to earn it. More commonly, he is credited as the casino bonus finance that have 1x playthrough criteria, however,\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-134358","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/134358","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=134358"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/134358\/revisions"}],"predecessor-version":[{"id":134359,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/134358\/revisions\/134359"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=134358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=134358"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=134358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}